[freenet-dev] A microblogging and/or real-time chat system of GSOC

2010-03-30 Thread Evan Daniel
I suggest you think of it more like Twitter than IRC.  I believe that
Twitter is a more natural match to the sort of protocol you need to
use over Freenet.  So, when you say something, anyone who is following
you can see it.  So can anyone who searches for any hashtags you used.

You seem to have some misconceptions about how Freenet works.  Have
you installed Freenet and started using it yet?  I also highly
recommend you read some of the papers about Freenet and look around
the wiki a bit.  And ask questions if it's not clear!  In short, there
are two operations that the network supports: insert and fetch.
Insert takes some data, and a key that will refer to it, and sends the
data out onto the network.  It is passed from node to node, and routed
toward nodes with a location dependent on the key.  Nodes along the
route keep a copy of it.  Fetching is similar: the fetch request takes
a key, and the request is routed toward nodes with nearby locations,
until a node is found that has a copy of the data (because it was also
part of the insert path, or part of a previous successful fetch path).
 The data is then sent back to the requester, and nodes along the path
keep a copy.  The data isn't stored on the inserter's computer; it's
stored on other computers on the network.

For a microblogging app, each post will be inserted into the network,
and anyone following you will fetch your posts.  If you go offline, it
doesn't matter: your posts are already inserted into the network, and
therefore available for anyone to fetch.  If your followers go
offline, then they can just fetch your posts when they return.

And you're right that p2p makes messaging somewhat awkward.  But, if
there's a central server, then you're dependent on them.  If they
decide to censor you, there's nothing you can do.  So, I don't see an
alternative that would meet Freenet's goals.  However, I don't think
it's as awkward as seem to think: the insert and fetch operations
provided by Freenet, while somewhat awkward to use, are actually very
powerful.  Having the data persist in the cloud (mostly) independent
of which computers are online is quite powerful.

I'm not terribly familiar with UI technologies, so I can't say what's
a good or bad idea for that, really.  You should plan to have your
program be a plugin for fred; I suggest you take a look at other
plugins to get an idea for what that means.

Evan Daniel

On Tue, Mar 30, 2010 at 10:14 AM, ???  wrote:
> Hi,
>
> Thank you for telling me so many things about the microblogging. I do not
> really sure whether I have understand all the things. I think what you mean
> is that the system is similar as chat room. If I input something, everyone
> who is my friend should see the comment and I can also chat with some one I
> want to. If I understand it correct, I think use JAVA RMI or Web Service may
> be a easy way to complete it. But I have?three questions. First, if I need
> to embedd this system into the Freenet, I think it is very different as web
> application. I should use Swing instead of JSP, JSTL and CSS to complete the
> UI. Second, as it is a whole P2P system, it will work well when everyone is
> on line. But if I am off line, others cannot receive my provious comments.
> Third, if my friend off line, do I need to store my comments in my computer
> and send it when they on line? All the question is around the P2P method
> because I have no server to store the messages. I think P2P is not a good
> way to do message publish and menegement. Can you provide some hint about
> how to deal with these problem.
>
> Thank you for helping me.
>
> Sincerely,
>
> Tianyi Chen
>
>
>
>
>
> On Fri, Mar 26, 2010 at 2:28 PM, ???  wrote:
>> Hi,
>>
>> I am interested in A microblogging and/or real-time chat system of GSOC
>> and
>> the description said that a fair amount of work on how to efficiently
>> implement microblogging over Freenet have been done. I am wordering that
>> if
>> I want to join this project, I should build a independent use any
>> technology
>> and framework I want such as Struts + Spring + Hibernate or I should
>> embedded the microblogging in to the Freenet code as the whole system. And
>> I
>> think Freenet have had strong ability in file distribute so that add
>> real-time chat system is really easy for you because you only need to
>> connect others by knowing their IP address. Could give me a short
>> description about what is the objective of this project and what kind of
>> technology you really want? I am now builiding by own SNS website by using
>> Struts + Spring + Hibernate and Ajax and have some experience about file
>> download software with multithreading control. Could you tell me what is
>> the
>> most different between this project and my provious projects?
>>
>> By the way, do I need to design the entity, relationship and attribute for
>> database by meself? What database you use? (I have MySQL and Oracle 10g
>> experience)?
>
> I'll let someone else speak to the gsoc i

