Robert Metzger will introduce you to the various ways of contributing to Apache Flink. We will start by an introduction into the Apache Software Foundation, its history and present-day status, and where Apache Flink fits within the Foundation. We’ll then give an overview of the different areas to contribute, and what to consider in those areas.
For example, how can I help users best on the user@flink mailing list, how are decisions being made in the community, how can I help with Flink releases or how can I contribute code to the project.
Webinar: How to contribute to Apache Flink - Robert Metzger
1. How to
contribute to
Apache Flink®
Robert Metzger
Flink PMC, Software Engineer @ Ververica
rmetzger@apache.org
@rmetzger_
2. What you will learn today
• What is the Apache Software Foundation
• What are the roles at an Apache project
• How to become a committer
• How to contribute to Apache Flink
• The mailing lists
• The documentation
• Contributing code
• Q & A / Hands-on
3. Flink and the Apache Software Foundation
• Flink is one of more than 300 top level projects at the ASF
Independent open
source project:
"Stratosphere"
Apache Incubator:
“Apache Flink
(incubating)”
Top level Apache
project
Attic
2009 – 2014 April 2014 – Dec 2014 Since Dec 2014 Hopefully never J
4. Apache Software Foundation
• Celebrating 20 years of ASF this year
• Initially about Apache HTTP server, “a
patchy server”
• Today, 300+ open source projects (+ 52
incubating)
• 730 members and 7000+ committers
• All volunteer, self-organized, decentralized
• Providing projects with legal and
infrastructure support, and a blueprint
and experience for successful open source
21 founding members
[photo attribution (CC BY) Mark Cox. Tagged image at https://www.flickr.com/photos/iamamoose/63963722/in/album-1381277/ ; gallery at https://www.flickr.com/photos/iamamoose/albums/1381277]
“Community over code”
5.
6. Apache License 2.0
• Top 3 open source license, used by all ASF projects and many others
• Business friendly (derivative work is allowed to be licensed
differently)
Recommended website: https://tldrlegal.com/license/apache-license-2.0-(apache-2.0)
7. Roles at the ASF (& Flink)
ASF Members
ASF Board of
directors Flink PMC Chair
Flink PMC (20) Project Management
Committee
Flink Committers
(45)
Contributors &
Users
Project oversight: review
releases, long-term health
of project
Permission to commit code,
<user>@apache.org email
Implementation, testing,
documentation, user
support etc.
Day-to-day oversight of
the foundation
Control & “ownership”
members@a.o
board@a.o
private@f.a.o
dev@f.a.o
user@f.a.o
user-zh@f.a.o
commits@f.a.o
issues@f.a.o
public
builds@f.a.o
8. Becoming a Flink committer: Requirements
• Formally: PMC will vote on a community member to become a
committer (on private@)
• Good contributions over a longer period of time, good technical
oversights and experience (for reviews and discussions)
• Understanding of “The Apache Way”, good community engagement
9. Contribute to User Support
• user@flink.apache.org (and user-zh@f.a.o) are the primary support
channels: ~150 emails/week. 1000+ subscribers
• Error messages, configuration, API
• Architecture / Design questions
• Stack Overflow
• [apache-flink] tag: 2800 questions,
1100 unanswered
• JIRA (Bug tracker)
• Often, incoming bug reports are ”just” problems
using Flink
Sign up & answer questions
10. Contribute to
Evangelism
• Meetups
• Speak at your local meetup
• Host a meetup group in your city (Ververica
can help you!)
• Help with venue, organization etc.
• Conferences
• Submit talks at conferences
• Blogs
• Share your experience
• Twitter, LinkedIn, Facebook
• Help spreading the word
11. Contribute to Flink’s development
• dev@flink.apache.org is the main communication and decision-
making channel of Flink
• Discussion of FLIPs (Flink Improvement Proposals)
• Roadmap planning, release scheduling
• Release voting
• Community health
• All other development and community-related questions (which libraries do
we use, how do we approach large changes)
Join the discussions
12. Voting: How decisions are being made
• Apache projects vote on: releases, committers, PMC members, procedural
changes, code changes
• +1 / -1, because …
• Most important vote: releases
• Duration of at least 72 hours (workdays)
• Legal checks (checksums, signatures, license documentation) and functional checks (end to
end tests, manual tests, performance)
• See: https://cwiki.apache.org/confluence/display/FLINK/Verifying+a+Flink+Release
• Lazy approval: Assume consensus after 72 hours, if nobody objects
• Used for code changes, smaller proposals, procedural changes, ...
• Currently under discussion: Flink Bylaws:
https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=120731026
13. Contribute to Flink’s development
• Contribute Documentation (or website)
git clone https://github.com/apache/flink
cd flink/docs/docker
./run.sh
• An easy way to have a lot of impact on Flink
• Jira tickets in component “Documentation” (currently 160
unresolved)
• Small fixes as “[hotfix]” PRs, larger changes through JIRA->PR process
• See also: https://flink.apache.org/contribute-documentation.html
14. Contribute to Flink’s development: Code
• Contribute code
JIRA Ticket: Get consensus Implement Review Merge
dev@ discussion &
FLIP
Get buy in on your change and find a
committer willing to review and merge
Involved changes often
require a design
document
Reviews happen in pull
requests in a 4-step
process
15. Contribute to Flink’s development: JIRA
• A good JIRA ticket …
• … is created ahead of time
• ... Clearly describes the problem to solve
• … is assigned to a component, has the right priority
• Get buy-in from a committer … you will need somebody to review and
merge your change later on
• Expect a few days till there’s a first reaction (depending on the
component, complexity) and weeks till there’s consensus
16. Contribute to Flink’s development: Pull
Request Review
Description
• Formal requirements: JIRA ID in title, description of the change, clean
history (commits prefixed with JIRA ID)
Consensus
• Check if there’s agreement to merge this change as is
• Should not be a problem if JIRA has been “approved”
Architecture
• Architectural fit within Flink
Quality
• Code Quality: documentation, error handling, concurrency / threading,
dependencies
17. Contribute to Flink’s development: Pull
Request Review: Notes
• Be patient: Reviews take time
• In particular when a release is happening
• Contribute reviews: If you don’t have a feature / fix to contribute,
help checking pull requests in the “quality” stage (see label)
• Stay in touch with the committer managing your contribution
18. Conclusion
• Introduction on Apache Flink and the ASF
• There are many ways to contribute
• User support
• Project steering
• Evangelism
• Documentation / website
• Code reviews
• Fixes / features
• Even if it sometimes doesn’t seem so: Contributions are very
welcome!
• Reach out to me rmetzger@apache.org / @rmetzger_ if you have
questions
20. Q & A
Bonus: Hands-on session to help people setting up their development
environments
Robert Metzger
Flink PMC, Software Engineer @ Ververica
rmetzger@apache.org
@rmetzger_