Thanks for the initial feedback and encouragement!

Shuxin, yes, the email corrected the timeline.  I put in a request for edit
access to the incubator wiki (Justin uploaded the first version).  Once I
get edit access I will update the proposal on the wiki; the version
attached to the email was the latest version.

Calvin, it would be great to have you onboard as a mentor, thanks for the
offer!

Best,
Manu


On Aug 10, 2026 at 20:40:37, Shuxin Pan <[email protected]> wrote:

> Hi Manu,
>
> For context, I am not an IPMC member; I am commenting as someone who
> has used NullAway.
>
> From a user’s perspective, I am positive about the proposal and
> believe that ASF incubation could help the project build a more
> diverse, community-driven governance model.
>
> I noticed that the email says 6–24 months, while the proposal page
> says 2–24 months. I assume the latter is simply a typo, as two months
> would be inconsistent with the proposal’s own 6–12 month goals.
>
> In any case, I would be very happy to see NullAway join the Apache
> Incubator!
>
> Best regards,Shuxin Pan
>
> 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/`) 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
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>

Reply via email to