[freenet-dev] A microblogging and/or real-time chat system of GSOC

2010-03-30 Thread 陈天一
Hi,

Thank you for telling me so many things about the microblogging. I do not
really sure whether I have understand all the things. I think what you mean
is that the system is similar as chat room. If I input something, everyone
who is my friend should see the comment and I can also chat with some one I
want to. If I understand it correct, I think use JAVA RMI or Web Service may
be a easy way to complete it. But I have three questions. First, if I need
to embedd this system into the Freenet, I think it is very different as web
application. I should use Swing instead of JSP, JSTL and CSS to complete the
UI. Second, as it is a whole P2P system, it will work well when everyone is
on line. But if I am off line, others cannot receive my provious comments.
Third, if my friend off line, do I need to store my comments in my computer
and send it when they on line? All the question is around the P2P method
because I have no server to store the messages. I think P2P is not a good
way to do message publish and menegement. Can you provide some hint about
how to deal with these problem.

Thank you for helping me.

Sincerely,

Tianyi Chen





On Fri, Mar 26, 2010 at 2:28 PM, ???  wrote:
> Hi,
>
> I am interested in A microblogging and/or real-time chat system of GSOC
and
> the description said that a fair amount of work on how to efficiently
> implement microblogging over Freenet have been done. I am wordering that
if
> I want to join this project, I should build a independent use any
technology
> and framework I want such as Struts + Spring + Hibernate or I should
> embedded the microblogging in to the Freenet code as the whole system. And
I
> think Freenet have had strong ability in file distribute so that add
> real-time chat system is really easy for you because you only need to
> connect others by knowing their IP address. Could give me a short
> description about what is the objective of this project and what kind of
> technology you really want? I am now builiding by own SNS website by using
> Struts + Spring + Hibernate and Ajax and have some experience about file
> download software with multithreading control. Could you tell me what is
the
> most different between this project and my provious projects?
>
> By the way, do I need to design the entity, relationship and attribute for
> database by meself? What database you use? (I have MySQL and Oracle 10g
> experience)?

I'll let someone else speak to the gsoc issues; here's a brief summary
of the technical problems.

The first thing to realize about any sort of microblogging or chat
application on Freenet is that it will be *very* different from a
normal web app on the back end.  (The UI end can and should be as
similar as possible, though.)  First, there is no central server to
talk to.  It's *completely* peer to peer.  Second, there's a spam
problem: globally writable namespaces don't work.  And third, the raw
operations Freenet provides (insert and fetch, but not update or
directory listing equivalents) are somewhat awkward to work with.

The combination of these is why I thought microblogging might be a
better model than IRC for real time communication over Freenet.  Each
user publishes messages in an outbox, and polls the outboxes of users
they wish to follow.  That, a UI, and integration into the web of
trust plugin (to provide a list of other non-spammer users) can
provide the very basics of microblogging.  After that, the important
optimizations include ways to discover new messages faster than
polling everything, and ways to search hashtags and usernames and such
efficiently.  That's where things get both interesting and hard.

Freenet latency is high: expect 5-10 seconds one way, with modest
changes to Freenet.  Even though you could build either chat or
microblogging on the same underlying framework, calling it
microblogging does a better job of setting user expectations.

I put some thought into what the protocol should look like with a goal
of optimizing speed and searchability.  I wrote some test code, but
nothing of any significance.  You can find my thoughts on the protocol
on Freenet:
freenet:USK at cF9ctaSzA8w2JAfEqmIlN49tfrPdz2Q5M68m1m5r9W0
,NQiPGX7tNcaXVRXljGJnFlKhnf0eozNQsb~NwmBAJ4k,AQACAAE/Fritter-site/2/

When writing a gsoc proposal, give some thought to what parts of the
problem you want to tackle.  It sounds like your experience and
interests lie more in the direction of user interfaces.  If that's
correct, my suggestion would be to make that the focus of your
proposal.  For example, you could ignore the problems of protocol
design (by using my proposal, for example -- I'm sure it could be
improved, but it's probably good enough) and searching (by simply not
implementing any).  IMHO a well-written, easy to use interface is more
important than hard features like search.  Search support could be
added later, once it has users.

Evan Daniel
-- next part --
An HTML attachment was scrubbed...
URL: 


