PDA

View Full Version : Maintaining multiple code bases




wrldwzrd89
Apr 4, 2008, 10:25 AM
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.



Zortrium
Apr 4, 2008, 10:46 AM
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.

lee1210
Apr 4, 2008, 10:46 AM
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

Zortrium
Apr 4, 2008, 10:51 AM
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.

wrldwzrd89
Apr 4, 2008, 11:53 AM
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.
Excellent advice - thanks, guys. :)