Guide to Successful Graduation at the ASF
Martijn Dashorst
Me
• Member of the ASF
• On the Incubator PMC
• Chair of Apache Wicket
• Software engineer
• Dutch guy
• Fan of photo booth
Get your project accepted into the incubator and graduate within a year
Graduate
Participants
You
• Want to join an existing community
• Want to grow your own community
• Considering entering the ASF Incubator
• You’re in the ASF Incubator
The ASF
• US Non-Profit
• Completely volunteer organization
• ~2000 committers, 250 members
• 60 open source projects
“provides support for the Apache community of open-source software projects. The Apache projects are characterized by a collaborative, consensus based
development process, an open and pragmatic software license, and a desire to create high quality software that
leads the way in its field. We consider ourselves not simply a group of projects sharing a server, but rather
a community of developers and users.”
The ASF
The ASF“provides support for the Apache community of open-
source software projects. The Apache projects are characterized by a collaborative, consensus based
development process, an open and pragmatic software license, and a desire to create high quality software that
leads the way in its field. We consider ourselves not simply a group of projects sharing a server, but rather
a community of developers and users.”
Apache is interested only in healthy communities
Time has demonstrated that open and diverse meritocratic communities are more robust and productive than more closed ones
The incubator
Non-Apache Project↓
Incubator↓
Apache Project
Roles
• Incubator PMC
• Podling
• Podling PMC (PPMC)
• Champion
• Sponsor
• Mentor
• Committers
The process
accept Incubate Projectgraduatewrite proposal
+1 +1
Graduation is a democratic process – in the end it all boils down to a vote
+1
Ask yourself
• Do we want to join Apache?
• Why?
Search
Then begins the search for the sometimes elusive champion and sponsor.
Proposal
The proposal
The proposal captures the intent of the podling. It also checks for certain critical signs of successful projects
Proposal and rationale
• What is it that the project will do?
• Why Apache?
Current status
• Meritocracy
• Community
• Core developers
• Alignment
Known risks
• Orphaned Projects
• Inexperience with Open Source
• Homogeneous developers
• Reliance on salaried developers
• Relationships with other Apache products
Important details
• IP handling
• Dependencies
• Crypto
Required resources
• Mailing lists (dev, commit, private, user)
• Subversion repository
• Issue tracker (JIRA/Bugzilla)
• Champion + Sponsor
• Mentors
Discuss
Revise
Vote
Incubation
• Setting up camp
• Filing required paperwork
• Legal vetting of code
• Growing your community
• Releasing your code
• Preparing for graduation
Incubation involves
Setting up camp
Upon a successful vote, the Apache Infrastructure team will setup a website, mailing lists, subversion repository, wiki and issue trackers.
Exit criteria
• open, diverse, meritocratic community
• legally sound code base
• work the Apache Way™
Required paperwork
• Before accounts can be created, each contributor needs to send in an Individual CLA, a Corporate CLA, or a Software Grant
• Before the code can be released all paperwork has to be completed
Podling Status file
• Lists all legal issues that need resolving
• Trademark, naming and branding
• Lists PPMC and committers
• Lists resources (issues, wiki, site, lists)
• Check list
Reporting to the Incubator PMC
• first 3 months, then quarterly
• include a one liner to identify your project
• include your status regarding exit criteria
• report is sent to the board
Growing your community
• Growing a community is hard work
• Add committers
• Add PPMC members
Adding a committer1. DISCUSS on podling-private@
2. VOTE on podling-private@, notify Incubator PMC (private@)
3. VOTE on private@ by Incubator PMC
4. Welcome the newly appointed committer on public dev list
5. Make sure committer submits CLA
Adding a PPMC member
• DISCUSS on podling-private@
• VOTE on podling-private@, notify Incubator PMC (private@)
• Welcome the new PPMC member on public dev list
Vetting your code
• Apply Apache license header to all source files
• Remove all license incompatible source files and dependencies
• Provide proper attribution in NOTICE files
• List 3rd party dependencies’ licenses
• Establish the proper crypto export notifications
Releasing your code
Because a podling release is an Apache release, policy must be followed. Because the podling is in the Incubator, additional Incubator policy must be followed.
Release rules
• All code must be covered by a CLA or Software Grant
• All artifacts must be signed
• All artifacts must have LICENSE and NOTICE files in them
• All source files must have Apache 2.0 license header
Incubator release rules
• All artifacts must have a disclaimer in them (DISCLAIMER)
• All artifacts must include ‘incubating’ in their name
DisclaimerApache "Podling-Name" is an effort undergoing
incubation at The Apache Software Foundation (ASF), sponsored by "Sponsor-Name". Incubation is required of
all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While
incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully
endorsed by the ASF.
Release process
• Build and sign the artifacts
• Create release tag
• VOTE on your dev list
• VOTE on general@ Incubator list
• Requires at least 3 binding PMC votes
Workingthe Apache Way™
• Recruit users, developers, committers and PMCers
• Take responsible collective action
• disagree in public without destroying personal relationships
• create an open, positive and inclusive atmosphere on the mailing lists
Graduation
Graduation check list
• Complete all tasks in status file
• Demonstrate ability to create Apache releases
• Demonstrate community readiness
• Ensure mentors and Incubator PMC have no remaining issues
• Pick graduation members and Chair
Graduation destination
• Top level project (TLP)
• Sub project
Prepare a resolutionEstablish Apache Cayenne Project
WHEREAS, the Board of Directors deems it to be in the bestinterests of the Foundation and consistent with the Foundation'spurpose to establish a Project Management Committee charged withthe creation and maintenance of open-source software related toobject-relational mapping (ORM) and remoting services, fordistribution at no charge to the public.
NOW, THEREFORE, BE IT RESOLVED, that a Project ManagementCommittee (PMC), to be known as the "The Apache Cayenne Project",be and hereby is established pursuant to Bylaws of theFoundation; and be it further
RESOLVED, that The Apache Cayenne Project be and hereby isresponsible for the creation and maintenance of a softwareproject related to object-relational mapping (ORM) and remotingservices; and be it further
RESOLVED, that the office of "Vice President, Cayenne" be and
Life after graduation
Post graduation tasks
• Work with Infrastructure to transfer your project’s resources to the final destination: top level project or sub project
Post graduation tasks
• Move status file to graduated projects
• Finalize the status file
• Clean up incubator resources
Continue working like you did in the Incubator – it’s the Apache Way™
• First 3 months report to board, then quarterly
• Adding committer is PMC responsibility
• Adding PMC member needs acknowledgement of board
• Releases still need to comply with Apache Policy, but not anymore with Incubator policy
Top 10 tips for successful graduation
Top 10 graduation tips
10. Read all of Incubator site
9. Don’t be afraid to use your mentors
8. Update your status page regularly
7. Send your status reports on time
6. Read and ask questions on general@
Top 10 graduation tips
5. Get involved in the Apache Software Foundation
4. Go forth and diversify
3. Commit early and often in the Apache repository
2. Build a release candidate ASAP and use RAT
1. Communicate in the open – use your dev@
HAVE FUN!
Questions?