whose source code is freely visible • Software that can be run by anyone • Software that can be modified by anyone • Software that can be redistributed with changes • Software developed in an open, decentralized fashion 5
software (50s & 60s) was mostly collaborative and public domain • With the rise of personal computing, restrictive licensing began to appear • Hobbyists and hackers flowered into the free software movement: GNU, Linux running parallel to mainstream • New DVCS (like git) and other collaborative tools proved the effectiveness of open source development model • Corporations now regularly engage in producing and contributing to open source software 11
And ideologies of freedom. But what about businesses trying to make money? • Why constantly reinvent the wheel? • Compete on your product, not the machinery you use • Build communities to help make your ideas better • By making certain things open, we all benefit (like public infrastructure) 12
Distributed version control (git) • Communication and project organization among maintainers • Communication among users and maintainers • Method for reviewing and accepting changes • CI systems for building and testing changes • Distribution and release mechanisms • Marketing methods • A legal license • A community guideline or code of conduct 19
code quality, code review, onboarding new contributors, and keeping the project healthy • Contributor • Contributes code or documentation from time to time • User 20
are more than just code. Most projects live or die based on the community • Some open source projects are so simple that they can be called "done". They don't need much of a community. • Most projects are constantly growing and solving new problems. For that you need a strong community. 22
openness. Not just open source but open process. • Make it easy to contribute. • Minimize amount of process necessary for landing new contributions. (Use CI, linting tools, auto-review, etc…) • Keep it balanced between strictness of review and giving a new contributor a ‘win’. • Make sure there’s a clear path to becoming a committer. • Reward and recognize community efforts. • Build a safe and welcoming community. 23
can’t pay anyone to look through poorly organized code. You want happy volunteers! • Prioritize readability and modularity. This is good anyways and helps people onboard to your codebase quicker. • Ensure your code is documented and that there are READMEs for developers in every folder. • Create developer-specific documentation. 24
managed? How are decisions made? Who’s in charge? • There are different modes, from dictatorship to oligarchy and beyond. They can all work in different circumstances. • Whatever governance model you have, make sure you are transparent about it. • …dictatorships don’t get lots of contributions, usually! 25
source projects can be messy (FB’s patent clause on React). • Open source should be neutral territory, not a battleground. • Non-profit foundations can help projects get competing companies’ support. • The benefits and dangers of paid maintainers 26
of “inner source”. • The open source development model is a good one, even if you’re not producing open source software. • You can run internal projects as though they were open source for good intra-company collaboration. • Be mindful about what’s your core competency and what’s not, that you might want to release to the world. 27
Communication between Appium developers • Discourse (discuss.appium.io) • Communication between users helping one another • Announcements to the community • Twitter • Announcements and community engagement 32
the community first and foremost • Picked an accessible language (JS) • Made it easy and fun for others to contribute • Got involved with the JS foundation for neutral non-profit ownership • Stayed mostly on top of user issues; some response is better than none 33
important skill to have as a modern developer • There are many reasons to consider an open source model, even for internal projects. Open source can be mutually beneficial even for competing companies • The real value of an open source project is the community and the maintainability of it, not the code • Do you rely on open source projects? See if you can give back! I’m sure a lot could use Chinese translations… 34