Growing an OpenSource Community Lessons Learned from Gabby

Growing an Open-Source Community: Lessons Learned from Gabby Getz ggetz@agi. com Original slides by Patrick Cozzi

About Me Developer Cesium Committer Contributed to open formats Websites Community & Forum Open source + Geospatial Community work

What is Cesium. JS? An open-source Java. Script library for world-class 3 D globes and maps in the browser http: //cesiumjs. org/

Cesium Milestones Cesium ion launched released as open-source internal development started March 2011 April 2012 Cesium ion announced Cesium 1. 0 released August 2014 May 2016 March 2018

Community Stats (as of February 2018) 2, 862 Git. Hub stars 2, 704 twitter followers 1, 598 forum members 400+ monthly posts 3500 3000 2500 2000 1500 1000 500 Forum Posts 1. 1 8 8 4. 1. 1 2. . 1 7 12 . 1 7 10 1. 1 7 Twitter Followers 8. 7 1. 1 6. 7 1. 1 4. 1. 1 2. . 1 6 12 . 1 6 10 6 1. 1 8. 1. 1 6 Forum Members 6. 6 1. 1 4. 1. 1 2. . 1 5 Git. Hub Stars 12 . 1 5 10 5 1. 1 8. 5 1. 1 6. 5 1. 1 4. 1. 1 2. . 1 4 12 . 1 4 10 1. 1 8. 6. 1. 1 4 0

1. 1 5. 2 1. 1 7. 2 1. 1 9. 2 1. 11 12. 1. 1 1. 2 1. 1 3. 3 1. 1 5. 3 1. 1 7. 3 1. 1 9. 3 1. 11 13. 1. 1 1. 3 1. 1 3. 4 1. 1 5. 4 1. 1 7. 4 1. 1 9. 4 1. 11 14. 1. 1 1. 4 1. 1 3. 5 1. 1 5. 5 1. 1 7. 5 1. 1 9. 5 1. 11 15. 1. 1 1. 5 1. 1 3. 6 1. 1 5. 6 1. 1 7. 6 1. 1 9. 6 1. 11 16. 1. 1 1. 6 1. 1 3. 7 1. 1 5. 7 1. 1 7. 7 1. 1 9. 7 1. 11 17. 1. 1 1. 7 1. 1 3. 8 1. 18 3. Contributor Stats (as of February 2018) 41 AGI (Internal) 106 Community (External) 160 140 120 100 80 60 40 20 0 AGI contributors Community contributors

More Stats

How did we get here? How can your project get here?

Free access to source code Free redistribution Allows modifications and derived works No Discrimination Against Persons or Groups No Discrimination Against Fields of Endeavor What is open source? http: //opensource. org/docs/osd

Open Source Community founders / steering committe e committers contributors users

founders / steering committe e • Decisions early in the project’s lifetime have significant impact • Programming language • Tools • Code review, doc, tests, CI • Tip: find a young project on the rise

• • Significant and sustained contributions Often from multiple companies Merge pull requests Do releases founders / steering committe e committers

founders / steering committe e committers contributors • Now easy with Git. Hub • Sometimes just 1 contribution • Often contributors become committers • Cesium, Leaflet • How many in the past 30 days?

• Users become contributors! • Users often have their own users founders / steering committe e committers contributors users

Why contribute? What is a contribution? How to make it easy to contribute? Encouraging contributions

What is a Contribution? • Code, of course – Tests – Example code – Ecosystem projects • • Documentation and tutorials Sample data Forum participation Success stories and evangelism

Why do People Contribute? • It’s their job • Need a feature or bug fix – Often need to support a new format – Don’t want to maintain a fork • • Optimize their use case Want to do business with us Want to be good open-source citizens Want a job – AGI or elsewhere

Documentation • Chose a license • Each repository should have a README. md • Consider issue templates and pull request templates • Contributor Guide(s) • Community Code of Conduct

Contributor Guide • CONTRIBUTING. md – How to contribute to your project – Building, IDE, Code Style, Testing, Documentation… – accept less than perfect • Be transparent – Roadmap, issues, design decisions, … – “could be public” – Should you be nervous about competition? • Cesium’s CONTRIBUTING. md

