Hi Manu, I've been following this project for quite some time. If you're looking for an additional mentor, I'd be very happy to help.
One of the projects I'm currently mentoring is close to graduation, so I expect to have some additional bandwidth soon. On Tue, Aug 11, 2026 at 5:58 AM Manu Sridharan <[email protected]> wrote: > Hi everyone, > > I would like to start discussion of a proposal to make NullAway ( > https://github.com/uber/NullAway) an Apache Incubator project. The > proposal is here: > > > https://cwiki.apache.org/confluence/spaces/INCUBATOR/pages/440304640/NullAwayProposal > > I’ve pasted a slightly updated version of the proposal below that addresses > some initial feedback (we’ll get the wiki version updated soon). We have > Justin Mclean as a champion, but we are in need of mentors, if you are able > to help. Thanks in advance for your feedback and thoughts! > > Best regards, > Manu > > ---------------------------------------- > > # New Podling Proposal: Apache NullAway (incubating) > > ## Abstract > NullAway is a fast, annotation-based nullness checker for Java that helps > eliminate `NullPointerException`s at build time with minimal overhead. > > ## Proposal > NullAway is a tool designed to eliminate `NullPointerException`s (NPEs) in > Java code. To use NullAway, developers add `@Nullable` annotations to their > code wherever a field, method parameter, or return value may be `null`. > Given these annotations, NullAway performs a series of type-based, local > checks to ensure that any pointer that gets dereferenced in the code cannot > be `null`. NullAway provides similar type-based nullability checking to > languages like Kotlin and Swift, or the Checker Framework nullness checker > for Java. > > NullAway is designed for high-performance production environments. Built as > a plugin to Google's Error Prone framework, it runs on every single local > or CI build of a project. In production measurements, the build-time > overhead of running NullAway is typically less than 10%. NullAway is > practical: it balances absolute soundness with developer productivity, > catching the vast majority of production NPEs while imposing a reasonable > annotation burden. Furthermore, NullAway supports a variety of nullness > annotations, including the newly standardized JSpecify nullability > annotations. > > ## Background > NullAway was initially developed at Uber and open-sourced in 2017. Since > then, NullAway has built a large, passionate community of users, > accumulating approximately 4,000 stars on GitHub. > > Recently, the JSpecify working group released version 1.0 of a standardized > set of Java annotations for nullness properties with well-specified > semantics. NullAway is actively working towards full JSpecify support. With > the increasing adoption of JSpecify across the Java ecosystem, the rate of > new users, community issues, and pull requests for NullAway has increased > significantly. > > ## Rationale > NullAway plays an increasingly critical role for nullness safety in the > Java ecosystem. As JSpecify annotations become widely adopted—both due to > industry standardization and in anticipation of native nullness types being > added to the Java language itself—the ecosystem needs a fast tool to > enforce them. NullAway provides fast consistency and safety checking for > these annotations, making it suitable for both continuous integration > pipelines and local developer workflows. > > We believe shifting NullAway to the Apache Software Foundation as a > community-owned project will decouple it from any single corporate entity, > formalize its governance, attract new enterprise contributors, and ensure > its long-term health and neutrality. > > ## Initial Goals > The NullAway project targets the following milestones during its first 6 to > 12 months of incubation: > > * **Complete IP Clearance and Donation:** Execute an ASF software grant > from the current rights holder (Uber Technologies Inc.), ensure all initial > committers file ICLAs, and import the code into ASF infrastructure. > * **Establish Apache Governance:** Transition from a single-maintainer > model to dev-list-driven decisions, documented voting practices, clear > roles (release managers, triagers), and transparent committer nomination. > * **Produce Apache-Compliant Releases:** Set up automated, source-only > releases with appropriate signatures, checksums, and audited > `LICENSE`/`NOTICE` files. > * **Strengthen Onboarding Pathways:** Improve contributor documentation and > label "good first issues" to expand the contribution ladder toward > maintainership. > * **Ecosystem Interoperability:** Enhance documentation and support for > common build tool integrations, collaborating closely with the broader > nullness annotation ecosystem (e.g., JSpecify). > > --- > > ## Current Status > > ### Meritocracy > We fully embrace meritocracy. A core motivation for joining the ASF is to > expand the project's leadership. While NullAway has historically been > developed in the open with public issue tracking and pull requests, a > single developer (Manu Sridharan) has been responsible for the majority of > recent commits. > > Moving NullAway to the ASF will signal to external contributors that the > project welcomes community ownership. We intend to establish clear, > merit-based pathways where sustained, high-quality contributions (code, > reviews, documentation, or triage) quickly earn commit access and PMC > membership. > > ### Community > * **Contributors:** There are currently 70 unique contributors (Source: > https://github.com/uber/NullAway/graphs/contributors) > * **Downstream Users:** NullAway is widely adopted across high-profile > open-source frameworks and massive internal codebases, including: > * Core Spring projects (including Spring Framework and Spring Boot) > * Micronaut Framework > * JUnit unit testing library > * AssertJ test assertion library > * Uber (internally for all backend and Android Java code) > > ### Core Developers > * **Manu Sridharan:** Primary developer and maintainer since inception in > 2017. > * **Lazaro Clapp:** Developer and maintainer. > * **Yuxin Wang (Uber):** Code reviewer and contributor. > * **Stefano Cordio (AssertJ):** Code reviewer and contributor. > > ### Alignment > The ASF hosts the foundational tooling of the Java ecosystem (e.g., Apache > Maven, Apache Commons). NullAway directly complements these projects by > offering compile-time code quality checks. > > The project is currently licensed under the permissive MIT license, and a > Contributor License Agreement (CLA) mechanism has been in place since its > inception. Transitioning the codebase to the Apache License, Version 2.0 > will be straightforward (the sufficiency of the Uber CLA for re-licensing > has been confirmed). > > --- > > ## Known Risks > > ### Project Name > NullAway does not currently hold a registered trademark. Upon acceptance > into incubation, a formal **Podling Name Search (PNS)** will be conducted > to ensure the name does not conflict with existing trademarks. Uber will > transfer any implicit naming rights or brand equity associated with the > project to the ASF. > > ### Orphaned Products > NullAway is heavily relied upon by major enterprises and core open-source > projects like Spring and JUnit. The current development team is fully > committed to maintaining and improving the tool to support JSpecify and > future Java ecosystem updates. The risk of the project becoming orphaned is > incredibly low. > > ### Length of Incubation > We expect NullAway to remain in incubation for between 6 to 24 months. This > timeline will allow the project to fully diversify its contributor base, > execute several compliant Apache releases, and demonstrate a > self-sustaining community operating under the "Apache Way." > > ### Homogeneous Developers > * **Risk:** The project currently relies heavily on one primary developer > for its core logic, representing a bus-factor and architectural bottleneck > risk. > * **Mitigation:** We are actively executing a cross-organization > recruitment plan targeting: > 1. **Large Downstream Adopters:** Inviting active users from > organizations deploying NullAway at scale (e.g., Spring, Micronaut) to > steward integrations. > 2. **JSpecify Working Group Participants:** Recruiting contributors > from member organizations involved in the multi-company JSpecify effort to > build out shared nullness semantics. > > ### Governance > * **Risk:** The project could be perceived as centrally controlled or > dependent on a Benevolent Dictator for Life (BDFL) model; we're very keen > to change this. > * **Mitigation:** During an initial public discussion on ` > [email protected]` (begun September 23, 2025), the project > initiator explicitly welcomed a shift away from a BDFL model to a > formalized, stakeholder-driven process. NullAway will adopt Apache > governance norms from day one, ensuring all architectural roadmaps and > releases are voted on publicly via the mailing list. > > ### Relationships with Other Apache Products > NullAway complements existing build and quality tools used in the Java > ecosystem. It does not duplicate or compete with any existing Apache > Top-Level Projects; rather, it introduces a highly focused, compile-time > nullness analysis layer that can be seamlessly adopted by other Apache Java > projects. > > ### Inexperience with Open Source > > NullAway has been open source since 2017 and has had numerous improvements > since its open-source release. All of the initial committers have > significant open-source experience; see their GitHub profiles ( > https://github.com/msridhar, https://github.com/lazaroclapp, > https://github.com/yuxincs, https://github.com/scordio). > > ### Reliance on Salaried Developers > > NullAway's current primary developer Manu Sridharan has been maintaining > and improving NullAway as both a personal project and as it relates to his > research work as a professor; his salary does not explicitly pay for work > for NullAway. Similarly, Lazaro Clapp has continued to contribute to > NullAway as a personal project. So, NullAway does not have an > over-reliance on salaried developers. We aim for a mix of salaried > developers and volunteers as contributors, to be representative of > NullAway's user base. > > --- > > ## Documentation > * **Main README:** https://github.com/uber/NullAway/blob/master/README.md > * **Project Wiki:** https://github.com/uber/NullAway/wiki > > ## Initial Source > * **Source Code Repository:** https://github.com/uber/NullAway > > ## Source and Intellectual Property Submission Plan > 1. **Software Grant:** Obtain an official ASF Software Grant Agreement > (SGA) from Uber Technologies Inc. covering the existing NullAway codebase. > 2. **Contributor License Agreements:** Ensure all initial committers have > filed individual CLAs (ICLAs) and, where applicable, Corporate CLAs (CCLA) > with the ASF. > 3. **Code Import:** Migrate the repository history into ASF infrastructure > while preserving metadata and clear provenance. > 4. **License & Notice Compliance:** Audit all third-party code, remove any > incompatible assets, add standard Apache `LICENSE` and `NOTICE` text, and > reheader source files with the standard Apache license block. > > ### External Dependencies > NullAway relies on the following external dependencies at compile or build > time: > * **Google Error Prone** (Apache 2.0) > * **Google Guava** (Apache 2.0) > * **JSpecify Annotations** (Apache 2.0) > * **Checker Framework Dataflow Library** (GPLv2 with Classpath Exception) > * *Note on Compliance:* NullAway does not bundle or re-distribute any > Checker Framework binaries or source code. Users consume this library via > standard dynamic linking during the compilation process. This setup > complies with ASF third-party licensing policies as a Category B / system > runtime requirement (similar to Google Error Prone’s existing structure). > > ### Cryptography > Not applicable. NullAway does not implement, use, or distribute > cryptographic software. > > --- > > ## Required Resources > > ### Mailing Lists > * `[email protected]` (for community discussion and technical > decisions) > * `[email protected]` (for repository commit notifications) > * `[email protected]` (for issue tracking notifications) > * `[email protected]` (for confidential podling matters) > > ### Repositories > The project will utilize the ASF GitBox system to provide > write-synchronization between ASF infrastructure and GitHub: > * https://gitbox.apache.org/asf/repos/nullaway > * https://github.com/apache/nullaway > > ### Issue Tracking > The project requests to continue utilizing **GitHub Issues** integrated > with the Apache GitHub repository to maintain continuity for our existing > user base. We are open to discuss this further if this is not a preferred > way of engagement with our community. > > ### Other Resources > * **Continuous Integration:** GitHub Actions (leveraging standard > ASF-provided runners). > * **Website:** A standard Apache Incubator hosted website (` > http://nullaway.incubator.apache.org/` > <http://nullaway.incubator.apache.org/>) managed via Git-backed markdown. > > --- > > ## Initial Committers > * **Manu Sridharan** (Current Maintainer) — ICLA to be filed. > * **Yuxin Wang** (Uber) — ICLA to be filed or utilize Uber CCLA. > * **Lazaro Clapp** — ICLA to be filed. > * **Stefano Cordio** — ICLA to be filed. > > > There is already an CCLA in place for Uber and ASF which would cover any > future Uber inbound contributions. > > ## Sponsors > > ### Champion > * Justin Mclean > > ### Nominated Mentors > * Justin Mclean > * *(Additional mentors to be recruited during the discussion phase)* > > ### Sponsoring Entity > * The Apache Incubator PMC > -- Best wishes! CalvinKirs
