Sign in to follow this  
GenuineXP

How to Go Open Source

Recommended Posts

So I've been thinking about taking my little game engine (affectionately called Mocha, with a toolkit called Whipped Cream) and releasing the source on SourceForge. I know that there a tons of projects out there and many of them aren't very active at all, so I was wondering if anyone has any tips or tricks to successfully create a new open source project that gets at least a wee bit of attention. The code base is pretty small (only about 7000 - 8000 lines), but the basics are laid out and functional. The most complete systems are input and video, but both are still in need of serious work. I have some refactoring in mind, and even renaming to fit a particular style and layout. There are some things I'd like to preserve with my project, and I'm not sure if they're all possible with open source software: - Control over the general design and code base. That is, not opening up the project, and having everything scrapped and practically started from scratch. :-) - Major design changes or sometimes require approval (by me or popular vote of active participants). - Guide to style and layout. Naming conventions and comment style remain as they are already laid out. Any suggestions (or realizations)? :-) Please let me know if you're interesting in more details about the engine. It's very simple and tends to focus more on usability than speed. Thanks!

Share this post


Link to post
Share on other sites
Generally I've found the more successful open source projects are the ones that get documented the most. Document the hell out of the project, provide not only an API reference, but a manual on how to use the features as well as some quick tutorials to get people going that don't want to do a lot of reading. Also take user feedback very seriously as they're potential contributors.

Share this post


Link to post
Share on other sites
You can open source your code under different conditions, and it would certainly be possible to do what you want, which is managing the workflow of code changes.

Setup your code base on a repository with permissions so the code is readable and downloadable by everybody and only modifiable by people you have given permissions (initally you only)

For code fixes you can promote a patch submission system that you get to approve/discuss with contributors.

If your project grows then you can add people you trust to the list of approvers/reviewers, and keep the patch submission system in place.

Choose licensing terms for your work, there are several licenses out there (GPL, BSD, MIT, etc), note that your license choice will affect who is attracted to your project, some people dislike GPL type of licenses due to the conditions it imposes on potential closed source adoption of the code base, for other projects GPL licenses work fairly well (i.e. Linux Kernel)

Document your project VERY well (not just the standard wiki stuff people do, provide samples, FAQ, diagrams, quick start/getting started section, goals, roadmap, etc), and make sure your code base compiles clean on download and contains all the dependencies it needs to run (several projects fail here, i.e. I wanted to try Panda3D because it looked awesome, but was never able to get it to compile under WIN32/VS2005 cleanly, then I stopped trying, then I tried Irrlicht and OGRE and had no problems, and was happy testing both libraries, you get the idea)

Note that there are hundreds of open source projects out there, and several are abondoned fairly quickly, you need to sell you project to others, recruit contributors, make your project appealing and popular, if you end up getting a solid community you will see the project grow.

Open Sourcing is much harder than setting up a repository on some web site, it is hard work to make an Open Source project successful.

Share this post


Link to post
Share on other sites
Thanks for the replies.

I'm working on (re)documenting the source at the moment because my commenting was initially very sparse.

How should I go about making a documentation page (wiki)? I've never done so before, so I really have no clue where to start. I've seen plenty of wiki pages that offered download links, documentation, and samples to boot. This seems like it would be the best idea.

Also, I was looking at the LGPL license. Would this be suitable? I've downloaded GPL/LGPL code before and have noticed the elaborate section of comments at the top of each source file. Do I have to add something like this to my code manually?

Thanks again for the help. I appreciate it.

Share this post


Link to post
Share on other sites
For documenting, you could use a system like Doxygen. You basically put some special comment lines into your code and then run Doxygen. It will create an HTML documentation for your code. It's comparable to JavaDoc which I've used and liked a lot.

Share this post


Link to post
Share on other sites
Doxygen (I have no experience with NaturalDocs) is a fine choice for API reference documentation, but this is only the second level of documentation: only interested potential users read Doxygen docs, after having looked at the first level of documentation (the overviews, manuals, tutorials eedok describes) and having decided from those documents that
1) the project isn't too abandoned/unfinished.
2) the project does something they understand and potentially useful well enough.
While API documentation is necessary for users and a great discriminator between programmers that hack for themselves and programmers that care about users, a good first impression (web site, "marketing", clear basic explanations) is even more necessary.
Compare the web sites for OpenTNL and HawkNL: the architectural overview and other introductory documents of the former build more confidence than the stark function list of the latter, while the respective API reference pages are similar .

Share this post


Link to post
Share on other sites
Should I build my own site from scratch? Are there sites where I can build a wiki page without having to pay for the space?

I actually have a layout for a site to promote the engine, but I don't have any web space at the moment. I'd like to get a wiki page up first, I think.

Thanks again for the replies. They're extremely helpful.

Share this post


Link to post
Share on other sites
SourceForge.net is a decent host for open source projects. They are a pretty common starting point for searching for OSS, so you may want to register there even if you don't use all of their services (e.g. my project hosts our website offsite, but we use SF.net's SVN repository, file release system, etc.). They have a ton of mirrors which is nice if you are releasing good sized binaries. That way you don't have to pay for that bandwidth. They have occasional reliability issues and do have some restrictions about what you can do, but in general I have found them to reasonable and you can't complain about the price. There are others, but SF.net is the one that I am familiar with. Wikipedia has a comparison of free software hosting services that you may want to look at too. I have some other thoughts, I'll post those separately...

Share this post


Link to post
Share on other sites
First off, I founded and admin Crown and Cutlass which is an open source game. We have a tiny (sometimes almost non-existent) community, and have hardly made a splash in the open source world. However, I would say we have been fairly successful so far. I wish we were farther along of course, but I think so far it has been a really good experience.

Think over your choice of license carefully. It can have a serious impact on how you run your project, and different licenses may be better depending on what you are looking to do. Do you have a license picked out? If so, which one are you using? Why? If not, what are you looking to get out of the project? What do you want to allow your users to do or not do?

You don't really absolutely need to do anything to open source your project except for releasing the source under a suitable license. Documenting the project, having consistent coding style, dealing with bug reports are all good things and they will certainly help encourage a community. However, I think the most important thing is that _you_ remain active. Nothing turns off potential users/contributors like a dead (or apparently dead) project.

You should be ready to have very little community involvement for a long time. You maybe lucky and get a huge community right away, but it'll probably be more of a slow process. Even though Crown and Cutlass has slowly been making progress and we have gotten significant contributions from people (art!), most contributors have been people that come in for a while and then drop out. We haven't had a lot of code contributions, partially because we haven't been quick to accept new developers without seeing that they are committed and capable. If you are writing an engine, you may be able to attract more developers since the users are all developers.

Take a look at Producing Open Source Software. You can buy it or read it for free. It is a good read. I'm not sure if you need to read all of it, but it is definitely worth skimming.

Anyway, welcome to the world of open source projects. Post a link to your project once it is set up!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this