Productization and Road Map Construction
READ THIS FIRST
You don't have to do this all yourself. There are people dedicated to doing different parts of this process, but they need to know it needs doing and have the work scheduled.
In fact, don't try to do it all yourself. Get people involved in the process, especially those that use your software by discussing issues first.
The purpose of productization is to create software that people can actually use and find useful.
Issues here involve:
Unit testing- for regression testing such that future developers don't break your software
Integration testing- with whatever uses your software
Quality Assurance- speaking to the QA department about setting up cruisecontrol builds to regularly run your tests on multiple platforms and making they understand how to test your releases before they go out. And also testing cross version compatibility
* - releases should be properly tested and simple to install
Documentation- the documentation should be comprehensive including examples and should be kept up-to-date, also create and maintain an FAQ
Training Materials- for teaching people how to use the software rather than the "dry" reference documentation
Support- If you don't support your software or nobody else can support it, the project is little more than toy. We do Professional Open Source in the JBoss project
Road Map construction
This is an iterative process due to project dependencies and resource constraints (i.e. scheduling the time of others).
The aim of the road map is to get an idea of what needs doing, what is already done and how this is affected by and affects other projects.
Questions for Constructing the Roadmap
What do plan to do for this release?
Have you prioritized the work?
Is the work specified?
Have you discussed it with others to validate the ideas?
Have you used feedback from your users?
What do you need from other projects?
Who uses your project? How will they be affected?
What do other projects want from you?
Do you have tasks for all the productization that needs doing? Docs, training, integration, etc.
Have you scheduled time for the productization work, i.e. taken it into account when estimating what can be done for a release?
Other potential issues:
What do you plan to deprecate?
What do you plan to remove/retire?
Should you really be doing that in your project?
Is the work already done elsewhere? Don't fall into the "Not Invented Here" trap.
What thirdparty dependencies do you plan to introduce?
How will that thirdparty software be supported?
What is the license for that thirdparty software?