Collaborative software development model
|This article needs additional citations for verification. (February 2009) (Learn how and when to remove this template message)|
The software development model began widespread adoption with the Linux kernel in 1991 and continues to be used primarily for freeware, open-source software and commons-based peer production. It is also used for certain types of developmental models, such as the Iterative and Agile development model, through which stages of the program are released for public feedback, driving the development of the program.
Collaborative software development and free software
It is the dominant model used in development of free software. It is very compatible with free software because free software projects publish the source code of any published programs, so they do not have the secrecy reason for hiding their communications and in-progress development.
Massive scale peer review of software changes and commits is possible under the collaborative development model. This has been summarized by Raymond in what he terms Linus's Law: many eyeballs make all bugs shallow.
Many software developers and researchers who agree that collaborative development is one of the best ways to identify the most possible bugs in a program while remaining efficient. Another way that this has been stated is, “if you post it, someone will fix it,” referring to the same principle applied to source code rather than an actual program.
However, the extent that such peer review actually occurs is disputed.
Collaborative Software Development Business Model
Regardless of its origins within the software industry, “Collaborative Software Development" is now largely used by most technological disciplines. Its widespread usage can be attributed to its effectiveness. Today, Collaborative Software Development, the term itself has carried over from its original meaning and its ties to open source coding to that of describing a relationship between the end-user and the developer. The term today has even lost its connection at times with software development. Its primary function becomes as its effectiveness as a business model – the process of collaboration between consumer and developer. In other words, the initial idea that the software being created is open source, has been removed from the original meaning of the term. The business model it describes becomes equally applicable to many fields of web technology, including but not limited to web designers, web developers, application and widget makers, social network creators and as the name implies, software architecture. The term is used primarily to describe a business model, a company’s philosophy or methodology on how it handles project development from client’s initial idea [inception] to final fruition and deployment for the end-user.
The old school approach, before the advent of the world-wide-web, was for a company to meet face to face with its clients. This may appear the same as the Collaborative Software Development method, though the only similarity was within the first ["kick-off"] meeting or upon the acceptance of an initial company proposal. This method was primarily driven by a company’s vision of if its client’s expectations. Again, though the term was originally used to describe a relationship with open source coding, this component of the definition no longer is mandatory. The relationship between the end user and the developer building the product takes center stage. As long as the end user initiates the project and the developer form a unity of collaboration than the term seemingly applies.
Brief History -- Once the world-wide-web became a household name, business started to drift from "company driven" towards a consumer driven economy. No longer did a company’s advertising hold power and influence it once had. Social Medias gave rise to a peer review advertising system. It is anyone's guess as to an exact timeline of this transition, though clearly people stopped trusting a company's advertising in favor of what other people [peers] in their community were buying and how a product held up to initial appeal. Though social advertising was viewed by professionals as primitive, the general public embraced its honesty.
With modern technologies and more and more "choice," a sense of empowerment was returned to the end-user, the consumer. This empowerment led to people wanting to create their own niche in history with the creation of their very own website. Somewhere in the midst of this people grew ever increasingly dissatisfied in buying into other peoples vision, wanting more control of how their website will look and function. They demanded more creative influence over their projects at every turn. In looking at internet history it is almost obvious that the evolutionary process would bring us to point in time, to the day of “Collaborative Software Development “. It has thus far proved to be a win-win for most buyer and sellers, end user and developer.
There are many who equate this term to web 2.0 and social media interaction though these are only items of interest but not a required unit of the process described.
Agile Software Development is a term in close proximity though has as one different component or aspect. Agile Development is more developer driven and Collaborative Development is more user-driven (see Open-Source). Both though are the same in terms of using collaboration as a method to propel the project along.