The community of users and developers drive important software tools from unique inventions to broadly available tools. Along the way, the tool usually becomes a commercial product, and then becomes available as an open source alternative.
The same diagram also plots the even more rapid evolution of a an open source full-text search engine, called Lucene. Simon Wardley has articulated and popularized the Wardley-Duncan map , a visual representation of evolution and value for general systems. The Wardley-Duncan maps below subdivides the Evolution axis to reflect the general evolution and commoditization of open source software.
We observe that software naturally evolves through stages, which in a federal context we name:. We can now use these modified maps to understand the evolution of PostgreSQL and Lucene in greater detail, and therefore the evolution of relational databases and full-text search engines.
Simon Wardley has written extensively about how business people can use maps to understand a competitive landscape and succeed at business. We now recap his basic approach, particularly aimed at the federal program manager, acquisition officer, or executive responsible for a software system. First, identify the 10 most important software components of your system. Analyze them in terms of whether they are part of the Persistence, Business Logic, or Presentation layers.
In messy legacy systems, a component might be smeared across several layers, which can be represented as an oval that touches several layers. Now take each component and analyze it in terms of the evolution axis.
That is, was it written by your agency, or by a contractor? Or are you using a COTS component which is not open source? Are you using open source components, and if so, are they broadly supported or not? In many systems, you will find a mix of these categories.
For example, most systems will have a small amount of custom code. Systems vary widely in terms of how many open source components they utilize. Now draw a draft Wardley-Duncan map of our your system. A large whiteboard with sticky notes is a convenient way to do this, but you can also print out our basic disposable diagram by following this link to this diagram:. A move would be a change to your system that changed the position of one of your components. For example, can you identify a part of your system which was written by a contractor whose function has now been mostly subsumed by the increasing power and commoditization of software?
Are you using a product that has an open source equivalent? In general, any move to the right on this diagram represents a chance to make your system more secure, robust, easier to support, and to save the taxpayer money.
For example, you might currently have a search function which combines some sort of highly application-specific filtering with a word search that could be accomplished with a full-text search engine. If you split the search component into these two separate components, one of them could be moved to the right: the full-text search engine.
This was the creation of a component or node at the Presentation Layer where none existed previously. The creation of GUIs for administration of relational databases and full-text search engines is another example of adding value. Take a full, uninterrupted afternoon to apply this checklist to your system. It will help if you have drawn a fully analyzed Wardley-Duncan map of your system, or at least a good list of your components.
Ask yourself how each of the following highly commoditized technologies could be applied to your project, and how you can take advantage of the commoditization of each of these to lower costs and mitigate risk by using more evolved read: open source versions:. If you have a legacy system, you may very well have to imagine decomposing one of your existing components into several components.
For example, if you are storing documents in your relational database today, in order to take advantage of a Content Management System you might have to split your database into two components, one of which stores structured data, and the second of which may be implemented with a content management system. For operating computer systems, the end point of commoditization is cloud computing, or in other words, the convenient, elastically and inexpensively available computing resources in the form of complete running computers as a service.
We have asserted that open source software represents the endpoint of a commoditization trend which must be reckoned with to properly serve the U. The open source community and the availability of open source code appears to be growing explosively.
At the end of , GitHub announced that they had 10 million repositories , and published this chart:. Moreover, most of the projects at GitHub do not have any great importance or an active enough community to be particularly noteworthy for our purposes. Nonetheless, the tiny fraction of these 10 million systems that remain are an enormous number of valuable projects which can be used as building blocks to construct larger systems.
In a sense, this explosion of the number of combinable projects represents the fulfilment of the Unix Philosophy , which Doug McIlroy has expressed as:. Write programs that do one thing and do it well. Write programs to work together.
Write programs to handle text streams, because that is a universal interface. The practice of programming at the enterprise or system level has changed since 30 years ago. Today, we spend most of our time figuring out how to reuse code that other people wrote. This increase in productivity occurs for other programmers not working so completely with open source, but at a lower rate.
There is no more powerful force than compound interest. With FOSS, on the other hand, users are in control to make their own decisions and to do what they want with the software. They also have a worldwide community of developers and users at their disposal for help with that. When your business uses proprietary software such as Microsoft Windows and Office, you are on a treadmill that requires you to keep upgrading both software and hardware ad infinitum.
Open source software, on the other hand, is typically much less resource-intensive, meaning that you can run it well even on older hardware. Open source software is much better at adhering to open standards than proprietary software is. The visibility of the code behind open source software, however, means you can see for yourself and be confident.
Open source software is generally free, and so is a world of support through the vibrant communities surrounding each piece of software. Review the recorded history of changes to the project to identify the participants whose feedback will be integral to your successful contribution. As the project accepts more of your contributions, you will gradually accrue influence in the community.
Do not expect to influence decisions in a do-ocracy until you are able to demonstrate a history of successful contribution. The founder-leader governance model is most common among new projects or those with a small number of contributors. In these projects, the individual or group who started the project also administers the project, establishes its vision, controls all permissions to merge code into it, and assumes the right to speak for it in public.
Some projects refer to their founder-leaders as Benevolent dictators for life. In projects following the founder-leader model, lines of power and authority are typically quite clear. They radiate from founder-leaders, who are the final decision-makers for all project matters.
This model's limitations become apparent as a project grows to a certain size. Separating founder-leaders' personal preferences from project design decisions eventually becomes difficult, and founder-leaders can become bottlenecks for project decision-making work. In extreme cases, founder-leader models can create a kind of caste system in a project, as non-founders begin feeling like they are unable to affect changes that are not in line with a founder's vision. Disagreements can lead to project splits.
Worse, a founder-leader's disappearance, whether due to burnout or planned retirement, can cause a project to disintegrate entirely. To get started in a project with this governance model: Browse project mailing lists or discussion forums to identify the project's founder-leaders, then address questions about participation and contribution to those leaders through one of the community's public communication channels.
Founder-leaders tend to have a comprehensive view of the project's needs and will direct you to areas of the project that will benefit most from your contribution. Be sure to understand founder-leaders' vision for the project, as most founder-leaders will veto proposed changes they feel conflict with that vision.
When starting out, do not expect to propose changes that will not serve the founder-leaders' vision for the project. Recognizing shortcomings of the founder-leader model, the self-appointing council or board model aims to facilitate successful community leadership turnover and smoother succession. Under this model, members of an open source project may appoint a number of leadership groups to govern various aspects of a project.
Such groups may have names like steering committee, committer council, technical operating committee, architecture council, or board of directors. Typically, these groups construct their own decision-making conventions and succession procedures.
The self-appointing council or board governance model is useful in cases where a project does not have a sponsoring foundation and establishing electoral mechanisms is prohibitively difficult. But the model's drawbacks become apparent when self-appointing governing groups grow insular and unrepresentative of the entire project community—as member-selection processes tend to spawn self-reinforcing leadership cultures. Moreover, this model can stymie community participation in leadership activities, as community members often feel like they must wait to be chosen before they can take initiative on work that interests them.
To get started in a project with this governance model: Because this governance model is typical of more mature open source projects, communities adopting this model will often curate getting started documentation aimed at assisting potential contributors. Find this documentation and read it first. Then read the project's governance documentation to determine how its governing bodies are composed. In many cases, you can locate a council or board governing the aspect of the project to which you would like to make a contribution.
That body will be able to oversee your contribution and answer questions you may have. Some open source projects choose to conduct governance through electoral processes.
They may hold elections for various roles, or hold votes to ratify or update project policies and procedures, for example. Under the electoral model, communities establish and document electoral procedures to which they all agree, then enact those procedures as a regular matter of decision-making. This model is more common in larger open source projects where multiple qualified and interested contributors offer to play the same role.
Once you have customized the platform it is no longer a standard one. Any developer will need to spend ample amount of time to get their head around your customized platform in order to fix the issues. The infamous plugins. Yes, there are over 40k WordPress plugins to power your site. The question is, how many do you really need? Are they well written without any security lapses? Looking at this another way; given a large enough beta tester and developer base, almost every problem and fix will be obvious to someone.
Coding errors are found due to poor testing. Testers must actively create unexpected conditions to find vulnerabilities. The platform needs to be updated with patches and updates regularly. To give you some perspective of patches, WordPress had 3 major version updates v4. Also, 6 maintenance and security updates in plus 4 more in the first four months of It goes without saying this requires someone who has the knowledge of the system to setup a test environment to test all the updates and then applies them to production.
When your agency or developer s make changes to the open source platform to suit your needs, it is no longer open source. It is a customized version of the platform that someone needs to maintain and support. This is when the developer community stops supporting the old version of the software. For example, Drupal 7 to 8 and Magento to Magento 2. Again, you will have to invest your time and effort to update to new technology even when the older version is working just fine for you.
Projects represent the biggest risk for agencies; matching requirements to a technical outcome is difficult and can be costly. The way an agency reduces this risk is by creating a technical solution for one customer that they then use as a basis for the next customer.
As the customers grow the agency then drives revenue from the maintenance of those custom built sites. Over time, the technical team becomes familiar with the technology and they are able to get enough support and other extensions to the technology that can then be used for future projects. The complexity of websites have significantly increased over the years and maintenance costs are too much for the agencies to handle.
Scaling and integrating multiple systems is just another hurdle in the way of making own systems. In this scenario, resorting to an open source platform such as WordPress is the best option. On a daily basis, there are over sites being created on WordPress.
It is a technology that is very familiar to the agencies. There is no need for them to sell you on it.
0コメント