The open source movement has changed the way we make software. The developer community always has access to publicly available code to edit and improve software quality.
A good deal of mission-critical software is open source today. The Linux operating system is probably the poster child for open source development. Kubernetes and Docker are open source too. And of course Microsoft — a company that historically never met a piece of free code it didn’t like — has made open source strides. The entire source code for .NET — the essential framework for programming in a Windows environment — is open source. This includes not only the cross-platform versions of the core libraries, but also the common language runtime code, which allows developers to write .NET code is a variety of programming languages.
The pull request process plays a major role in open source software development. But how could it work outside those walls?
A rising tide lifts all boats
The value proposition for open source hinges around if a project’s code is exposed to the public, it will create a community of developers interested in the code at a very detailed level. As more developers learn the details of the software, they’ll ideally see opportunities to improve and add to the codebase. Some developers might contribute out of a sense of community while others do so to boost their ego. In any case, it’s a typical case of how a rising tide raises all boats. In the developer sense, the boats might be big-name companies such as Red Hat, Google or Amazon, which only adds to the movement’s viability.
The pull request process ensures code quality
While anybody can contribute to an open source project, it doesn’t necessarily mean that every contribution will be a good one.
For example, as good as my Node.JS programming skills might be — and on a good day they can be quite good — do you really want me to have my way with the Docker engine source? First off, I don’t have any real expertise with Go — the language in which Docker and the Docker engine are written — beyond writing a Hello World. Second, even if I could program effectively in Go, I don’t have the proper understanding about the Docker engine required to make a useful contribution. But as the saying goes, give a developer a source code editor, a compiler and an internet full of documentation and the next thing you know, for better or worse, you’ll have code that wants to make its way into the world.
How do we make sure that all the open source code that wants to make its way into the world is actually good and production-ready? This is where the pull request process come in.
The pull request process starts when I write some code that I think has value to an open source project. Then I submit my code to the project via a pull request. A pull request is a mechanism that says to the project maintainers, “hey, here’s some code I’ve made. Please look at it and see if it meets your quality standards and has value. If it does, please merge it to the code base.”
The project’s maintainers — a group of experts on the project’s code — look at what I’ve done. If the code makes the grade, it gets merged into the codebase. If not, the maintainers make comments about what I need to do to get the code into an acceptable state. I take their comments and go back to the drawing board, so to speak.
Software development as a meritocracy
The beauty of the pull request process is that anybody can attempt to contribute to an open source project. The mechanics of the pull request provide the high degree of quality control necessary to make sure that contributions meet development standards and provide actual benefits to the project overall.
The pull request process creates a merit-based style of software development. It doesn’t matter if the contributor is a high school student or owns a Ph.D. Want does matter is the quality and ingenuity of the code.
The pull request process as a motivational tool
More companies now incorporate the pull request as the mechanism how new code is added to a company’s codebase. The developer writes the code, creates the pull request with features that are typically built into modern source control management tools such as GitHub or Bitbucket and then awaits a response. The code gets merged or is sent back for improvement.
One nice thing about the pull request process is that when it’s done properly, it’s impersonal. All that matters is the code and the thinking behind the code. There won’t be never-ending code review sessions that pick over each line of code you’ve written. In fact, if the corporate culture is benevolent and focuses on always helping a developer improve, a denied pull request can motivate and energize the developer.
There’s no doubt that the pull request is a powerful tool. Imagine what it would be like if organizations outside of IT used it.
The pull request process beyond software development
Imagine what it would be like if a piece of legislation could be subject to a pull request. Interested parties could use the pull request to make suggestions on how to improve a piece of legislation. Then legislation’s maintainers — in this example, the bill’s sponsors — would review the proposed modifications. If the additions have value, they’re added into the bill. If there are shortcomings, the maintainers make comments and send the pull request back to the originators for revision.
Remember, the beauty of a pull request is that the value of the submission is judged on its merit. The status, background and other personal information about the submission have little if no affect determining the pull request’s value. All that counts is the merit of the idea and just as importantly, the entire process is open and subject to public scrutiny.
We in the software business have come to understand the value of the pull request. The process is part of just about every open source project in the modern digital ecosystem today. If the pull request became a part of the legislative process it will create not only embed the spirit of continuous improvement in lawmaking but also make it so that any citizen can contribute beyond the ballot box.