Skip to main content

Building Community

The free and open software community is the culmination of the free software movement, the open source movement and numerous other independent developers who support software freedom.  The GNU and Linux projects are the most extensive examples of free and open-source collaboration.

1000000463.png 1000000350.png

Through the collaborative creation of open software modules that fulfill precisely defined roles and tasks, Linux can be pieced together in many ways.  This creates an expansive ecosystem where you are free to use the software that you choose.  These large-scale experiments were not only technical, but social: how do you revolutionize the communication systems that go into decentralizing development?

Eric S. Raymond – a founder of the open-source movement – attributes Linux's success not to any particular technical innovation, but it's cooperative social systems and distributed power structure.  Linux wasn't painstakingly handcrafted by a small group of privileged developers like other operating systems of the early digital age.

Linux evolved in a completely different way. From nearly the beginning, it was rather casually hacked on by huge numbers of volunteers coordinating only through the Internet. Quality was maintained not by rigid standards or autocracy but by the naively simple strategy of releasing every week and getting feedback from hundreds of users within days, creating a sort of rapid Darwinian selection on the mutations introduced by developers.

Eric S. Raymond, Cathedral and the Bazaar

Melvin Conway – an early computer scientist and hacker – expressed a formative principle that is still relevant today: the structure of software will mirror the structure of the collective that built it.  By embracing a new development model that relied on volunteers from around the world, a radical new form of asynchronous communication was necessary.


Open Collaboration

The Internet's capacity to build digital connections between two computers – and the people who used them – fundamentally changed the ways we can collaborate as Humans.  We now had the power to communicate with little delay across vast distances and decisions could be made in near real-time.

This enabled people to work together directly, forming communities around mutual interests and shared goals.  For the mutual benefit of the digital commons, communities produced valuable shared resources through processes that weren't primarily focused on generating profit. 

1000000614.png

Particularly notable examples include Wikipedia, open-source software and open hardware.  These communities and the projects that coalesce from within them are not owned by any one party.  Each project has its own philosophy about their approach to design and development.

The Cathedral and the Bazaar, a living document by Eric S. Raymond, details his observations from within the early teams creating the Linux ecosystem.  He examines the tension between bottom-up and top-down approaches to design within software.  He likens these styles to the ways that knowledge arises within a cathedral versus the bazaar.

Essay Excerpt

But I also believed there was a certain critical complexity above which a more centralized, a priori approach was required. I believed that the most important software (operating systems and really large tools like the Emacs programming editor) needed to be built like cathedrals, carefully crafted by individual wizards or small bands of mages working in splendid isolation, with no beta to be released before its time.

Linus Torvalds’s style of development—release early and often, delegate everything you can, be open to the point of promiscuity—came as a surprise. No quiet, reverent cathedral-building here—rather, the Linux community seemed to resemble a great babbling bazaar of differing agendas and approaches ... out of which a coherent and stable system could seemingly emerge only by a succession of miracles.

– The Cathedral and The Bazaar

Church

The Cathedral

These open-source projects release their source code once it has been finalized, but it is not available to the general public while in active development.  This restricts who has the privilege to make changes to the underlying source code to an exclusive group. 

 

The GNU project often uses this philosophy.

 

Storefront

The Bazaar

These open-source projects make their source code completely available on the Internet throughout the entire development process.  Everyone has access to the source code, but making modifications to it requires oversight by the project.

 

The Linux kernel uses this philosophy.


A Linux distribution is primarily powered by its community – which can take many different forms.  Debian is a well-known example supported by the public on a volunteer basis by global developers.  Some distributions like Fedora are community-maintained operating systems that were split off from corporate-focused Linux builds.

While Linux is generally free-of-charge, technology companies contribute to the continued development of the ecosystem.  An estimated 85% of the modern Linux kernel was written by developers who were paid for their work.

There is an array of digital communities that support Linux users and developers, each with a specific purpose or mission.  Linux Questions and Stack Exchange are online discussion forums that can provide general Linux support.  Many open-source projects have their own forum as well as IRC chatrooms, mailing list and newsgroup.

Decentralized Community

Rather than concentrating power within a single location or team, decentralization distributes tasks and decision-making across multiple contributing members.  This is a flexible and efficient option for collaborating, but requires constant communication and robust planning if it's going to succeed.