Re: [freenet-dev] A microblogging and/or real-time chat system of GSOC

2010-03-30 Thread Evan Daniel
I suggest you think of it more like Twitter than IRC.  I believe that
Twitter is a more natural match to the sort of protocol you need to
use over Freenet.  So, when you say something, anyone who is following
you can see it.  So can anyone who searches for any hashtags you used.

You seem to have some misconceptions about how Freenet works.  Have
you installed Freenet and started using it yet?  I also highly
recommend you read some of the papers about Freenet and look around
the wiki a bit.  And ask questions if it's not clear!  In short, there
are two operations that the network supports: insert and fetch.
Insert takes some data, and a key that will refer to it, and sends the
data out onto the network.  It is passed from node to node, and routed
toward nodes with a location dependent on the key.  Nodes along the
route keep a copy of it.  Fetching is similar: the fetch request takes
a key, and the request is routed toward nodes with nearby locations,
until a node is found that has a copy of the data (because it was also
part of the insert path, or part of a previous successful fetch path).
 The data is then sent back to the requester, and nodes along the path
keep a copy.  The data isn't stored on the inserter's computer; it's
stored on other computers on the network.

For a microblogging app, each post will be inserted into the network,
and anyone following you will fetch your posts.  If you go offline, it
doesn't matter: your posts are already inserted into the network, and
therefore available for anyone to fetch.  If your followers go
offline, then they can just fetch your posts when they return.

And you're right that p2p makes messaging somewhat awkward.  But, if
there's a central server, then you're dependent on them.  If they
decide to censor you, there's nothing you can do.  So, I don't see an
alternative that would meet Freenet's goals.  However, I don't think
it's as awkward as seem to think: the insert and fetch operations
provided by Freenet, while somewhat awkward to use, are actually very
powerful.  Having the data persist in the cloud (mostly) independent
of which computers are online is quite powerful.

I'm not terribly familiar with UI technologies, so I can't say what's
a good or bad idea for that, really.  You should plan to have your
program be a plugin for fred; I suggest you take a look at other
plugins to get an idea for what that means.

Evan Daniel

On Tue, Mar 30, 2010 at 10:14 AM, 陈天一  wrote:
> Hi,
>
> Thank you for telling me so many things about the microblogging. I do not
> really sure whether I have understand all the things. I think what you mean
> is that the system is similar as chat room. If I input something, everyone
> who is my friend should see the comment and I can also chat with some one I
> want to. If I understand it correct, I think use JAVA RMI or Web Service may
> be a easy way to complete it. But I have three questions. First, if I need
> to embedd this system into the Freenet, I think it is very different as web
> application. I should use Swing instead of JSP, JSTL and CSS to complete the
> UI. Second, as it is a whole P2P system, it will work well when everyone is
> on line. But if I am off line, others cannot receive my provious comments.
> Third, if my friend off line, do I need to store my comments in my computer
> and send it when they on line? All the question is around the P2P method
> because I have no server to store the messages. I think P2P is not a good
> way to do message publish and menegement. Can you provide some hint about
> how to deal with these problem.
>
> Thank you for helping me.
>
> Sincerely,
>
> Tianyi Chen
>
>
>
>
>
> On Fri, Mar 26, 2010 at 2:28 PM, ???  wrote:
>> Hi,
>>
>> I am interested in A microblogging and/or real-time chat system of GSOC
>> and
>> the description said that a fair amount of work on how to efficiently
>> implement microblogging over Freenet have been done. I am wordering that
>> if
>> I want to join this project, I should build a independent use any
>> technology
>> and framework I want such as Struts + Spring + Hibernate or I should
>> embedded the microblogging in to the Freenet code as the whole system. And
>> I
>> think Freenet have had strong ability in file distribute so that add
>> real-time chat system is really easy for you because you only need to
>> connect others by knowing their IP address. Could give me a short
>> description about what is the objective of this project and what kind of
>> technology you really want? I am now builiding by own SNS website by using
>> Struts + Spring + Hibernate and Ajax and have some experience about file
>> download software with multithreading control. Could you tell me what is
>> the
>> most different between this project and my provious projects?
>>
>> By the way, do I need to design the entity, relationship and attribute for
>> database by meself? What database you use? (I have MySQL and Oracle 10g
>> experience)?
>
> I'll let someone else speak to the gsoc i

