Open source software development can be considered as a social activity , because whoever develop the product give away free, therefore the society is benefited from that. In my opinion the definition of open source software development is a controversial topic , and different people have different definitions for it as well. However I see open source software development as a community driven activity. All the decisions are taken by the community , and all the development also done by the community. A community can be consists of individual, organization or companies , irrespective of who they are when it come to open source there is no hierarchy as such. Everyone in the same level , in one stage everyone become architectures , in one stage everyone become developers , and it some other stage everyone become tech writers and so on.
Now let's look at actors of open source projects , to get the idea clear let me take Apache Axis2 as a sample projects. We can classified actors or contributors into following category.
- Designers – whoever helped to design the project
- Developers – People who developed the projects
- Testers – Users who test the product and give feedback
- Users – Whoever use the project , product become useless if they can not find users who use the projects
- Trainers and consultants – People who conduct training on the product , who spread the word about the project and teach others how to use the projects
- Tech writer – People who writes articles , book , papers and etc.. , telling how to use the projects
Most of the above category are interrelated , and helped to bring the project forward. And all those people are need in order to improve the project as successful project. Sometimes single person belong to one or all of the above category.
Just having the community around and keeping the source open does not mean the project is open source. The community should allow different people to carry out different activities. In other word if some one want to do training on Axis2 then that should be possible irrespective of whether he is a developer or not.
And the community should not be driven by an individual or a single company , it should be a community. It is essential to listen to other people and other companies. That is the key factor behind success of an open source project. Not like a proprietary project , open source project may have opinions from a number of different people , sometime all those are leaders in particular area. So thats help a lot to improve the quality and outcome of the product.
When I consider about the open source license I really like the Apache License because it gives the full freedom to the end user to do whatever he wants with the code. He can get the code modified as they wish and do whatever they want with that, may be release as open source or sell.