Planning Considerations

Some points to be considered before starting a substantial open-source project:

  • Target framework (.NET Framework 1.0, 1.1, 2.0, 3.0, Mono, DotGnu) - the choice determines who would be interested in the application and which communities might adopt it. Choosing a framework like Mono gives us the Unix and Mac communities puts us behind the times technology speaking;
  • License (GPL, LGPL, Mozilla, BSD, etc.) - restricts who can use it and how, will also cause endless debates amongst license nerds;
  • Name - can make a difference;
  • Release plan - a plan of major and minor releases with clearly defined deadlines;
  • Tools - NAnt, NUnut, NDoc, ... what else?
  • Libraries - log4net, Microsoft-style .config files - or do our own;
  • Coding standards - have to have some kind of standards or everything will go pear-shaped;
  • Hosting for code and website (FAQs, wiki, mailing list, source code control, bug tracking, etc.) - SourceForge?
  • Internationalisation - must be designed to permit internationalised resources (where necessary);
  • Code and documentation internationalisation - XML comments can be "imported" from language-specific files allow international documentation to be generated (although unless there are tools this is obviously going to be a pain in the @rse).
  • Language - should identifiers, documentation and comments be in British, US or international English (I know which I prefer)?
  • Which technologies should be supported (MySQL, PostgreSQL, WinFX, Apache, ...);
  • Build process - how "complete" the build process should be;
  • Scope - related to the release plan: what features we intend to implement and when;
  • Management structure - Apache-style management by committee or Linux-style benevolent dictator?
  • Architecture - obviously a fundamental part of any project, but a policy needs to be agreed up-front so that decisions can be made semi-independently without conflict;
  • Patterns - common "patterns" and design features should be agreed and documented as required;
  • Release process - alpha, beta, gamma and all that; when does status change, who decides and what do we call it?
  • Document formats - OpenOffice, Word, PDF, HTML, Text, RTF, choices, choices;
  • As well as a name, logos, colour schemes and so on seem to be quite popular;

Further Reading:

The Cathederal and the Bazaar us consider pretty standard reading on the subject:

http://www.amazon.co.uk/gp/product/0596001312/202-5719946-3892661?v=glance&n=266239&s=books&v=glance

Complete list of Open Source licenses:

http://www.opensource.org/licenses/index.php

Some example roadmaps:

http://www.mono-project.com/Mono_Project_Roadmap#Mono_release_strategy

http://www.nunit.org/index.php?p=roadmap&r=2.2.5

Project management:

http://httpd.apache.org/ABOUT_APACHE.html#Development

http://www.groklaw.net/articlebasic.php?story=20050529095918381


Contact

If you have any comments or ideas please email: open-collar@onyct.org.