1000000251.jpg

The concept of version control is heavily leveraged by open-source software projects.  This has led to powerful tools that can keep track of changes in the source code made by hundreds of potential contributors. This creates a central repository for critical project files with strict processes in place for modifying them.

1000000620.png

Git is a program originally created by Linus Torvalds in 2005 as version control for the Linux kernel.  It is now the official standard over 90% of developers consider it to be their primary tool for the job.  In essence, Git downloads an exact replica of the central repository to your computer. 

With the source code on your hard drive, you can compile the program for yourself from scratch.  As a developer, you can make alterations and upload them back to the central server.  This helps ensure that a developer can work on one section of the program without getting in anyone else's way – while also leaving a trail of the changes.

1000000624.png 1000000623.png

While Git is primarily a command-line utility, there are many online repositories that work with Git – but the most popular is by far GitHub. Owned by Microsoft, it is the largest online repository of open source-code with millions of developers and projects.  GitLab is an open-source and decentralized alternative that can be self-hosted. 

1000000247.jpg

In addition to acting as a shared Git repository, these platforms provide community development tools.  This includes bug tracking, feature requests, task management, a forum and a wiki for documentation.  Developers can configure "continuous integration and continuous delivery" where pre-programmed tests are performed on source code before it is automatically compiled.

1000000253.png

When using a public software repository platform, there are roles that get fulfilled within each project.  While there can only be one formal owner of the project, they are free to create granular permissions for who can edit what.  Most projects hosted on a public source code repository maintain these general conventions when it comes to collaboration.

Domino_mask

Anonymous

Unless a software project has been intentionally marked as private, the source code is freely available for download by anyone who accesses the repository even if they haven't logged in.


person

User


 

This is any person who has an account on GitHubthe platform with a verified email.  Each project can configure how unaffiliated users are allowed to interact with the source code.  Open-source software debelopers often value diverse perspectives from every day users and explicitly request feedback.

 

persondeployed_code_account

Collaborator


This

is

any

A userperson that a software project has definedexplicitly permissionschosen into agive githubaffiliation repostatus. is marked as a collaborator. These permissionsThis can varyoffer fine tuned control to specific developers and doprovide not need to be the commit bit. A random org I am a member of shows the following options presently:

read
write
admin
issue triage
non-admin manager

See also gh enterprise docs.

A user who has read-onlyblanket access to all collaborators.  In the case of a private repoproject, shouldthis can be marked as a collaborator, in my understanding.

A user who has permissionsused to aoffer repoexclusive butaccess noto commitssource in that repo with any of email addresses associated with their github account would be a collaborator but not a contributor.code.


deployed_code_accountPerson_edit

Contributor


 

Git (inOnce a gitverified repository)user identifieshas authorssubmitted a change and committersit's byaccepted, emailthey address.are Github users can associate email addresses with their accounts. Whenconsidered a user'scontributor setwithin ofthat emailproject. addressesBefore isproposing foundchanges, ineach user must follow the commitrules historyand ofintegrate athemselves github repo, github marks that user as a contributor.

Contributor — asinto the namecommunity. implies—makes contributions to an InnerSource community. These contributions couldare benot codelimited orto non-codesource artifacts,code, but also include stewardship responsibilities – such as bug reports, feature requests, or documentation.

Contributors may or may not be part of the community. They might be sent by another team to develop a feature the team needs. This is why we sometimes also refer to Contributors as Guests or as part of a Guest Team. The Contributor is responsible for "fitting in"requests and fordocumentation conforming to the community’s expectations and processes.writing.


how_to_reg

Trusted Committer

 

 

Generally speaking, the Trusted CommitterThis role can vary widely between projects and is often defined more by itstheir responsibilities, ratherresponsibilities than by itstheir privileges.  ComparedWhile toan contributors,average Trustedcontributor Committerscan havesuggest earnedchanges, these project members are often the responsibilityones toin pushcharge codeof closeractuating tothem. production and are generally allowed to performThese tasks thatoften have a highergreater leveldegree of risk associatedinvolved withand them.require earning the respect of the community.


engineering

Maintainer

 

 

Repository maintainers are responsible for approving requests to push fixes to the repos they maintain. This involves checking that the bug is appropriate for inclusion into the targeted repo.


 

image.png