Entry Points for New Contributors • Make entry points easy to find • gl. TF #456

Design for Contribution • “Plugin” points – Cesium imagery providers, data sources, geometries, … • Clean and simple design and code • Documentation • Automated checks – Build, test, lint

Community Forum • Have one central community forum – We use Git. Hub for issue tracking and the forum for questions • Gather feature requests and user priorities, bug reports, and showcases or examples • Cross link everything – Create an archive of links

Feature Requests and Issue Triage • Sometimes, you have to say no – Unreasonable request – Hard to maintain – Just not enough time • Be nice and validate requests, explain why not • Asking when or for something low-priority is a good time to seek a contribution

Respond Promptly • Keep tight iteration loop – Increases chance of continued engagement • Wrong answer is better than no answer • …But no too promptly – Give community chance to engage

Contributions Beyond Code • • Conferences, talks, & workshops Blog posts Tutorials Demos & showcases

Make Contributors Rockstars • Highlight their work; they deserve it • gl. TF example – repo, twitter, news

Feature Success Stories http: //cesiumjs. org/for-google-earth-developers. html

Seed It • Ported over 30 Google Earth examples to Cesium http: //cesiumjs. org/for-google-earth-developers. html

Release Often. Why? • Cesium had monthly releases since August 2012 – – – – 1. 17: 40% terrain and imagery memory improvement 1. 16: 35% terrain and imagery performance improvement 1. 15: gl. TF 1. 0 (3 D models) 1. 14: i. OS compatibility improvements 1. 13: Ground clamp and z-order polygons 1. 12: Mapbox imagery tiles 1. 11: Up to 50% terrain and imagery performance improvement 1. 13 1. 12

Licenses Tips • Avoid creating a new license • Include a LICENSE. md file in your project • Know the licenses of third-party libraries

CLAs

Contributor License Agreements (CLA) • Terms under which IP is contributed to a project. • Used by Google (Chrome, Android, …), Facebook, Open-Source Foundations, and all major projects I know of • Protects you, the project, and the users • Example terms: – “The project can use this code; I’m allowed to contribute it; I keep the copyright; I provide a patent grant” • Apache Foundation CLA – Corporate: https: //www. apache. org/licenses/cla-corporate. txt – Individual: https: //www. apache. org/licenses/icla. txt

CLAs • Are CLAs a barrier to entry? – In Cesium, CLAs were hard to get signed at first • Big companies took months – Now that Cesium is established, CLAs come in all the time

Pull Requests without CLAs • Is a pull request good enough? – Yes, for something that isn’t IP, e. g. , a typo fix • See https: //cartodb. com/contributing/ – No for IP since it doesn’t ensure the contributor had the right to contribute

CLA Tips • Ask your employer before you sign • Use them in your project – CONTRIUBTING. md – Kindly ask contributors to sign

Challenges • You have to maintain contributed code • It's really hard to find time to review contributor pull requests that aren't a priority, especially big ones • “Open source your code, not your time”

Big Ideas • Users become contributors…because it helps them • Have enough documentation… contributors will follow it • Provide entry points…that are easy • Design for contribution • Respond promptly…to get contributors engaged • Make contributors rockstars

Why Contribute? (for students)

Fill a Real Need in a Visible Way • Advice from Rich Geldreich (Binomial, formerly Unity, Valve, and Microsoft) – Find (or create) an open source project that game devs use, and contribute to it in a very visible way. For example, we [Valve] recently hired the author/maintainer of the SDL library. Google actively recruits devs who write libraries they use. Intel hires open source driver devs that contribute to MESA. – Identify a need and fill it with an open source project (that uses a license liberal enough that devs can actually use it). For example, right now a lot of teams are trying to target Open. GL ES, Open. GL, and D 3 D 9/11 and are struggling with how to write a single set of shaders that can be translated/compiled to all these targets.

