Open Sourcing Windows Based Project
metasynth asks: "The company I work for has developed a timer system in Delphi for Windows machines. I'm currently trying to convince my boss to open source it as the program is to be used to help develop a community around it. I'm looking for good arguments to open source the system, and details (or links to details) of how to go about it. What type of license should we use to allow us to keep reasonable control over the project, e.g. a license where anyone can download and work on the code and distribute it as much as they want, but have them send us back the modifications that they have done for us to decide whether or not to include them in the offical release. One other question is: What sort of interest is there in the Slashdot comunity for a windows based open source project?"
With almost all unix systems, you have "cc" or some varient, and "make" and some varient. Additionally tools, such as automake, etc, help with system dependances, but in general, all you need to do to build an OS program is untar, ./configure, and make all.
On the Windows side, however, there is no preferred developer enviroment. Yes, you can get Cygwin tools with come with gcc and make and all other unix tools, but I would suspect that less than 1% of Windows programmers know about these. Most are used to visual environments where the concept of a makefile is not well know. Thus, if I was to do an OS Windows project, I'd need to supply a project file for all the major IDEs (a task in and of itself). Then I have to worry about all the slight differences in how the compilers work; something may compile out of the box fine on Borland C++, but fails miserably under Microsoft Visual C++. The solution in most of these cases is not quite as simple as having #ifdef _UNIX_ in the source; there are probably major revamps to the code to make sure it works. And I haven't even mentioned propriatary extentions to the languages yet by each vendor.
With that said, if you do approach an OS project, make sure that you stick to ANSI and Win32 APIs calls as close as possible, and avoid using compiler features. Try to follow how UNIX code is set up; maybe, just maybe, someone might want to port your app from Win32 to Unix, so keep GUI and engine functionality separate. Try to know the various differences between the IDEs avaiable. I believe you can also compile Win32 code using the Cygwin gcc compilers, so this might be a good test of how portable your final code is for open source distribution.
"Pinky, you've left the lens cap of your mind on again." - P&TB
"I can see my house from here!" - ST: