I want to challenge the current way of PMC determining the product feature
set and work towards a more sustainable alternative.

Logging Services team...

   - delivers mission-critical products that are deployed at the core of
   the world-wide infrastructure (actually, in Mars too)
   - is short on development resources compared to its wide range of
   offerings
   - deals with substantial amount of legacy
   - suffers from knowledge silo

Any IT team in this state would be really conservative on accepting new
features and try hard to get rid of the bloat. They would react to this
challenge by first discovering the user base, pinpointing the core values,
and then lazer-focusing the limited development resources on to the crucial
deliverables. Though we do something totally different, one can even say
the opposite. Below I share excerpts from recent mailing list posts.

*"I had added [X] ... to show how to write plugins and for some
consulting-related use cases"* – PMC member explaining how feature X was
released

*"... stuff seems like it could be useful"* – PMC member asking to keep
feature X

*"my employer used [X] ... for anyone implementing ... this would be very
relevant.  By archiving this we are basically telling users that they
cannot use it any more since it will no longer be supported. For that
reason I am not in favor of [retiring]"* – PMC member asking to keep
feature X

*"We [the employer] ... use [X]"* – PMC member asking to keep feature X

*"User base [is] ... very low to non-existent."* – PMC member asking to
keep product X

*"[PMC member] has steadfastly [reacted] ... and until he positively says
he will no longer maintain it I am not willing to override that"* – PMC
member asking to keep product X because another (one and only) PMC member
reacted on product retirement inquiry

*"Our employers are ... paying customers."* – a PMC member explaining why
we should keep feature X used by an organization employing another PMC
member


I see a pattern in the way we decide to maintain a feature/product:

   - It is not data-driven. It is disconnected from its user base. No usage
   statistics, etc. is shared or used.
   - We serve individuals' and employers' agendas.
   - We underestimate the cost of adding/keeping a feature.

I think this diet is "unhealthy" because:

   - It adds up to the bloat. It is yet another component developers need
   to maintain its dependencies, documentation, website, integration with the
   build system, etc. This bizarrely slows down the development experience.
   (Ever wondered how much `log4j-osgi` takes during `./mvnw verify`?)
   - It adds up to the attack surface.
   - Features that are supposed to be optional get shipped to users without
   their consent. (Consider the percentage of the Log4Shell victims that used
   the JNDI functionality at all.)
   - Scarce development resources get wasted on chores due to the
   excessive landscape.
   - It gives users the wrong impression that the feature/product is
   maintained, though under the hood it is just kept there because a
   privileged group wants so.

I want to refine this approach with your help. To start the discussion, I
propose the following strategy instead:

*"We only accept a feature with data-driven justification."* – Have a brand
new idea? Grab yourself a GitHub/GitLab repository that belongs to either
you or your employer, knock yourself out without any ASF/PMC burdens, and
amaze your users. Once the user attraction gets enough gravity, let's
discuss blessing it as a part of the official Logging Services offering.
Official support channels are always open to assist the developers of such
external efforts.

*"We only keep a feature with data-driven justification."* – Do you think a
feature needs to be retired? Bring it up for discussion. PMC should
evaluate the request based on numbers and this process should be
independent of the individuals'/employers' agendas. If PMC decides to
retire a feature/product *and* there are people who volunteer to continue
the development on a successor fork outside of ASF, PMC should do their due
diligence to point existing users to this fork without any endorsement.


I look forward to hearing your thoughts.

Reply via email to