With my ~5 years of contribution experience in Apache, presented a session to new comers who wants to start contribution in Apache projects.
Explaining about what is ASF, guide to how to start contributing to Apache projects, how to become a committer, PMC and its responsibilities.
1. Life In Apache Software
Foundation (ASF)
Ashish Singhi
Apache HBase Committer & PMC Member
Senior Software Engineer at Walmart Labs
Date: 21st Nov 2019
2. The Apache Software Foundation
• What is ASF - non-profit public charity organization incorporated in
USA
• How it started - A bit of history
(https://www.apache.org/foundation/how-it-works.html#history)
• How many project it includes - 276!
(https://projects.apache.org/projects.html?name)
• How it makes money - It does not "make money" per se, it just has to
cover its costs. It accepts corporate sponsorship donations, regular
donations and through conferences.
List of sponsors - https://www.apache.org/foundation/thanks
3. ASF Roles
• User - uses software, feedback
• Developer/Contributor - participate in discussions, provide patches, documentation,
suggestions
• Committer - a developer with right access on the code repo, apache.org mail address
• PMC Member - right to vote for the community-related decisions, proposes and elects a
contributor as a committer, controls the project
• PMC Chair - One among PMC, leads the project, interface between the board and the
project
• ASF Member – Propose a committer or a PMC for membership, can stand for the board
election, right to propose a new project for incubation
https://www.apache.org/foundation/how-it-works.html#roles
4. Newcomers to ASF
• Where do they start -
• Finding the right project
• By language: https://projects.apache.org/projects.html?language
• By Category: https://projects.apache.org/projects.html?category
• Subscribing to project mailing list
• Example for Kafka: https://kafka.apache.org/contact
• Jira to work upon
• Filter for labels: beginners, newbie…
• How should they behave -
• Respect time and culture of others
• Be constructive, friendly, polite and patient
• Writing good emails (http://www.apache.org/dev/contrib-email-tips)
5. Contributor: Things to know
• How to report an issue ?
• How to request for a feature ?
• How to assign yourself a Jira which is assigned to someone else ?
• How to submit code change ?
• Few Coding standards to follow:
• Unit test – At least one unit test case for the Jira
• Functional and Integration test if possible
• Static tools – Findbugs, Checkstyle, Coverity, ThreadSafe
• Format only the modified code
• Take review comments positively, have an open mind
• If you get no feedback on the patch, wait and repeat your question in 3-4 days
• Provide review comments in the form of a question, even if you’re quite sure that you’re
right
6. How to become a Committer
• Ability to work co-operatively with peers - Evaluated by the interactions
they have through mail, how they respond to criticism, how they
participate in decision-making process
• Commitment - Evaluated by time, sticking through tough issues, helping on
not-so-fun tasks as well
• Personal skill/ability - A solid general understanding of the project, quality
of discussion in mail, patches (where applicable) easy to apply with only a
cursory review
• Community - Evaluated by the interactions through mail, reviewing others
patches
• Non binding votes on code modifications
7. Voting in ASF
• Votes are represented as numbers between -1 and +1, with ‘-1’
meaning ‘no’ and ‘+1’ meaning ‘yes.’
• The in-between values are indicative of how strongly the voting
individual feels.
http://www.apache.org/foundation/voting.html#expressing-votes-1-
0-1-and-fractions
• Bug : At least one binding ‘+1’ is required with no ‘-1’ vote
• Major feature: At least two/three binding ‘+1’ is required (depends on
project) with no ‘-1’ vote
• Committer: At least 3 binding ‘+1’ vote is required with no ‘-1’ note
8. Project
Versioning
• Versions are denoted using a
standard triplet of
integers: MAJOR.MINOR.PATCH
• MAJOR versions are
incompatible.
• MINOR versions retain source
and binary compatibility with
older minor versions.
• PATCH level are perfectly
compatible, forwards and
backwards.
Original Version New Version Compatible?
2.2.3 2.2.4 Yes
Compatibility across patch versions is guaranteed.
2.2.3 2.2.1 Yes
Compatibility across patch versions is guaranteed.
2.2.3 2.3.1 Yes
Compatibility with later minor versions is
guaranteed.
2.2.3 2.1.7 No
Compatibility with prior minor versions is not
guaranteed.
2.2.3 3.0.0 No
Compatibility with different major versions is not
guaranteed.
2.2.3 1.4.7 No
Compatibility with different major versions is not
guaranteed.
https://apr.apache.org/versioning.html
9. Responsibilities of a Committer
• Binding votes on code modifications
• Applying patches - discuss, review and apply patches submitted by others
• Helping users - respond to questions from users and devs on the mailing
list
• Monitoring commits and issues - review commit email messages,
Monitoring Jira for bugs or enhancement requests
• Helping out with the web site – Maintain the project web site
• Mentoring new comers.
• Non binding Votes on project release cuts.
https://www.apache.org/dev/committers.html#committer-responsibilities
10. Responsibilities of a PMC
• Binding votes every where.
• Comply with legal affairs policies
• Comply with brand management policies
• Responsibly report misuses of apache brands
• Conduct project business on public mailing lists
• Limit project business on private mailing lists