/
Growing an Open-Source Community: Growing an Open-Source Community:

Growing an Open-Source Community: - PowerPoint Presentation

mitsue-stanley
mitsue-stanley . @mitsue-stanley
Follow
343 views
Uploaded On 2019-12-19

Growing an Open-Source Community: - PPT Presentation

Growing an OpenSource Community Lessons Learned from Gabby Getz ggetz ggetzagicom Original slides by Patrick Cozzi About M e Open source Geospatial Community work Developer Cesium Committer Websites ID: 770995

contribute open cesium source open contribute source cesium code developers project contributors contributor community time org github pull licenses

Share:

Link:

Embed:

Download Presentation from below link

Download Presentation The PPT/PDF document "Growing an Open-Source Community:" is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.


Presentation Transcript

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

About MeOpen source + GeospatialCommunity work Developer Cesium Committer Websites Community & Forum Contributed to open formats

What is CesiumJS?An open-source JavaScript library for world-class 3D globes and maps in the browserhttp://cesiumjs.org/

Cesium MilestonesMarch 2011April 2012August 2014May 2016internal development startedreleased as open-sourceCesium 1.0 releasedCesium ion announced March 2018 Cesium ion launched

Community Stats (as of February 2018)2,862GitHub stars2,704 twitter followers 1,598 forum members 400+ monthly posts

41AGI (Internal)106Community (External) Contributor Stats (as of February 2018)

More Stats

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

What is open source?Free access to source codeFree redistributionAllows modifications and derived worksNo Discrimination Against Persons or GroupsNo Discrimination Against Fields of Endeavorhttp://opensource.org/docs/osd

userscontributors committers founders / steering committee Open Source C ommunity

founders / steering committeeDecisions early in the project’s lifetime have significant impactProgramming languageToolsCode review, doc, tests, CITip: find a young project on the rise

committersfounders / steering committeeSignificant and sustained contributionsOften from multiple companiesMerge pull requestsDo releases

contributorscommittersfounders / steering committeeNow easy with GitHubSometimes just 1 contribution Often contributors become committers Cesium, LeafletHow many in the past 30 days?

userscontributors committers founders / steering committee Users become contributors! Users often have their own users

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

What is a Contribution?Code, of courseTestsExample codeEcosystem projectsDocumentation and tutorialsSample dataForum participationSuccess stories and evangelism

Why do People Contribute?It’s their jobNeed a feature or bug fixOften need to support a new formatDon’t want to maintain a forkOptimize their use caseWant to do business with usWant to be good open-source citizensWant a job – AGI or elsewhere

DocumentationChose a licenseEach repository should have a README.mdConsider issue templates and pull request templatesContributor Guide(s)Community Code of Conduct

Contributor GuideCONTRIBUTING.mdHow to contribute to your projectBuilding, IDE, Code Style, Testing, Documentation…accept less than perfectBe transparentRoadmap, issues, design decisions, …“could be public”Should you be nervous about competition?Cesium’s CONTRIBUTING.md

Entry Points for New ContributorsMake entry points easy to findglTF #456

Design for Contribution“Plugin” pointsCesium imagery providers, data sources, geometries, …Clean and simple design and codeDocumentationAutomated checksBuild, test, lint

Community ForumHave one central community forumWe use GitHub for issue tracking and the forum for questionsGather feature requests and user priorities, bug reports, and showcases or examplesCross link everything – Create an archive of links

Feature Requests and Issue TriageSometimes, you have to say noUnreasonable requestHard to maintainJust not enough timeBe nice and validate requests, explain why notAsking when or for something low-priority is a good time to seek a contribution

Respond PromptlyKeep tight iteration loopIncreases chance of continued engagementWrong answer is better than no answer…But no too promptly Give community chance to engage

Contributions Beyond CodeConferences, talks, & workshopsBlog postsTutorialsDemos & showcases

Make Contributors RockstarsHighlight their work; they deserve itglTF example – repo, twitter, news

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

Seed ItPorted over 30 Google Earth examples to Cesiumhttp://cesiumjs.org/for-google-earth-developers.html

Release Often. Why?Cesium had monthly releases since August 20121.17: 40% terrain and imagery memory improvement1.16: 35% terrain and imagery performance improvement1.15: glTF 1.0 (3D models)1.14: iOS compatibility improvements1.13: Ground clamp and z-order polygons1.12: Mapbox imagery tiles1.11: Up to 50% terrain and imagery performance improvement1.131.12

Licenses TipsAvoid creating a new licenseInclude a LICENSE.md file in your projectKnow 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 ofProtects you, the project, and the usersExample terms:“The project can use this code; I’m allowed to contribute it; I keep the copyright; I provide a patent grant”Apache Foundation CLACorporate: https://www.apache.org/licenses/cla-corporate.txtIndividual: https://www.apache.org/licenses/icla.txt

CLAsAre CLAs a barrier to entry?In Cesium, CLAs were hard to get signed at firstBig companies took monthsNow that Cesium is established, CLAs come in all the time

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

CLA TipsAsk your employer before you signUse them in your projectCONTRIUBTING.mdKindly ask contributors to sign

ChallengesYou have to maintain contributed codeIt'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 IdeasUsers become contributors…because it helps themHave enough documentation… contributors will follow itProvide entry points…that are easyDesign for contributionRespond promptly…to get contributors engaged Make contributors rockstars

Why Contribute?(for students)

