How to get Functionality Implemented by a Free Software Hacker

Mar 10 2005

This blurb has been inspired by a badly formulated feature request on the GIMP mailing list. Quite a contrast to a recent mail to the Inkscape mailing list which has been promptly implemented.

Historically the best chance of having a functionality go into a free software project has been by sending a patch. That means doing all the work yourself. Many still think that you can only be part of a free software community if you become a hacker. Let me assure you that is not the case.

With free software you can get your stuff implemented by either sponsoring the project developer or someone outside the project to figure it out and write it for you. But you can also invest your time to make it a lot more simple for the hacker to implement it.

Many users take the same attitude toward a free software hacker as they have for the proprietary developers who they indirectly support by buying licenses to use the software. Thinking the hackers are there for you to please every wish will hardly get you anywhere.

If you take the time to write a functional specification, you are very likely going to motivate someone to get it implemented. You take the burden of designing the behaviour and let the developer worry about implementation details, data structures, etc. You invest your time and effort just like the hacker would have. Here’s a few suggestions.

  • Define the functionality by creating a few test cases on what problems you are trying to solve.

  • Be very specific and go through the process step by step. It will make you find problems with your design. If you were to just suggest functionality and don’t work out the details, you will, in the best scenario, waste developer’s time discussing the flaws you would have found yourself.

  • It is better to find a bad design while writing the spec than after it has been implemented. Convincing a developer to redo something is close to impossible when he already invested a lot of time in it.

  • Be visual. Create mockups of the interface as you go step by step through the process of solving the task. Many times I have thought my descriptions are clear, when they weren’t. Images tend to be less vague (Well this may simply be because my writting sucks, too).

I sincerely hope I don’t repeat myself since I have a very dejavu feeling. And yes, I have partly written this for myself ;). I better do as I speak too.