Francois Marier: Starting a Free Software project
Getting started with a Free Software project and making it available to the community can be confusing for first-time software authors. However there are a couple of things worth knowing that will help you attract more users and increase the likelihood that your software will be part of a Free Software distribution like Debian.
Idea, Name and LicenseAt the core, a Free Software project starts with an idea. It's the reason why you wrote the software in the first place. Where this becomes interesting is when your think that your software could be useful to others. That's when you should think about sharing your code.
Of course, one of the very first decisions you'll need to make is to name your project. This is of course a very personal decision, but if you're struggling to find something exciting and trendy, consider choosing something that:
Public ReleaseMaking your project publicly available can be as simple as dropping a tarball on a mailing list. However, if you want your project to reach all of the users for which it could be useful, there are a few other things you might want to do.
One of these things is to provide a digital home for your project. That homepage should provide access to all of the services related to your project. Such services usually include source control, bug tracking, mailing list and file areas. I've got some ideas about what that homepage should contain later but first things first, let's look at what that tarball should contain.
Tarball ContentsMost people downloading your source code will either be end-users or
distribution maintainers. Here's what they will be looking for:
After putting all of this together, you should be ready for the initial public release of your project and will now be moving to the next phase: supporting your growing community.
Idea, Name and LicenseAt the core, a Free Software project starts with an idea. It's the reason why you wrote the software in the first place. Where this becomes interesting is when your think that your software could be useful to others. That's when you should think about sharing your code.
Of course, one of the very first decisions you'll need to make is to name your project. This is of course a very personal decision, but if you're struggling to find something exciting and trendy, consider choosing something that:
- is not already used,
- is easy to remember and
- gives an idea of what the project is about.
Public ReleaseMaking your project publicly available can be as simple as dropping a tarball on a mailing list. However, if you want your project to reach all of the users for which it could be useful, there are a few other things you might want to do.
One of these things is to provide a digital home for your project. That homepage should provide access to all of the services related to your project. Such services usually include source control, bug tracking, mailing list and file areas. I've got some ideas about what that homepage should contain later but first things first, let's look at what that tarball should contain.
Tarball ContentsMost people downloading your source code will either be end-users or
distribution maintainers. Here's what they will be looking for:
- Complete source code along with the data files (if any) necessary to use your software.
- Installation instructions explaining how to compile and install your project on one of the supported platforms. This file is usually called INSTALL.
- Quick instructions on how to get started. This is usually contained in the README and it should provide new users all of the commands or instructions they need to get going within a minute or two.
- Full copy of the licensing terms, usually in a file named COPYING.
- Contact information for help or contributions. Small projects will often share the email address of the main author and a link to the project homepage if available. This is traditionally located in a file called AUTHORS or in the README directly.
After putting all of this together, you should be ready for the initial public release of your project and will now be moving to the next phase: supporting your growing community.
It is funny the way things work out when you're looking for help.
Recently I was working on a Ruby + FUSE based filesystem and as part of the development I added simple diagnostic output via trivial code such as this:


Another Monday, start of the working week and I m thinking about business again. Ian Lynch of
You know, the more I ve been using Twitter the last week or so (













Debian so needs a
I've been banging my head against this all day and it doesn't make
any more sense than it did when I started.
I have a need to write some code that can manage job control on a
terminal. More specifically, I need to run a single process and stuff
it into the background at will, so that it gets suspended when it
tries to read from the terminal. So, there's a
The streams from FOSDEM are live since 2min now, yay!
Everybody seems to be using