[freenet-dev] A microblogging and/or real-time chat system of GSOC

2010-03-30 Thread 陈天一
Hi,

Thank you for telling me so many things about the microblogging. I do not
really sure whether I have understand all the things. I think what you mean
is that the system is similar as chat room. If I input something, everyone
who is my friend should see the comment and I can also chat with some one I
want to. If I understand it correct, I think use JAVA RMI or Web Service may
be a easy way to complete it. But I have three questions. First, if I need
to embedd this system into the Freenet, I think it is very different as web
application. I should use Swing instead of JSP, JSTL and CSS to complete the
UI. Second, as it is a whole P2P system, it will work well when everyone is
on line. But if I am off line, others cannot receive my provious comments.
Third, if my friend off line, do I need to store my comments in my computer
and send it when they on line? All the question is around the P2P method
because I have no server to store the messages. I think P2P is not a good
way to do message publish and menegement. Can you provide some hint about
how to deal with these problem.

Thank you for helping me.

Sincerely,

Tianyi Chen





On Fri, Mar 26, 2010 at 2:28 PM, ???  wrote:
> Hi,
>
> I am interested in A microblogging and/or real-time chat system of GSOC
and
> the description said that a fair amount of work on how to efficiently
> implement microblogging over Freenet have been done. I am wordering that
if
> I want to join this project, I should build a independent use any
technology
> and framework I want such as Struts + Spring + Hibernate or I should
> embedded the microblogging in to the Freenet code as the whole system. And
I
> think Freenet have had strong ability in file distribute so that add
> real-time chat system is really easy for you because you only need to
> connect others by knowing their IP address. Could give me a short
> description about what is the objective of this project and what kind of
> technology you really want? I am now builiding by own SNS website by using
> Struts + Spring + Hibernate and Ajax and have some experience about file
> download software with multithreading control. Could you tell me what is
the
> most different between this project and my provious projects?
>
> By the way, do I need to design the entity, relationship and attribute for
> database by meself? What database you use? (I have MySQL and Oracle 10g
> experience)?

I'll let someone else speak to the gsoc issues; here's a brief summary
of the technical problems.

The first thing to realize about any sort of microblogging or chat
application on Freenet is that it will be *very* different from a
normal web app on the back end.  (The UI end can and should be as
similar as possible, though.)  First, there is no central server to
talk to.  It's *completely* peer to peer.  Second, there's a spam
problem: globally writable namespaces don't work.  And third, the raw
operations Freenet provides (insert and fetch, but not update or
directory listing equivalents) are somewhat awkward to work with.

The combination of these is why I thought microblogging might be a
better model than IRC for real time communication over Freenet.  Each
user publishes messages in an outbox, and polls the outboxes of users
they wish to follow.  That, a UI, and integration into the web of
trust plugin (to provide a list of other non-spammer users) can
provide the very basics of microblogging.  After that, the important
optimizations include ways to discover new messages faster than
polling everything, and ways to search hashtags and usernames and such
efficiently.  That's where things get both interesting and hard.

Freenet latency is high: expect 5-10 seconds one way, with modest
changes to Freenet.  Even though you could build either chat or
microblogging on the same underlying framework, calling it
microblogging does a better job of setting user expectations.

I put some thought into what the protocol should look like with a goal
of optimizing speed and searchability.  I wrote some test code, but
nothing of any significance.  You can find my thoughts on the protocol
on Freenet:
freenet:u...@cf9ctasza8w2jafeqmiln49tfrpdz2q5m68m1m5r9w0
,NQiPGX7tNcaXVRXljGJnFlKhnf0eozNQsb~NwmBAJ4k,AQACAAE/Fritter-site/2/

When writing a gsoc proposal, give some thought to what parts of the
problem you want to tackle.  It sounds like your experience and
interests lie more in the direction of user interfaces.  If that's
correct, my suggestion would be to make that the focus of your
proposal.  For example, you could ignore the problems of protocol
design (by using my proposal, for example -- I'm sure it could be
improved, but it's probably good enough) and searching (by simply not
implementing any).  IMHO a well-written, easy to use interface is more
important than hard features like search.  Search support could be
added later, once it has users.

Evan Daniel
___
Devl mailing list
Devl@freenetproject.org
http://ospr