Team,

As we wrap up remaining items for NiFi 2, we should consider how to
continue improving the quality and maintainability of the NiFi
ecosystem.

One primary focus of NiFi 2 has been the reduction of technical debt,
which involved the removal of numerous modules and thousands of lines
of code. In that process, it is worth highlighting that the core NiFi
API, and the NiFi Framework API, and the NiFi REST API have had
comparatively few breaking changes. This a testament to the quality of
the API design itself. The NiFi Version Schema and API Compatibility
[1] has provided a strong direction thus far.

With that background, we should consider adopting a more formal
process around changes that impact the fundamental API contracts that
NiFi provides. NiFi Feature Proposals [2] have provided elements of
this in the past, but did not include approval requirements. Kafka [3]
and Airflow [4] have more structured improvement proposal processes,
and that is what we should adopt going forward.

Part of moving in this direction requires identifying the areas that
would require going through the Improvement Proposal process itself.
At minimum, this should include the nifi-api [5] module. The
nifi-framework-api [6] is also worth consideration for inclusion in
this category. The NiFi REST API does not have quite the same level of
concern, but may warrant inclusion.

As part of this discussion, we should consider separating the nifi-api
module into its own repository, with its own versioning scheme. This
will provide a helpful distinction in terms of the scope of changes,
and allow the API to be released independently of the application,
providing strong version compatibility guarantees.

Based on feedback for the general idea, I would be glad to draft a
NiFi Improvement Proposal page, outlining the recommended steps in
more detail so we can come to consensus on how this should work.

Regards,
David Handermann

[1] 
https://cwiki.apache.org/confluence/display/NIFI/Version+Scheme+and+API+Compatibility
[2] https://cwiki.apache.org/confluence/display/NIFI/NiFi+Feature+Proposals
[3] 
https://cwiki.apache.org/confluence/display/KAFKA/Kafka+Improvement+Proposals
[4] 
https://cwiki.apache.org/confluence/display/AIRFLOW/Airflow+Improvement+Proposals
[5] https://github.com/apache/nifi/tree/main/nifi-api
[6] https://github.com/apache/nifi/tree/main/nifi-framework-api

Reply via email to