commit

Branch


Branches are isolated within the same repository, allowing easier collaboration among team members who have access to the repository. Forks, on the other hand, create a completely separate copy of the repository, which is useful for outside contributors.

 

https://en.m.wikipedia.org/wiki/Branching_(revision_control)

 

call_split

Fork

 

A fork is a new repository that shares code and visibility settings with the original “upstream” repository. Forks are often used to iterate on ideas or changes before they are proposed back to the upstream repository, such as in open source projects or when a user does not have write access to the upstream repository. 

 

https://en.m.wikipedia.org/wiki/Fork_(software_development)


call_merge

Merge


A branch is a parallel version of a repository. It is contained within the repository, but does not affect the primary or main branch allowing you to work freely without disrupting the "live" version. When you've made the changes you want to make, you can merge your branch back into the main branch to publish your changes.

 

https://en.m.wikipedia.org/wiki/Merge_(revision_control)

 

publish

Commit


A commit, or "revision", is an individual change to a file (or set of files). When you make a commit to save your work, Git creates a unique ID (a.k.a. the "SHA" or "hash") that allows you to keep record of the specific changes committed along with who made them and when. Commits usually contain a commit message which is a brief description of what changes were made.

 

https://en.m.wikipedia.org/wiki/Commit_(version_control)

 

file_download

Fetch

 

A fork is a new repository that shares code and visibility settings with the original “upstream” repository. Forks are often used to iterate on ideas or changes before they are proposed back to the upstream repository, such as in open source projects or when a user does not have write access to the upstream repository. 

 

https://en.wikipedia.org/wiki/Version_control#Pull,_push


cloud_upload

Push


To push means to send your committed changes to a remote repository on GitHub.com. For instance, if you change something locally, you can push those changes so that others may access them.

 

Cloud_download

Pull


Pull requests are proposed changes to a repository submitted by a user and accepted or rejected by a repository's collaborators. Like issues, pull requests each have their own discussion forum.


1000000255.jpg

1000000256.png

Documentation 

Documentation is any communicable material that is used to describe, explain or instruct regarding some attributes of an object, system or procedure, such as its parts, assembly, installation, maintenance, and use.[1]

https://en.m.wikipedia.org/wiki/Software_documentation

Software documentation is written text or illustration that accompanies computer software or is embedded in the source code. The documentation either explains how the software operates or how to use it, and may mean different things to people in different roles.

  • Requirements – Statements that identify attributes, capabilities, characteristics, or qualities of a system. This is the foundation for what will be or has been implemented.
  • Architecture/Design – Overview of software. Includes relations to an environment and construction principles to be used in design of software components.
  • Technical – Documentation of code, algorithms, interfaces, and APIs.
  • End user – Manuals for the end-user, system administrators and support staff.
  • Marketing – How to market the product and analysis of the market demand.

User documentation

Open source projects have three main types of documentation, each serving a specific purpose:

1. Technical Documentation

This is the developers' documentation. It delves into the codebase, explains APIs, and provides instructions for setting up development environments. README and API documentation are examples of technical documentation.

2. Product Documentation

This type of documentation is meant for general users. Think user manuals that guide them through using the project and its features, such as installation guides, tutorials, troubleshooting guides, and FAQs.

3. Guidelines

These are the rules and roadmap for new contributors. Common types of guidelines in an open source project are:

  • Contribution Guidelines: They usually explain how to submit code and bug reports and how to participate in the project, such as the contribution process and communication etiquette.
  • Style Guides: They mainly guide contributors in maintaining coding and documentation consistency and quality.

Unlike code documents, user documents simply describe how a program is used.

In the case of a software library, the code documents and user documents could in some cases be effectively equivalent and worth conjoining, but for a general application this is not often true.

Typically, the user documentation describes each feature of the program, and assists the user in realizing these features. It is very important for user documents to not be confusing, and for them to be up to date. User documents do not need to be organized in any particular way, but it is very important for them to have a thorough index. Consistency and simplicity are also very valuable. User documentation is considered to constitute a contract specifying what the software will do. API Writers are very well accomplished towards writing good user documents as they would be well aware of the software architecture and programming techniques used. See also technical writing.

"The resistance to documentation among developers is well known and needs no emphasis."[10] This situation is particularly prevalent in agile software development because these methodologies try to avoid any unnecessary activities that do not directly bring value.

