Team,

We are seeing an increase in the unique contributors on a monthly basis to
NiFi and a clear and steady increase in the overall contribution rate over
the past 1-2 years in particular.  This is awesome but we do have important
problems to cover and we need to make it easier to help newer contributors
know where to jump in and add the most value.

For sure people will contribute various things just because they have a
particular interest such as some new extension, etc..  But from a community
direction perspective there are things we need to continue to improve upon
and we want to help make the path to committership and PMC membership more
clear as a function of adding value to the community.

So not necessarily ordered, here are some key things I've observed that
need more attention and are among the most valuable things for the health
of the nifi system and community.

Dependency Management

This is a hugely important area as we have a massive amount of dependencies
and this work is just plain not that fun.  But if we want to present a
beautiful landscape we need to pull weeds.  We need to reduce dependencies
and keep things recent.  This is largely accomplished today by a very small
group of people.  We have to increase the contribution level here or
perhaps the automation level.  We have tooling that is helping now but
still needs more attention.

Vulnerability Management particular as it relates to dependencies

Related to dependency management but broader.  This one at times requires
us to do more than simply maintain dependencies.  It sometimes forces us to
change libraries and sometimes even makes maintaining
compatibility/configuration complicated.  These are among the most critical
and most difficult tasks to take on.  This is largely done today by an
extremely small group of people.

Maintenance of extensions

We have a ton of components in NiFi.  Obviously not all of them really do
require active maintenance but there is often a contribute and forget model
involved.  For us to keep these broad range of components under community
care they need active maintenance.  I already mentioned the dependency
factor above but the broader point here is that APIs/versions of systems
evolve.  We need to be staying up to date.  There are systems like Kafka,
Elastic, Mongo, Relational Databases, etc.. that we should always be
supporting the latest on.  These are among the most wildly popular sources
and destinations.  We do tend to fall behind here and this is powerfully
useful for people to contribute to.  These are the things our users
actually use NiFi for!

Maintenance of things other than core nifi

If you look at components ancillary to NiFi they receive far less attention
and effort trending toward them going away.  The NiFi registry is a great
example of this as NiFi MiNiFi Java for instance.  These are things which
are useful and indeed there is a decent user base in both cases.  But they
require more active maintenance than they get.  We need to evolve when it
comes to security methods offered for authn/authz and that takes focus.

Performance analysis and improvements targeted as a result

This is done very rarely as far as I can tell outside a couple of people
who I'm sure we could all name in a few seconds.  The codebase is large and
Java and other parts evolve.  Continually emphasizing faster and more
efficient operations is vital to NiFi's continued growth in the
community at large.  People who spend time running NiFi in a measured
manner with realistic flows and doing things like profiling for CPU,
memory, etc.. and finding bottlenecks and offering solutions - absolutely
can be high impact and valuable.  Even if not at a point where a confident
contribution can be made, the very act of doing this level of evaluation
and flagging concerns is valuable.

Improvements related to tests both unit and integration - but also for
users of NiFi

As part of our push to NiFi 2.0 we have been running these tests far more
often and more complete than ever before.  Github Actions now pretty much
does run all the things.  We've deleted a wild amount of junk tests that
would always fail or were spurious or required some complex local
access/setup and therefore nobody ever ran them.  We need to always improve
coverage but we want to make tests faster/more efficient and more
leveraging of things like test containers would be highly valuable.
Importantly though here I also mean to highlight we need to do a lot more
for users of NiFi that want to create automated tests for their flows.  We
should make it easy for them to provide a flow definition or perhaps a DSL
for their flow and write tests which would leverage actual nifi to validate
a given input results in an expected output.  This is something that would
add a ton of value for our user base but also lead into some really
powerful testing we can do against our own framework.

Development of blogs/videos/conference presentations/social media posts

Building great software by itself doesn't grow the community nearly as much
as if you build a strong developer advocacy game.  People that create these
various forms of blogs/videos and conference talks about NiFi, how it
works, and how to make it better are extremely valuable.  That is often
just as valuable or even more so than a PR review, code contribution, etc..

Engagement in the Slack/Mailing lists

Our community needs help.  They ask a lot of questions about how to use
NiFi, bugs they are hitting, etc.. Responding to these questions in a
timely and meaningful manner is hugely valuable to them and is also pretty
fun for the person who helps out.

Meaningful engagement acting as a pull request reviewer

This one is last but certainly not least!  We have a review-then-commit
model which means we need at least one committer or PMC member to review a
contribution before it gets merged.  Even if you're not a committer or PMC
member, a review is still super helpful and can save time and also puts you
on a great path to earning merit.  Reviews are a critical part of the code
and overall quality of NiFi.  'LGTM' is generally not that helpful and
while warranted for some trivial things we even see it on larger more
meaningful commits.  Not every review needs to be a back and forth affair
of code style inputs either.  There is a middle ground and you'll find it
as you engage in more reviews!    Code reviews are in far more short supply
than code contributions.  I encourage everyone to please do at least one
true pull request review for every contribution.  In general the goal
should be to contribute to more pull request reviews than new pull requests
created.  If you do so this by definition means the community is growing
and you're directly helping make that happen!

Would love to see additional inputs/missing categories/other thoughts.
Perhaps this turns into a wiki page that helps give more context to people
that want to find ways to add value and be on a path to committer and PMC
membership as well.

Thanks
Joe

Reply via email to