Fill a Real Need in a Visible WayAdvice 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 OpenGL ES, OpenGL, and D3D9/11 and are struggling with how to write a single set of shaders that can be translated/compiled to all these targets .

Advice for StudentsContribute to a young rising project that interests youStart with a small contributionConsider a project ran by a company you want to joinEngage the contributorsWrite useful open-source toolsHave a strong GitHub presenceProfile pageREADME.md for each projectCross-reference your resume, LinkedIn, GitHub, etc.GitHub alone is not the new resume

ReadingProducing Open Source Software, Karl FogelArt of Community, Jono BaconHints for successfully managing an open-source project, David Catuhe, BabylonJSHealthy Open Source, Mikeal Rogers, Node.jsPolite Technology, Tom MacWright

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

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

Contributor Stats (as of February 2018)98 contributors32 AGIers (founding company)FirstcommunitycontributionGSoC GSoC GE deprecation Cesium 1.0 AGI’s Cesium Lab

Contributor StatsMonthly contributors committing to master:1513

How to Contribute

How to Contribute to a ProjectFind something small to doA feature/bug you needBrowse the issue trackerBrowse the roadmapConsider contributing documentationAsk on the forumPolitely and conciselyTip: your new project should have one forum at mostAsk the maintainerTip: projects love contributions“Fork” use to be negative, e.g., XEmacs and GNU Emacs

How to Contribute to a ProjectMake the small changeRead the getting started guideExample: https://github.com/AnalyticalGraphicsInc/cesium/blob/master/CONTRIBUTING.mdFollow all the code/test/doc standardsAsk questions after researchingTip: your own projects should also have a guide

How to Contribute to a ProjectOpen a pull requestSign the CLA (more on this soon)Link to the issue and provide a concise description

How to Contribute to a ProjectWork with a committer to merge the pull requestCode reviews are about code, not peopleWhy Should I Care What Color the Bikeshed Is?http://bikeshed.comBe promptRemember they have to maintain itTips: https://github.com/AnalyticalGraphicsInc/cesium/wiki/Code-Review-Tips

More TipsStart with one public forumDefault to the forum. Minimize private emailAlways ask for feedback. Cesium in 2016Have a Code of ConductConsider Issue TemplatesUse Google AlertsConference and Meetup talksBe careful about corporation ownership

Open Standards

Code

FormatsCodeCZMLtime-dynamic scenes

FormatsCodeCZMLtime-dynamic scenesquantized-meshterrain

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

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

Interop with Open StandardsOpen StandardsServersClientsInterop between different softwareOpen or closed source No vendor lock-in. Why? Compete on a better product, service, price, …Stay ahead and innovate

LicensesMITBSD 3-clauseApache 2.0GPLhttp://opensource.org/licenses

Licenses TipsAvoid creating a new license. Why?Include a LICENSE.md file in your projectKnow the licenses of third-party libraries. Why?

CLA Stats (as of April 2016)Thanks to @tomped1 for all the graphs!

Developer Certificate Of Origin (DCO)Signed-off commitsUsed by the Linux kernelWe tried it in Cesium. No one used ithttp://elinux.org/Developer_Certificate_Of_Origin

Trivia – With Giveaways!Two reasons why to contribute to open-source?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 monthGSoCAGI’s Cesium LabWhy? CIS 399

Why is Cesium Open Source?Came from dev team, not business folksPitch influenced by Innovation Happens ElsewherePitch3D is commodity (we were wrong!)Give away commodity to sell value-addBroaden the market and sell into new verticalsAll successful JavaScript libraries are open sourceIt will be new, fun, and excitingGet external contributionsNow able to use open-source channels for outreach

Ideas for TweetsNew Cesium releasesRetweet tweets mentioning @CesiumJSNew showcases and Cesium blog postsUpcoming Cesium featuresExternal contributions, especially someone's first contributionRelevant conference news, code sprints, events, etc.Useful Cesium forum threadsglTF news. Likewise: 3D Tiles, CZML, and quantized-mesh newsAGI 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 TweetDeck.

How much time do we spend?Twitter: < 1 hour a weekForum: ~1 hour a dayShowcases/editing:~10 hours a weekWriting blogs: varies greatlyConferences:~2 months a year (for me alone)Plus the WHOLE TEAM!

Why do Developers Contribute?It’s their jobBeyond the core team…

Why do Developers Contribute?Need bugs fixed for their own projectExamples: doc fixes, geodesics

Why do Developers Contribute?Need features for their own projectSupport their/new formatsExamples: TMS, URL template imageryNew version of a formatExample: terrain normals (internal user)Missing featuresExample: fromCrossProduct (internal user)Support their build systemExample: browserify, webpack

Why do Developers Contribute?Optimize their use casesExamples: model cache, triangulation

Why do Developers Contribute?Want to be good open-source citizensExamples: Cesium 1.0, doc fixes

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

Why do Developers Contribute?Required for GSoC, SOCIS, CIS 399Examples: KML, GPX, CZML

Why do Developers Contribute?Want to apply for a jobGSoC. 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 postWant to build a relationship with usWant the press

Bonus: Tips to get ContributionsGrow the user community to grow the contributor communityMake contributors rockstars - blogs, forum, twitter, etc.Use CLAsHigh barrier to entry at first, now we get 1+ a week.Document standards, most contributors read them“Plugins” get most of the contributionsIt's really hard to find time to review contributor pull requests that aren't a priority, especially big onesOnly merge code you are willing to maintain it