Documentation is an essential resource for developers, acting as a guidebook for understanding project features, APIs, configurations, and usage. 

  1. Enabling Adoption: Clear and well-structured documentation lowers the barrier to entry, making it easier for developers to understand and start using the open source project. It can facilitate adoption by providing installation instructions, usage examples, and integration guides.

  2. Empowering User Satisfaction: Well-documented projects lead to better user experiences. Comprehensive documentation ensures that users can effectively leverage the project's capabilities, troubleshoot issues, and find answers to their questions, ultimately increasing user satisfaction.

  3. Encouraging Collaboration: Documentation is the foundation for collaboration within the open source community. When contributors have access to accurate and up-to-date documentation, they can effectively contribute code, submit bug fixes, and improve the project's overall quality.

Best Practices for Documentation in Open Source

One of the challenges of documentation–or any form of long writing–is creating a well-organized document that doesn’t give too much information but empowers the user to get started without having a lack of understanding. Here are some tips for creating good documentation:

https://dev.to/opensauced/the-role-of-documentation-in-open-source-success-2lbn

Part of the Community

Why do people contribute?

The Debian Project has an influx of applicants wishing to become developers.[205] These applicants must undergo a vetting process which establishes their identity, motivation, understanding of the project's principles, and technical competence.[206] This process has become much harder throughout the years.[207]

Debian developers join the project for many reasons. Some that have been cited include:

  • Debian is their main operating system and they want to promote Debian[208]
  • To improve the support for their favorite technology[209]
  • They are involved with a Debian derivative[210]
  • A desire to contribute back to the free-software community[211]
  • To make their Debian maintenance work easier[212]

Debian developers may resign their positions at any time or, when deemed necessary, they can be expelled.[29] Those who follow the retiring protocol are granted the "emeritus" status and they may regain their membership through a shortened new member process.[213]

Debian has made efforts to diversify and have members represented from the community. Debian Women in 2004 was established with the aim of having more women involved in development. Debian also partnered with Outreachy, which offers internships to individuals with underrepresented identities in technology.[214][215]

https://en.m.wikipedia.org/wiki/Diversity_in_open-source_software

Researchers and journalists have found a higher gender disparity and lower racial and ethnic diversity in the open-source-software movement than in the field of computing overall, though a higher proportion of sexual minorities and transgender people than in the general United States population. Despite growing an increasingly diverse user base since its emergence in the 1990s, the field of open-source software development has remained homogeneous, with young men constituting the vast majority of developers.

Since its inception in the 1990s, as open-source software has continued to grow and offer new solutions to everyday problems, an increasingly diverse user base began to emerge. In contrast, the community of developers has remained homogeneous, dominated by young men.[3]

In 2017, GitHub conducted a survey named the Open Source Survey, collecting responses from 5,500 GitHub users. Among the respondents, 18% personally experienced a negative interaction while working on open-source projects, but 50% of them have witnessed such interactions between other people. Dismissive responses, conflict, and unwelcoming language were respectively the third, fourth, and sixth most cited problems encountered in open-source.[4]

Another study from 2017 examined 3 million pull requests from 334,578 GitHub users, identifying 312,909 of them as men and 21,510 as women from the mandatory gender field in the public Google+ profiles tied to the same email addresses as these users were using on GitHub. The authors of the study found code written by women to be accepted more often (78.6%) than code written by men (74.6%). However, among developers who were not insiders of the project, women's code acceptance rates were found to drop by 12.0% if gender was immediately identifiable by GitHub username or profile picture, with only a smaller 3.8% drop observed for men under the same conditions. Comparing their results to a meta-analysis of employment sex discrimination conducted in 2000, the authors observed that they have uncovered only a quarter of the effect found in typical studies of gender bias. The study concludes that gender bias, survivorship and self-selection bias, and women being held to higher performance standards are among plausible explanations of the results.[5]

The gender ratio in open source is even greater than the field-wide gender disparity in computing. This was found by a number of surveys:

  • A 2002 survey of 2,784 open-source-software developers found that 1.1% of them were women.[7]
  • A 2013 survey of 2,183 open-source contributors found that 81.4% were men and 10.4% were women.[8] The survey included both software contributors and non-software contributors and found that women were much more likely to be non-software contributors.[9]
  • In the GitHub's 2017 Open Source Survey 95% respondents identified as men and only 3% as women,[4] while in the same year about 22.6% of professional computer programmers in the United States were female according to the United States Bureau of Labor Statistics.[10][11]
