Resources
One thing’s for certain, with open source software, there’s always another link to click. I hope these pages prepared you to dive in along the spectrum of engagement. If you need a little inspiration, check out these additional destinations.
More info, updates, resources, and errata at approachableopensource.com
Open source
Read how the Netscape Navigator browser was open sourced, before the term even existed. Collaboratively written by Jim Hamerly and Tom Paquin with Susan Walton within Open Sources: Voices from the Open Source Revolution. (https://www.oreilly.com/openbook/opensources/book/netrev.html)
Read Christine Peterson’s full account of coining the term open source. (https://opensource.com/article/18/2/coining-term-open-source-software)
Watch Jacob Thornton ad-lib the history of the open source software and how he got caught up in the wrong value exchanges during his own career. Stay for the cute puppy analogy. (https://www.youtube.com/watch?v=UIDb6VBO9os)
Matt Rickard defines some of the open source postures businesses adopt and their motivations. (https://matt-rickard.com/short-taxonomy-of-open-source-strategies)
Domenic Denicola outlines the problems with the annual Hacktoberfest event wherein the value exchanges are incongruent between maintainer and contributor, leading to low-quality pull request spam. (https://blog.domenic.me/hacktoberfest/)
See class-act governance from the Moment.js team in outlining reasons not to use their project anymore. (https://momentjs.com/docs/#/-project-status/)
View all the free and open source licenses as tracked by the Linux Foundation, along with their status with the Free Software Foundation or Open Source Initiative. (https://spdx.org/licenses/)
Read the essays Mike Pennisi thoughtfully articulated about the seven year long relicensing peril the JSHint project underwent. The balance of empathy, introspection, and acumen is what I hope to see more of in the communities I engage in. (https://mikepennisi.com/blog/2020/you-may-finally-use-jshint-for-evil/)
Check out the FOSS Funders, a “group of companies working together to make it weird not to fund Free and Open Source Software (FOSS).” (https://fossfunders.com/)
Learn about Contributor License Agreements and Developer Certificates of Origin, and how they differ from one another. You might choose to use one in your own projects, and before long will encounter them in the wild too. (https://opensource.com/article/18/3/cla-vs-dco-whats-difference)
Producing Open Source Software by Karl Fogel is a fantastic read and about three and a half times longer than Approachable Open Source. If I hadn’t had a target wordcount in mind at the outset, I could see any writing on this subject sprawling towards those lengths. You’re sure to find great insight there, and I love the emphasis on accessible translations and formats. (https://producingoss.com/)
Community
Perspectives on the effectiveness of protest via “inconveniencing” the public. Brandon Terry put it best within the article: “”I think the best protests are the ones that teach us about the injustices that they’re trying to attack.” (https://www.wgbh.org/news/post/fine-art-inconveniencing-public)
Sameera Kapila writes extensively on broadening community within Inclusive Design Communities (https://abookapart.com/products/inclusive-design-communities ).
Inclusive 101 by Microsoft Design is a go-to primer on the subject of accessibility, and how inclusive design benefits everyone. I’ve taken to heart the situational impairments they point out, like high-contrast outdoor environments or one-handed new parents juggling a baby. (https://download.microsoft.com/download/b/0/d/b0d4bf87-09ce-4417-8f28-d60703d672ed/inclusive_toolkit_manual_final.pdf, PDF)
Barak Obama reminds us of citizens, “ordinary men and women, determined to forge their own future—who throughout history have sparked all the great change and progress.” (https://obamawhitehouse.archives.gov/blog/2014/09/23/most-important-title-citizen-president-obama-importance-civil-society)
Michelle Barker’s Humane Web Manifesto builds on the citizen comment, reminding us of netizens. There isn’t a great term for open source citizens, but I’ll leave this here. (https://humanewebmanifesto.com/) and (https://en.wikipedia.org/wiki/Netizen)
Technology
Pattern Lab by Brad Frost, Dave Olsen, and open source contributors helps you design, create, test, document, and distribute component-based patterns. It was storybook before it existed. (https://patternlab.io/)
Atomic Design by Brad Frost is a design and development methodology that encourages web developers to compose hierarchies of larger and larger components. (https://atomicdesign.bradfrost.com/)
The CLI and package registry known as npm is not in fact and acronym for Node.js package manager. (https://github.com/npm/cli#is-npm-an-acronym-for-node-package-manager)
Read more about the history of the World Wide Web and open standards on MDN’s brief primer on the subject. Of particular interest is the “don’t break the web” section as it applies to old projects. (https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web/The_web_and_web_standards#dont_break_the_web)
Check out this xkcd comic that calculates the return on investment for automating a task, based on the time saved and how often you need to do it. Some things just aren’t worth automating if it takes you too long to implement. (https://xkcd.com/1205/)
Read the W3C’s Web Platform Design Principles, especially the Priority of Constituencies. (https://www.w3.org/TR/design-principles/#priority-of-constituencies)
Managing dependencies is greatly aided by tools designed to integrate into your workflow. I recommend:
-
ncu: a command line interface, like the built in npm outdated command, but with more configurability (https://www.npmjs.com/package/npm-check-updates)
-
Dependabot: GitHub’s integrated tool to create pull requests for new versions of dependencies and vulnerabilities (https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/about-supply-chain-security#what-is-dependabot)
-
Snyk: similar to dependabot, but independent of GitHub (https://snyk.io/)
I’ve used and seen these website options work well for open source documentation sites (omitting the skinned GitHub pages approach, which only renders a project’s README):
-
Eleventy: static site generator with dozens of deployable templates, many plugins, no heavy-handed conventions, and an A+ community (https://www.11ty.dev/)
-
Nextra: Markdown and React-based static site with built-in navigation, dark mode, code highlighting, internationalization, and simple search (https://nextra.vercel.app/). I like this is as a sweet-spot. Kinda heavy under the hood though.
-
Docusaurus: an advanced site builder, with big differentiators stemming from documentation versioning and enhanced customization (https://docusaurus.io/)
-
I omit Jekyll and Hugo here only because they don’t have the best Windows support last I looked.
Documenting change is aided by tooling that can guide our semver-compliance, but all require setup and adherence to reach their fullest potential. Consider these tools when you want to level up your commit-ment:
-
Commitizen: a CLI, if you insist on documenting change at the commit level (https://github.com/commitizen/cz-cli)
-
auto: use pull requests to set semver and create CHANGELOG entries. Extensive plugin framework. GitHub only. (https://github.com/intuit/auto)
-
Changesets: use a structured markdown file with each pull request or merge request. Refined form of the concept introduced with auto, as release notes are now reviewable too. (https://github.com/changesets/changesets)
Want to dive deeper into Git? Check out Git for Humans by David Demaree. Like all ABA books, this is one resource you can commit to without much conflict. (https://abookapart.com/products/git-for-humans)
We talk testing a lot within the book—but can’t quite devote direct attention to it. This primer from BrowserStack on the types of testing helps differentiate when to use each approach. (https://www.browserstack.com/guide/types-of-testing)
The Testing Library project aims bridge the gap between unit and functional test suites, with support for languages and libraries like React, Vue, Angular. Their API mimics user behavior, and discourages any introspection of internals. Their motto is “the more your tests resemble the way your software is used, the more confidence they can give you.” (https://testing-library.com/docs/)
Random
Sonder feels a lot like the unofficial etymology of the déjà vu-like Baader-Meinhof phenomenon. (https://www.dictionary.com/e/tech-science/baader-meinhof-phenomenon/)
I really dig the approach Maggie Appleton takes to her writing, where ideas are nurtured from seedling to mature evergreen thoughts. This is known as digital gardening, and involves formulating ideas in the open instead of the big ol’ blog post reveal against the social-media firehose. Maggie also writes a history of digital gardening, which is a fantastic read. (https://maggieappleton.com/garden-history)