class: center, middle # Money doesn`t help much – Support projects with contributions ### Niklas Merz ??? My name is Niklas and I wan't to talk about why money doesn't always help open source projects. In the excellent talk just a few minutes ago we hear a lot about the big money in open source. **I want to talk more about the individual contributors and the value they provide which just cannot be bought with money.** But you should think about contributing to your favorite projects and help new contributors of projects you are maitaining. --- # Agenda 0. Why this talk? 1. Facts about me 2. How many people get into Open Source 3. Getting invested 4. Advice for first time contributors 5. Onboarding new community members 6. Types of contributors 7. Is the project sustainable? ??? * Roadmap for this talk * Structured like the typical journey of open source contributors --- # Why * Critical look at every open source project you love * Many projects have only a few maintainers * Users and maintainers should be aware of the state of projects and *investments* made or required ??? * Open source software has been part of my day job and personal projects for years * Over the years people asked me how to support the projects I work on * Many projects, also seemingly big ones could need some more maintainers **Start discussions about common issues in projects** **Encourage us as maintainers to think again how we onboard new contributors as it's easy to loose the perspective of newcomers** --- # Facts about me 1. Apache Cordova User 2. Minor Apache Cordova contributor 3. Active Committer & PMC 4. No longer Cordova app developer 5. I suck at CSS 6. This presentation is styled using CSS ??? * Give some context * I work with Apache Cordova which is a framework for **building mobile apps using web technologies** * **Previous job** introduced to developing apps this way * We got more and more advanced users and I started contributing * I became a committer and PMC member * I no longer build apps but I'm part of the Cordova project * Fun fact CSS --- background-image: url(img/holding-back.png) .footnote[ https://us11.campaign-archive.com/?e=ca69183c1b&u=9d7ced8c4bbd6c2f238673f0f&id=f07f659a95 ] ??? * The GitHub ReadME project did a survey what's peopel holding back from contributing * Lack of time like me or other maintainers I talk to * **Imposter syndrome and finding a project can be addressed by making it easier to get started and make people feel welcome** --- # First contact * Add an open source dependency to their project * Discover a bug in an open source project * Need a new feature **What to do now?** ??? Let's start the open source journey * Ususally people become users first by adding a dependency to their project * After some time they discover a bug or need a new feature Ask themselves what to do now if their issue get's no response or fix --- # Advice for first time contributors * Be kind * Be patient * Read documentation: A lot of common questions should already be documented "somewhere" * If in doubt, dont' be afraid to ask * **You need to build up trust, reputation, merit** ??? This is a good time to stop and think about first time contributors **When I get asked about getting into open source..** * Be kind * Be patient * Look hard for documentation. It's not always easy to find * Keep in mind open source requires trust and you need to show your continued interest --- # Support first timers as a maintainer * Be kind * Be patient * Respond in a timely manner to keep motivation high and make contributions feel welcome ??? The other perspective as maintainers It's basically the same Critical: But dont let contributors wait too long for feedback **Motivation is the priority because Motiviation leads to productivity** --- # How people get invested ### The open source project is now critical for their business * Product is built on top of open source software * Important pieces of their software, tooling or infrastructure stack is open source -> **Issues arise that threaten their business** * Sponsoring the core maintainers if possible * Find someone to pay to do the work -> **Think about doing the work themselves** ??? * People get invested if a project becomes critical for their business * Example my old job needed Cordova to keep up with the mobile platforms to keep on doing new releases * Projects have security issues * You might notice. Release cadence is slowing down and issues are not fixed in a timely manner -> They need help for their issues. First instict is to find someone to pay or do the work themselves --- # How to support here * Make paid support options visible * Contributors working as freelancers * Consulting Companies * Communicate that donations to the ASF cannot be used for development work * Good and easy to find documentation on how to contribute * Avoid too many "uncommon" steps and prefer existing tooling ??? # Make support options available * Apache PLC4X has a site with companies available for paid support * Apache IoTDB has a company offering support contracts * Freelancers in the maintainer group # ASF donations * Targeted donation to our ASF project cannot be spent it for development hours # Documentation & Process * Make it easy to find and understand the process for new contributors * Avoid too many uncommon steps and prefer existing tooling like the usual workflows used on GitHub etc. --- # From first time to casual contributor * Contributors see value in their work for the project * They learn to navigate the waters * Quality contributions * Continued interest and participation ??? * Turnover point to make first timers feel welcome and keep them around * They start to understand the process and get things done * They show continued interest and participation This is where PMCs at Apache think about making someone a commiter or PMC --- # Onboarding new community members * Check and tell them if their contribution is vaulable, maintainable and documented in line with the project * Get a feel if a new contributor works in the "open source spirit" * Can be trusted to complete task from start to finish * Listen to feedback * Ask for reviews and feedback before doing something possibly breaking * Show trust early * Review work and give advice * Solid testing framework for fast feedback loops and safe code changes * Documentations for internal dependencies and processes ??? **Getting to know a community can be just as hard as getting into the code** * For me someone stepped up started talking to me in Slack * Offer guidance to keep new contributors motivated and help them be productive * Get a feel if a new contributor works in the "open source spirit" * Can be trusted to complete task from start to finish * Listens to feedback * Asks for reviews and feedback before doing something possibly breaking * Show trust early * Show how things are done and review work * Good testing helps to make sure new contributions are not breaking things --- class: center, middle # Get to know the people to understand the state of the project ??? * Observe a project a while to get to know the actors and activity happening there over a longer period of time * If I like or use a project -> I subscribe to the important channels & pay attention --- class: center, middle ## Types of maintainers ??? * From my experience there are common types of maintainers * Person can be more than one type * Good to know what types of people are needed to run the project * **Names are totally made up by me** --- ### Silent hero * Stays in background * Does a lot of coding work * Thankless tasks: * Releases * Updates, refactorings * Documentation * .... * Drives progress ??? From my experience this is the most important type of maintainer to keep a project alive * Does not need attention * Does a lot of coding work * Thankless tasks: * Releases * Updates, refactorings * Documentation * Wants to work effectively and drive progress --- ### Helping hand * Contact person for the community * Answers a lot of user questions * Issue triage and response ??? * Very important for the outward perception of the project and gaining new users * First contact person for new users and contributors * Keeps track of issues and and user questions --- ### Advocate * Voice of the projects * Talks and promotions * Website, Documentations etc. ??? **Some projects may have a marketing person** * Voice of the project * Talks and promotions * Website, documentations etc. --- ### Founder/Legend * Started the project or contributor since "the early days" * Lots of deep knowledge * Knows the history behind things * Sometimes hard to reach because they may have moved on to other things ??? * Started the project or contributor since "the early days" * Lots of deep knowledge * Knows the history behind things * May not be very active in the daily work anymore but available * Try to keep them around and respect their experience --- background-image: url(img/communityovercodelogo.svg) .footnote[ ### Sustainbility is more about the community behind the code ] ??? It's more important to know the community than just producing code After some time you show know who is important for the project Consider if new contributors bring something valuable to the project --- # Is the project sustainable? * People available for fixes and security issues * Decisions are made and not stalled * Getting releases out (votes) * Technical debt is addressed, refactorings are done successfully * Development getting stuck * Maintainer burnout ??? **The big question before investing in a project** You ask questions like: * Is it risky using this because it might go dead? * Is it worth to invest in this project? * With some experience you get a feeling. * People available for fixes and security issues * Decisions are made and not stalled * Getting releases out (votes) * Technical debt is addressed, refactorings are done successfully * Development getting stuck --- # Closing words * Get to know the projects you love or need for your business * Paid support options are in demand * **Maintainers** please encourage contributions * **Open source beginners** please just start contributing ??? Every project is different * Get to know the projects you love or need for your business * Paid support options are in demand * Maintainers please encourage contributions * Open source beginners please just start contributing **Getting new maintainers in costs time but is a worthwile investment** --- class: center, middle # Questions? --- background-image: url(img/qr.png) .left-column[ ## Niklas Merz ] .right-column[ * E-Mail me: **niklasmerz@apache.org** * Slides: https://niklas.merz.dev/open-source-talk ]