Racial and ethnic diversity

In an 2013 article for the NPR, journalist Gene Demby considered Black people and Latinos to be underrepresented in the open source software development.[12]

  • In the GitHub's 2017 Open Source Survey the representation of immigrants, from and to anywhere in the world, was 26%.[4]
  • In the same survey, 16% of respondents identified as members of ethnic or national minorities in the country where they currently live,[4] while according to the United States Bureau of Labor Statistics, Black, Asian, and Latino people accounted for a total of about 34% of programmers in the United States in 2017.[10][11]
Sexual minority, non-binary, and transgender diversity

Among the respondents of GitHub's 2017 Open Source Survey 1% identified as transgender, 1% as non-binary, and 7% as lesbian, gay, bisexual, asexual, or another minority sexual orientation,[4] while according to a Gallup poll in conducted in the same year 4.1% of the United States population identify as LGBT.[13][11] A 2018 survey of software developers conducted by Stack Overflow found that out of their sample of 100,000, 6.7% in total identified as one of "Bisexual or Queer" (4.3%), "Gay or Lesbian" (2.4%), and "Asexual" (1.9%), while 0.9% identified as "non-binary, genderqueer, or gender non-conforming".[14]

Large personalities in open source and complicated views

Eric s Raymond

Linus torvalds

The "very seductive" moral and ethical rhetoric of Richard Stallman and the Free Software Foundation fails (Raymond), he said, "not because his principles are wrong, but because that kind of language ... simply does not persuade anybody".[24]

How Can I Contribute?

How to contribute to open source software projects

Financial Support

Donations

Sponsorship

Non profit funds

https://opencollective.com/

Open Collective is a crowdfunding platform focused on grassroots groups. It enables organizations, communities, and projects to get a legal status and raise funding through subscription or one time payment. It's particularly favoured by open source projects.[1] It currently hosts funding for thousands of open-source communities.[2]

https://www.spi-inc.org/donations/

https://en.m.wikipedia.org/wiki/Software_in_the_Public_Interest

Software in the Public Interest, Inc. (SPI) is a US 501(c)(3) non-profit organization domiciled in New York State formed to help other organizations create and distribute free open-source software and open-source hardware. Anyone is eligible to apply for membership, and contributing membership is available to those who participate in the free software community.

https://www.pledge.to/women-in-linux-4579

https://www.womeninlinux.org/

Community Support

Documentation

Feedback

Finding forums, chat apps, websites

Forums and mailing lists

Polls and feedback

Emergent strategy

Irc chatroom 

I offer, from this defensive and sacred place, a protocol for those who are most comfortable approaching movements from a place of critique, AKA, haters.

1. Ask if this (movement, formation, message) is meant for you, if this serves you.

2. If yes, get involved! Get into an experiment or two, feel how messy it is to unlearn supremacy and repurpose your life for liberation. Critique as a participant who is shaping the work. Be willing to do whatever task is required of you, whatever you are capable of, feed people, spread the word, write pieces, make art, listen, take action, etc. Be able to say: ‘“T invest my energy in what I want to see grow. I belong to efforts I deeply believe in and help shape those.”

3. Ifno, divest your energy and attention. Pointing out the flaws of something still requires pointing at it, drawing attention to it, and ultimately growing it. Over the years I have found that when a group isn’t serving the people, it doesn’t actually last that long, and it rarely needs a big takedown—things just sunset, disappear, fade away, absorb into formations that are more effective. If it helps you feel better, look in the mirror and declare: “There are so many formations I am not a part of—my non-participation is all I need to say. When I do offer critique, itis froma space of relationship, partnership, and advancing a solution.”

4. And finally, 1f you don’t want to invest growth energy in anything, just be quiet. If you are not going to help birth or raise the child, then shhhhh. You aren’t required to have or even work towards the solution, but if you know a change is needed and your first instinct when you see people trying to figure out how to change and transform is to poop on them, perhaps it is time you just hush your mouth.

Development Support

Feature requests

Pull requests

Contributions