Advice for Students • Contribute to a young rising project that interests you – Start with a small contribution – Consider a project ran by a company you want to join – Engage the contributors • Write useful open-source tools • Have a strong Git. Hub presence – Profile page – README. md for each project – Cross-reference your resume, Linked. In, Git. Hub, etc. – Git. Hub alone is not the new resume

Reading • Producing Open Source Software, Karl Fogel • Art of Community, Jono Bacon • Hints for successfully managing an opensource project, David Catuhe, Babylon. JS • Healthy Open Source, Mikeal Rogers, Node. js • Polite Technology, Tom Mac. Wright

Thanks! Questions? Contact me Gabby Getz ggetz on github ggetz@agi. com http: //cesiumjs. org/jobs Full time and summer internships Cesium team is hiring!

Bonus Slides

CIS 565 Survey Results – Open Source

CIS 565 Survey Results – Open Source • “I have my personal website, and I have the github link on it. Employers are interested in the projects, and we had a great discussion. It's actually not about the coding part. I think code portfolio is not that popular when interviewing a candidate. The key part is still about the interview itself. ”

CIS 565 Survey Results – Open Source • “One of the companies I interviewed specifically went through my code samples on git and asked me questions based on that” • “A lot of companies are asking for my code sample on git. ”

What is Open Source? • Access to the source code, and more: • Free? Beer, Kitten, Freedom

First community contribution 0 июн 2013 апр 2013 фев 2013 GSo C фев 2016 дек 2015 окт 2015 авг 2015 июн 2015 10 апр 2015 фев 2015 дек 2014 окт 2014 авг 2014 июн 2014 апр 2014 фев 2014 дек 2013 окт 2013 авг 2013 30 дек 2012 40 окт 2012 авг 2012 июн 2012 апр 2012 фев 2012 Contributor Stats (as of February 2018) • 98 contributors – 32 AGIers (founding company) 90 80 70 60 50 Cesium AGI’s Cesium Lab 1. 0 Total AGIers Community 20 GSo C deprecation GE

Contributor Stats Monthly contributors committing to master: 15 13 4 4 2 1 9 8 February 20 - March 20 - April 20 100% 90% 80% 70% 60% 50% 40% 30% 20% 10% 0% # Cesium team # Other AGIers # Community

How to Contribute

How to Contribute to a Project • Find something small to do – A feature/bug you need – Browse the issue tracker – Browse the roadmap – Consider contributing documentation – Ask on the forum • Politely and concisely • Tip: your new project should have one forum at most – Ask the maintainer – Tip: projects love contributions • “Fork” use to be negative, e. g. , XEmacs and GNU Emacs

How to Contribute to a Project • Make the small change – Read the getting started guide • Example: https: //github. com/Analytical. Graphics. Inc/cesium/blob/master/CONTRIBUTING. md – Follow all the code/test/doc standards – Ask questions after researching – Tip: your own projects should also have a guide

How to Contribute to a Project • Open a pull request – Sign the CLA (more on this soon) – Link to the issue and provide a concise description

How to Contribute to a Project • Work with a committer to merge the pull request – Code reviews are about code, not people – Why Should I Care What Color the Bikeshed Is? • http: //bikeshed. com – Be prompt – Remember they have to maintain it – Tips: https: //github. com/Analytical. Graphics. Inc/cesium/wiki/Code-Review. Tips

More Tips • • Start with one public forum Default to the forum. Minimize private email Always ask for feedback. Cesium in 2016 Have a Code of Conduct Consider Issue Templates Use Google Alerts Conference and Meetup talks Be careful about corporation ownership

Open Standards

Code

Code Formats CZML time-dynamic scenes

Code Formats CZML time-dynamic scenes quantized-mesh terrain

Consortium for open standards Code Formats CZML time-dynamic scenes quantized-mesh terrain 3 D models

Consortium for open standards Code Formats CZML time-dynamic scenes 3 D models quantized-mesh terrain Massive 3 D geospatial datasets

Interop with Open Standards Servers Open Standard s Clients • Interop between different software • Open or closed source • No vendor lock-in. Why? • Compete on a better product, service, price, …

