Maintaining multiple code bases

Discussion in 'Mac Programming' started by wrldwzrd89, Apr 4, 2008.

  1. macrumors G4

    wrldwzrd89

    Joined:
    Jun 6, 2003
    Location:
    Solon, OH
    #1
    After doing some searching, and getting opinions from various people familiar with what I'm trying to do, I've come to the conclusion that the only satisfactory solution is going to be developing completely separate code bases in 3 different programming languages, for 3 different platforms - Mac OS X, Windows, and Linux. I know that this is going to be a royal pain to manage. Additionally, I am the only developer right now, so I'm really going to have my work cut out for me.

    Any tips anyone has on orchestrating such an effort? I'm open to all suggestions - even those that involve me not working alone.

    Note to the curious: I didn't mention exactly what I'm programming because I realized that I'm going to have to use this solution for ALL future applications I create, regardless of what kind they are. My past applications were written in Java - but that simply doesn't meet my needs anymore.
     
  2. macrumors 6502

    Joined:
    Jun 23, 2003
    #2
    Assuming that lots of the files will be common to every platform, I think part of what you're trying to do can be done without too much hassle by clever use of copies and branches in Subversion to create multiple distinct "projects" that reference many of the same files. Take a look at the Subversion documentation book at http://svnbook.red-bean.com/en/1.4/svn-book.html, with particular attention to the section on vendor branches. I think that'll give you some idea of how you could go about this.

    On the actual development side, now quite sure what to recommend - coding stuff in 3 different languages is just that, and I don't think there's really any good shortcut.
     
  3. macrumors 68040

    lee1210

    Joined:
    Jan 10, 2005
    Location:
    Dallas, TX
    #3
    As you said, there is no mention in your post of what you are working on. What I would try to do if i were you is break the project into components. For the GUI, you're probably stuck with platform-specific APIs (wxWidgets or something else that's cross-platform might work for you, but it doesn't sound like it in this case).

    For the back-end logic, however, you should be able to only write this once. I would try to write it in something generic as possible (C, probably. Java, perhaps, since you're comfortable with it, but JNI is a pain in the ass so that might not be viable) and stick it into a library that can be used by all of the platforms. That way the real grunt work is the same on all the platforms.

    I wouldn't say implementing the business logic 3 times is the best way to go. Do the specific coding you have to do (hopefully GUI only), but try to break out the "generic" parts and only do them once. This will make debugging much easier, and should save you time.

    -Lee
     
  4. macrumors 6502

    Joined:
    Jun 23, 2003
    #4
    I'd also second Lee's suggestion of breaking as much common functionality as you can out into something like a library that you can then plug into the three separate pieces. I'd probably work on finishing the backend stuff and getting it to work with only a single front-end - then, when that was working, I'd get the other two front-ends working.
     
  5. thread starter macrumors G4

    wrldwzrd89

    Joined:
    Jun 6, 2003
    Location:
    Solon, OH
    #5
    Excellent advice - thanks, guys. :)
     

Share This Page