Following this guideline will allows you to make great GTG! contributions without touching one line of code! If you follow this strict guidelines, chances are that your idea will be implemented really quickly because you already did 60% of the work! Most ideas proposal are 0,001% of the work and let us deal with the remaining bits. Doing the hard work on your side makes you a real GTG! contributor and we appreciate it a lot!

1) Before anything, search if the idea has not already been submitted in our bug database. Most ideas are. I'm sorry to tell you but you are *not* always original. The fact that the feature is not in GTG doesn't mean that we didn't think about the feature itself. 90% of ideas we receive every week are only variations of the two or three same ideas.

That doesn't mean that you can't contribute ! No, your input is definitely needed ! But it means that you should first be aware of what has already been discussed.

It's better to add something new to an existing discussion and it worth it. Often, you will find that you have nothing new to add : just subscribe to the bug and use the "This bug affects me" features of launchpad. "me too" comments are one of the most irritating stuffs for developers.

If you see that developers are already working on it, that's all you have to do. Thank you for your patience. If the idea is not (or nearly not) discussed and you think you can add value to the discussion, please continue to point 2).

2) Take the time to write your idea down. Why is your idea needed. What will be the benefits of having your idea? What will be the drawbacks? What are the intended users?

Really, when you do that, half the time, you understand that you idea is simply not needed. That's R&D and that's good. If you can spot that, finally, an idea is not needed, you didn't waste time, you learned a lot! I once spent two weeks developing a feature very difficult to implement. Once ready to merge, I realized it was simply useless and annoying to the user.

3) Once you are sure that your feature would be something users want, you must describe it precisely. Do that alone on your own text editor. Define precisely every words that you are using. Definition should of course be in the scope of GTG! "Project", "Status", "Reporting" are words. They mean everything and nothing at the same time. "Have a feature that handle the reporting of the status of a project" doesn't mean anything. That's the kind of idea we receive very often. We simply can't do anything with it.

You will find that you will loop between 2) and 3). That's normal.

4) How will the user interact with your feature? That's the most important things. Implementation and programation are simply a way to expose features to the user. User interaction is the core of GTG! Do a mockup of what UI, using Gimp, pen and paper or whatever. It's important to understand how your feature will affect the GTG interfact and the user flow.

That's the most important work!

Don't ever refer to another piece of software. You can of course take some inspiration for your mockup but never ask GTG to be "like XXX". It's really frustrating because most GTG developers don't use XXX and even if they use it (which is rarely the case), the don't see necessarly how this fits with GTG! GMail is great, no doubt your Iphone is great but "Please do like my Iphone favourite application" isn't!

On the other hand, if you do a mockup, you can of course add more informations like "This mockup was inspired by my Iphone application who use a similar system".

A good idea without a mockup is 1% of the work. A good mockup is half the way to implementation! When doing your mockup, write some use cases for different kinds of GTG! users, including those that will not use your feature.

5) Open a bug. That's the most important : open a bug (or comment on an existing one).

Then, if you want, you can post on the list for further discussion but always add a link to your bug. Don't care too much with blueprints, we don't really use it for GTG. Post a bug. Any discussion not related to a bug number is empty by essence.

Please restrain from sending mail directly to developers or to comments on blog posts or any website. We see every mail and every message on the list. If we don't reply imediatly, that's simply because we have other priorities or we believe that it's already answered. For more face to face explanations, join us on IRC[1].

If you really have a question and want and answer, you are of course free to contact us but then take the time to document it on http://live.gnome.org/gtg. You are probably not alone to have this question.

6) It's never a waste of time.

At least if you follow this guideline, it will not be.

If we mark the bug as Incomplete, it probably means that we didn't understand correctly what you are proposing. Please read this again and try to make it more clear for us.

Often, we have to mark an idea as Invalid or Wontfix. It doesn't mean that it's not a good idea. It only means that we feel it's not appropriate for GTG! We aim for simplicity and ease of use. If your feature requires a too complicated UI for only some sparse benefits, we probably won't do it.

It might also be the case that your feature is way too specific and interesting only to a bunch of users. Consider writing a plugin then. Handling a Romanian accountability is out of scope, definitely [2]

It also happens a lot that, in fact, we found that you can achieve the same result with existing feature of GTG.

But please continue to submit. Everything makes GTG! a bit stronger everyday. Even rejected features are useful because it forces us to think more about the way we want GTG to be. Sometimes, after months, we reconsider rejected feature with a fresh eye and a new idea come up. That's evolution, that's innovation!

Of course, we also accept a lot of features. Sometimes, the improvement can be dramatic. Kevin Mehall proposed us to have subtags. I never thought about that. It never crossed my mind. But after trying Kevin's experiment, I knew I could not live without it anymore.

Thanks guys for supporting us and for all your feedbacks !

Notes

[1] #gtg on irc.gimp.net

[2] not joking, we received that request !