From Part 00 to 03, we have gone through a short (7 weeks) and a rather unconventional path to learning Python programming.
This outro serves as another background introduction for the journey onward.
The open-source software movement started in the 80s, initially as the free software movement. Since then, we have enjoyed a constant improvement in working, living, learning, communicating, and more.
(By Johannes Spielhagen, through Wikimedia Commons)
The immediate values of open-source software are apparent. They are usually free to use. Users can change software behaviors without waiting for the providers to do it for them. For the provider, open-source allows better quality and security through public scrutiny. It shows their confidence and opinions to attract a fanbase and create an ecosystem. For organizations using open-source technologies, hiring and onboarding become much simpler without expensive training and obtaining certificates from the proprietary counterparts.
(From Wikipedia as of early 2021)
In-depth, the open-source community has qualities and practices that impact our workplace and society in profound ways.
While open-source projects come in all shapes and sizes, they all have in common the transparency of code and its timeline of changes. As a result, other aspects are out in the open such as issue tracking, feature discussions, peer-review, and product deployment. This transparency makes the software development process more socially inclusive by encouraging participants to contribute to various parts of the process.
(Software Development Life Cycle from Wikimedia Commons)
Empowered by transparency, the open-source community often devises pragmatic and objective-focused methodologies, eliminating as many intermediaries and manual processes as possible. Contributors can infer as much as possible from available information before involving others. These methodologies continuously evolve to adapt to the people who make and use the software instead of the conventional corporate world's rigid models. The transparency also generates more data that drives more opportunities to help make data-driven decisions.
Open-source contributors form a workforce that is asynchronous and decentralized. With an abundance of information, minimal processes, and a growingly sophisticated set of tools and automation, open-source contributors can collaborate efficiently at any time and in any location.
This asynchronous workforce model defies the conventional way practically unchanged from the First Industrial Revolution. It better embraces the Information Age, especially with the catalyst known as the internet.
(Social Network Analysis Visualization, source through Wikimedia Commons)
The synchronous forms of communication do not entirely vanish. They become more scarce and thus more treasured by each other. When most issues and discussions happen asynchronously, the calls and meetings can become laser-focused on what's unresolved, preserving time and effort. Equally importantly, the in-person times serve a great socialization purpose to remind us that we are still humans.
(By IBM)
To sustain an asynchronous and decentralized workforce with massive amounts of information open to the public, open-source participants frequently make and improve automation to optimize or abstract away processes. This mindset drives people to continually lookout for new ways to adapt and improve their workflow.
But it is rare for existing tools and automation to provide a perfect fit for everyone's use-cases. People resort to hacking, or creative workarounds, to bend tools to their will.
The hacking culture also provides an organic counter-balance to some problems that plague many software projects, such as under-documentation, lack of testing, and leaky abstractions.
Among many tools that support the open-source software ecosystem, git
is the most popular one that provides efficient ways to distribute and manage source code. Its decentralized nature allows every contributor to access the entire working copy and change history.
The collaboration happens in a peer-to-peer fashion. Collaborators branch out the source code to implement new features or issue fixes. Once satisfied with the implementation, the contributor sends a request to add their changes to the mainstream working copy and get others to review and offer suggestions - similar to Google Docs in the suggesting mode. When enough contributors reach a consensus, the implementation gets merged back to the mainstream. During this process, automation allows contributors to not waste time on trivial problems such as code-style differences and logical flaws. After the merge, it is common to see automated deployment or release of the software to a designated audience.
(From Understanding the GitHub flow)
When unresolvable disagreements break out, one can maintain a branch as a permanent fork to evolve the project to a different trajectory. The practice of forking is why we have a diverse number of Linux distributions.
(By Eric Adams through Forbes)
However, due to a barrier to converting from a centralized mindset to a decentralized one from its users, git
was notoriously convoluted and hard to utilize. Toward the end of 2007, a group of software developers who enjoyed git
but envisioned better ways to use it started building what's known as GitHub today, making the usage pleasant for more. They have been building GitHub using git
and GitHub itself, a practice known as dogfooding.
The company started as profitable from day one, refrained from taking external funding until July 2012, and stayed as a flat organization with 234+ employees until 17 July 2014.
Perhaps the root of their success is a culture that emphasizes people's happiness instead of money. The culture reflects in their ability to develop quality products that embrace and encourage the best practices from the open-source community and benefit even proprietary developments. Not surprisingly, they are also a large contributor to various open-source software projects, with an adopted Open Source (Almost) Everything mindset.
Such an interpretation of open-source practices allows the company to attract top talents worldwide to collaborate on a service platform enjoyed by their users. By 2010 (a little over three years since inception), GitHub has claimed to be the largest host of source code in the world until today.
A key idea behind the open-source movement is to leverage their learnings to make information and curation more transparent and efficient. This social movement coincides with increasing amounts of information online and a growing realization of how closed platforms could unethically profit from manipulating the information flow and shape.
As a part of the workspace meta shift, more organizations start to realize the benefits of open-source software and their community practices. Since around the beginning of 2014, our dev team has started to build products using open-source technologies and evolve our culture by adapting the open-source ways.
Instead of on-paper seniority, materialized merits become the only valid argument between project contributors in discussions and debates. We demonstrate cases in a verifiable way, rapidly iterate based on feedback, and make frequent releases with peer-review and automation that capture trivial issues.
The practice allows us to eliminate hierarchy and processes to enable productivity and innovation through a flat and fluid team. We minimize constraints to give everyone the freedom to pursue after their interest and the ability to develop, test and deploy their implementations without waiting for others.
The transparent and asynchronous model of information distribution allows our collaboration and communication to be in a manner that respects each other's time. With the information availed to us, each team member infers and summarizes on their own time to form most decisions without bothering or getting blocked by others.
We encourage team members to learn and transparently utilize shared calendars, to-do lists, group chat, etc. This way, we retain information as a raw and searchable form of a knowledge base. With the help of tools and automation built on top of the services we use, we distill the knowledge into well-formed documentation for future reference. We create bots to collect status and updates from where work happens, then curate and share them across the board regularly. The automation allows us to focus more time on unresolved problems and minimize synchronous debriefings.
As a natural progression, more organizations have started taking an open stance toward software and data. The increasingly sophisticated open-source tools and automation that help gather and curate data establish a new baseline that redefines much of the professional landscape. The cost-saving factor from utilizing open-source technologies is also making it cheaper and easier to experiment with ideas formerly impossible without extensive training.
Professional developers no longer need to solely focus on software development implementation and start internalizing other aspects that formerly required dedicated roles. These include (but are not limited to) software architecting, designing, testing, documenting, and even marketing. Such change gives developers better perspectives and a higher sense of ownership, allowing them to think and act more strategically.
As most programming languages are already in the open-source ecosystem, they are getting ever more accessible. More people can easily acquire and utilize these technologies to automate and simplify their jobs. As a result, it further moves programming toward the skillset spectrum's essential direction for more fields and industries, thus further blurring the line between developers and non-developers.
Open-source projects such as TensorFlow and PyTorch offer a set of sophisticated implementation of modern machine-learning algorithms that accelerate the path from AI model research to production.
There are also open-source AI models that accelerate the elimination of many chore-like job functions. Such as comprehending text and elaborating from seeding phrases or categorizing software changes. Some technologies can procedurally generate video game stages and contents to offer a unique and challenging experience or learn to beat real players.
From here on, we will gradually adopt some open-source technologies (including machine-learning subjects) in the following series. Our focus will be on practical use-cases and perspectives that hopefully help you connect dots for your path.