views:

349

answers:

11

I have several personal projects.
Like every developer, I get new ideas every day.
Often, I start my own projects, which I get to different levels of completion.

Too often, I face the question of making them public, exposing other developers to my code and ideas.
This makes me wonder, should I really do that? and why? or why not?

Please, give me reasons why make my projects open source, or why not.
Also, what benefits do I get from the different hosts (Source Forge, Google Code etc.)

+3  A: 

Of course you should. If the project isn't useful, and nobody wants it, big deal, nothing lost.

But if someone likes it and wants to take it up, or finds it useful--even one person--you've done the programming world a favor.

Plus, it does you a favor for future resumes and so forth to be able to say "here's some stuff I coded in my free time"; that's often impossible with the proprietary code one generates for work.

Dark Shikari
A: 

Yes! definitely!

Nothing wrong with releasing incomplete code at all (as long as you don't misrepresent it as a working project, of course). There's nothing like someone showing a bit of interest in your work for motivating you :)

Dan
I greatly agree about the motivation part.Most of the times, I stop developing projects because of lack of motivation.With other developers working with you, asking for a working version, for new features etc. your motivation grows extremely.
Kreich
+4  A: 

Have you ever participated in on open source project? Maybe you should consider participating in a project first to get more details on how they work and if they are right for you.

Leah
+1  A: 

Ideas are somewhat cheap - what you can't buy is the free experience you'll get from feedback from users and other developers.

A general rule from a personal viewpoint - the more you share, the less time other developers have to spend reinventing the wheel, and the quicker we get shiny new code to play with.

Richard Franks
A: 

There's nothing to be gained from sitting on your own code if you're done with it. Just think .. do I really need to be in control of this anymore? You can often benefit from seeing what other people do with the code you wrote.

Kevin Conner
+2  A: 

Unless your code is very private, I would advocate open-sourcing it. By letting other developers see your code you can learn all sorts of things, while also adding to the general public knowledge base. Who knows? Someone could have a great solution to a problem that might take you weeks to figure out by yourself.

perimosocordiae
A: 

Most definitely! If you're not planning on making any money off of your code, nor are seeking to gain fame and fortune with it, all you can do by releasing the code is help! Someone may even step in and finish it for you!

William Keller
+5  A: 

I did it for some 4-5 project, the reasons were these:

  • I felt the program was completed, but there were areas of improvement. It's a good idea to open source such program if you don't make any money of it.

  • The program needed many features, it was too huge to be built by one person. Making it open source attracted 3 other programmers and now (4 years later) we are a great team - still developing it. Being part of the team allows you the exchange ideas and experience. If you don't work at some software company where you have that already, this can be very good.

  • The program was completed and worked fine, however, it had many features and there were odd bugs here and there. Regular users have a hard time finding causes of those bugs, esp. if they do not have the source. Benefit for me in the end was seeing some nasty bugs fixed, and getting some unexpected cool features contributed.

Just make sure you choose a license that will not make you sorry later. If you don't want someone else to take your code, improve it and sell it - without contributing the changes back - then go with GPL.

OTOH, if you want to be able to use other people's contributions in some other closed-source project of yours, it's a good idea to use MIT license.

As for the hosts: you get the benefit of not having to pay for the bandwidth, not having to set up the bug tracker, Subversion repository, mailing list and similar software yourself. Architecture is there. Just make sure you register your own domain for the project, so you have control and you can move it to a different provider or even host it yourself easily. For example, I had this problem that there were hundreds of sites linking to my *.sourceforge.net project, and I wanted to move it away to host it on my own server, because website needed to be very interactive and PHP/MySQL heavy.

I tried sf.net, Berlios and Gna! so far. Sf.net is most comprehensive and has the best features. Gna! has a lot of restrictions, but it is good for small projects, since it rarely has any downtime (sf.net is constantly under heavy load). Berlios is somewhere in between, YMMV.

Milan Babuškov
+4  A: 

My experience has been that it is a good idea to release them open source and publicly available for a few reasons. If any of them make sense then it might be for you.

  1. For personal use. I don't know how many times I've made some utility that I eventually quit using and then lose the source code for. Later I want the utility, or try to remember how it did something. If I make it open source and publish on some repository then I can always find it again, even if no one else improves or contributes to it, although I am often surprised how many downloads they get.
  2. Easier to share with individuals. Similar to reason #1, often I am at a conference or somewhere visiting with someone and they mention wanting to solve the same problem so I can easily give them the url or project name so they can download it.
  3. You might be surprised. People might really, really like it and it could take off.
  4. Make the world a better place, even just a little bit. How many people need to get benefit from it to justify opening it up?
  5. Resume padding. I've had a couple jobs where they saw some of my publicly available code so they knew I could program.
  6. Self discipline / practice. Taking the extra step to polish and document (just a little bit) your application is good practice and a good discipline to develop. When you are writing your application, and you know other people will see it, then you will be a little careful about your code, which is a good habit to be in.

A counter argument might be that if you lose the opportunity to later decide to make a commercial application out of it. That isn't true, as long as no one else contributes to it, or if you only take your own personally contributed code, you can re-license it however you want. You still own the copyright, and publishing it creates a record of that.

I've only used SourceForge and self publishing, so can't help you on the second half of your question. I would sign up for both and make a project and see what you think. My impression is it is mostly ideological differences.

Jim McKeeth
+1  A: 

You need to be willing to turn your project into a releasable state. That is:

  • Write instructions on installing and using
  • Code should be commented
  • Most things actually work
  • Decent configuration/ini/settings file that is used throughout the app

These things are healthy for your project anyway, so you will benefit immediately from the preparation to go open source.

Don't be disappointed if your app doesn't suddenly become widely popular. :)

I prefer GoogleCode over SourceForge mostly because you can use Subversion (SVN) instead of CVS. Regularly checking in code while working on your project will also improve it's health by encouraging you to finish what you start.

SourceForge, GForge and many other project management tools generally have cumbersome and annoying bug tracking and other project management tools. Often I have started using them in a project only to abandon them later. Trac is fairly decent. If your project does get popular your best friend will be forums, so I recommend using PHPBB3 or SMF.

Of course it looks great on your resume even if you have zero users. It also provides an easy way to give code samples to potential employers.

Participating in an open source project also improves your communication and coding skills. You learn a lot about people.

Jonah Braun
A: 

Yes I would recommend going open source. Even if nobody else is interested you still have the benefit of having your source code stored in a source code repositey and under version control.