View Single Post
  #7 (permalink)  
Old March 27th, 2002
James Connolly James Connolly is offline
Devotee
 
Join Date: January 18th, 2002
Posts: 22
James Connolly is flying high
Default

People should be directed towards contributing to an existing client as opposed to reinventing the wheel. However, there are reasons to start a new program as well. For example, I am writing a Gnutella server/client in C language, although I know little about C programming. Even if there was an existing, robust C client, my knowledge of C is so little that I would not want to contribute schlocky code to someone's project. I am killing two birds with one stone - I am writing a Gnutella servent, and learning C language more fully at the same time.

To further burden myself, I am trying to avoid looking at other people's programs, Gnutella or otherwise, so that I can learn how to do this by myself as opposed to just copying someone else's program and just modifying it. That way I learn better. In some cases, looking at other people's programs has become unavoidable when I hit a brick wall, specifically in dealing with -

STREAMS - sockets and file I/O
big-endian/little-endian issues
The Gnutella protocol

I have even copied some of the socket stuff line for line, but I am going to re-write those functions myself in the future.

If I was a code wizard I would probably check out all the existing projects and choose one to contribute to, but I will not be doing that until I become a better programmer. I have found bugs in other people's programs and notified them of them, and the developer's have fixed those problems. I have some ideas about the direction of Gnutella and P2P, but I think the direction set should mainly rest with the developers whose clients are most popular, and that their priorities like Ultrapeering and ping/pong caching will be my priorities once my client/server matches the initial spec.

Here is the <a href=http://www.geocities.com/gnutizen>web page</a> of my server/client, Gnutizen.
Reply With Quote