Client source - Questions

I just downloaded the Electric Sheep client source code for MacOS X. Is there any reason why there are three separate source trees, rather than one with the necessary 'ifdef's for each platform? Does this not make it harder to keep the platforms in sync?

Is there any dev documention in the Wiki (I couldn't see any)?

As to the Mac side, does the following build process sound right:

  • download from SVN:
  • svn co https://electricsheep.svn.sourceforge.net/svnroot/electricsheep/trunk/client_osx/ electricsheep-client-osx

  • add missing libraries ( libpng, libjpeg, flam3 )
  • build with XCode
  • Thank you for your interest

    Thank you for your interest in the code. The reason for separate code bases is primarily historical: the people who so kindly wrote the clients chose to do it that way for their own, unknown reasons. I was happy for their contributions. One reason it's not so easy to just ifdef it is that each platform has its own native language: C, C++, and Objective-C. The new (2.7 beta) windows client is intended to be portable (note its directory in the tree is "client_generic"), and it does run on Linux. We'll be happy to work with you to make it fully cross-platform, or just to bring the current Mac code up to date.

    I am not a strong C/C+

    I am not a strong C/C+ developer, so I am not sure how much there is I can do. One thing I have opted to do is start up a page in the Wiki to document how to get a build the source:

    http://electricsheep.wikispaces.com/Development

    It is very much a stub at the moment, but hopefully this should act as a spring-board for anyone who wishes to add to it. One thing that would be interesting to add is a diagram illustrating the functional areas. Based on what I have read, but not having looked at the source code, I imagine there is:
    - renderer
    - screen saver
    - torrent peer