Licenses • • MIT BSD 3 -clause Apache 2. 0 GPL • http: //opensource. org/licenses

Licenses Tips • Avoid creating a new license. Why? • Include a LICENSE. md file in your project • Know the licenses of third-party libraries. Why?

CLA Stats (as of April 2016) 35 30 25 20 # New Individual CLAs Only 15 # New Individual Contributors 10 5 8 7 0 2012 2013 2014 2015 2016 YTD 6 5 # Corporate CLAs Only 4 # New Corporate Contributors 3 2 1 0 Thanks to @tomped 1 for all the graphs! 2012 2013 2014 2015 2016 YTD

Developer Certificate Of Origin (DCO) • Signed-off commits • Used by the Linux kernel • We tried it in Cesium. No one used it • http: //elinux. org/Developer_Certificate_Of_Origin

Trivia – With Giveaways! • Two reasons why to contribute to opensource? • Two more reasons? • A benefit of open standards? • A difference between the MIT and BSD 3 clause licenses? • A difference between MIT and Apache 2. 0? • Two reasons a CLA is important?

Contributor Stats (as of April 2016) • Contributors per month 20 AGI’s Cesium Lab 18 16 14 12 Total 10 AGIers 8 6 4 Community GSo C Why? CIS 399 2 0 фев 2012 фев 2013 фев 2014 фев 2015 фев 2016

Why is Cesium Open Source? • Came from dev team, not business folks • Pitch influenced by Innovation Happens Elsewhere • Pitch – 3 D is commodity (we were wrong!) • Give away commodity to sell value-add – – – Broaden the market and sell into new verticals All successful Java. Script libraries are open source It will be new, fun, and exciting Get external contributions Now able to use open-source channels for outreach

Ideas for Tweets • • • New Cesium releases Retweets mentioning @Cesium. JS New showcases and Cesium blog posts Upcoming Cesium features External contributions, especially someone's first contribution Relevant conference news, code sprints, events, etc. Useful Cesium forum threads gl. TF news. Likewise: 3 D Tiles, CZML, and quantized-mesh news AGI new hires and Cesium-related job openings (AGI or others) Sparingly, milestones such as number of followers, stars, unit tests, lines of code, etc. Schedule tweets with Tweet. Deck.

How much time do we spend? • Twitter: < 1 hour a week • Forum: ~1 hour a day • Showcases/editing: – ~10 hours a week – Writing blogs: varies greatly • Conferences: – ~2 months a year (for me alone) Plus the WHOLE TEAM!

Why do Developers Contribute? • It’s their job • Beyond the core team…

Why do Developers Contribute? • Need bugs fixed for their own project – Examples: doc fixes, geodesics

Why do Developers Contribute? • Need features for their own project – Support their/new formats • Examples: TMS, URL template imagery – New version of a format • Example: terrain normals (internal user) – Missing features • Example: from. Cross. Product (internal user) – Support their build system • Example: browserify, webpack

Why do Developers Contribute? • Optimize their use cases – Examples: model cache, triangulation

Why do Developers Contribute? • Want to be good open-source citizens – Examples: Cesium 1. 0, doc fixes

Why do Developers Contribute? • Want to do business with us – But don't want us to say more

Why do Developers Contribute? • Required for GSo. C, SOCIS, CIS 399 – Examples: KML, GPX, CZML

Why do Developers Contribute? • Want to apply for a job – GSo. C. Surprisingly, have not seen this for full -time positions

Why do Developers Contribute? • Don't want to maintain a fork

Why do Developers Contribute? • Doc, tutorial, showcase, guest blog post – Want to build a relationship with us – Want the press

Bonus: Tips to get Contributions • Grow the user community to grow the contributor community • Make contributors rockstars - blogs, forum, twitter, etc. • Use CLAs – High barrier to entry at first, now we get 1+ a week. • Document standards, most contributors read them • “Plugins” get most of the contributions • It's really hard to find time to review contributor pull requests that aren't a priority, especially big ones • Only merge code you are willing to maintain it
- Slides: 82