I quite like this idea. It seemed like the first 2.0 release had been being 
held out for some bigger innovations (nar registry?), but that has also pushed 
out making nice breaking changes.

What would be the mechanics here? Just starting feeding all the candidates into 
JIRA? Listing out candidates in a wiki page first?

-joey

> On Jul 23, 2021, at 7:57 AM, Joe Witt <joe.w...@gmail.com> wrote:
> 
> Jon
> 
> You're right we have to be careful and you're right there are still
> significant Java 8 users out there.  But we also have to be careful
> about security and sustainability of the codebase.  If we had talked
> about this last year when that article came out I'd have agreed it is
> too early.  Interestingly that link seems to get updated and I tried
> [1] and found more recent data (not sure how recent).  Anyway it
> suggests Java 8 is still the top dog but we see good growth on 11.  In
> my $dayjob this aligns to what I'm seeing too.  Customers didn't seem
> to care about Java 11 until later half last year and now suddenly it
> is all over the place.
> 
> I think once we put out a NiFi 2.0 release we'd see rapid decrease in
> work on the 1.x line just being blunt.  We did this many years ago
> with 0.x to 1.x and we stood behind 0.x for a while (maybe a year or
> so) but it was purely bug fix/security related bits.  We would need to
> do something similar.  But feature work would almost certainly go to
> the 2.x line.  Maybe there are other workable models but my instinct
> suggests this is likely to follow a similar path.
> 
> ...anyway I agree it isn't that easy of a call to dump Java 8.  We
> need to make the call in both the interests of the user base and the
> contributor base of the community.
> 
> [1] https://www.jetbrains.com/lp/devecosystem-2021/java/
> 
> 
> Thanks
> Joe
> 
>> On Fri, Jul 23, 2021 at 7:46 AM Joe Witt <joe.w...@gmail.com> wrote:
>> 
>> Russ
>> 
>> Yeah the flow registry is a key part of it.  But also now you can
>> download the flow definition in JSON (upload i think is there now
>> too).  Templates offered a series of challenges such as we store them
>> in the flow definition which has made flows massive in an unintended
>> way which isn't fun for cluster behavior.
>> 
>> We have a couple cases where we headed down a particular concept and
>> came up with better approaches later.  We need to reconcile these with
>> the benefit of hindsight, and while being careful to be not overly
>> disruptive to existing users, to reduce the codebase/maintenance
>> burden and allow continued evolution of the project.
>> 
>> Thanks
>> 
>>> On Fri, Jul 23, 2021 at 7:43 AM Russell Bateman <r...@windofkeltia.com> 
>>> wrote:
>>> 
>>> Joe,
>>> 
>>> I apologize for the off-topic intrusion, but what replaces templates?
>>> The Registry? Templates rocked and we have used them since 0.5.x.
>>> 
>>> Russ
>>> 
>>> On 7/23/21 8:31 AM, Joe Witt wrote:
>>>> David,
>>>> 
>>>> I think this is a highly reasonable approach and such a focus will
>>>> greatly help make a 2.0 release far more approachable to knock out.
>>>> Not only that but tech debt reduction would help make work towards
>>>> major features we'd think about in a 'major release' sense more
>>>> approachable.
>>>> 
>>>> We should remove all deprecated things (as well as verify we have the
>>>> right list).  We should remove/consider removal of deprecated concepts
>>>> like templates.  We should consider whether we can resolve the various
>>>> ways we've handled what are now parameters down to one clean approach.
>>>> We should remove options in the nifi.properties which turn out to
>>>> never be used quite right (if there are).  There is quite a bit we can
>>>> do purely in the name of tech debt reduction.
>>>> 
>>>> Lots to consider here but I think this is the right discussion.
>>>> 
>>>> Than ks
>>>> 
>>>> On Fri, Jul 23, 2021 at 7:26 AM Bryan Bende <bbe...@gmail.com> wrote:
>>>>> I'm a +1 for this... Not sure if this falls under "Removing Deprecated
>>>>> Components", but I think we should also look at anything that has been
>>>>> marked as deprecated throughout the code base as a candidate for
>>>>> removal. There are quite a few classes, methods, properties, etc that
>>>>> have been waiting for a chance to be removed.
>>>>> 
>>>>> On Fri, Jul 23, 2021 at 10:13 AM David Handermann
>>>>> <exceptionfact...@apache.org> wrote:
>>>>>> Team,
>>>>>> 
>>>>>> With all of the excellent work that many have contributed to NiFi over 
>>>>>> the
>>>>>> years, the code base has also accumulated some amount of technical debt. 
>>>>>> A
>>>>>> handful of components have been marked as deprecated, and some components
>>>>>> remain in the code base to support integration with old versions of 
>>>>>> various
>>>>>> products. Following the principles of semantic versioning, introducing a
>>>>>> major release would provide the opportunity to remove these deprecated 
>>>>>> and
>>>>>> unsupported components.
>>>>>> 
>>>>>> Rather than focusing the next major release on new features, what do you
>>>>>> think about focusing on technical debt removal? This approach would not
>>>>>> make for the most interesting release, but it provides the opportunity to
>>>>>> clean up elements that involve breaking changes.
>>>>>> 
>>>>>> Focusing on technical debt, at least three primary goals come to mind for
>>>>>> the next major release:
>>>>>> 
>>>>>> 1. Removal of deprecated and unmaintained components
>>>>>> 2. Require Java 11 as the minimum supported version
>>>>>> 3. Transition internal date and time handling to JSR 310 java.time
>>>>>> components
>>>>>> 
>>>>>> *Removing Deprecated Components*
>>>>>> 
>>>>>> Removing support for older and deprecated components provides a great
>>>>>> opportunity to improve the overall security posture when it comes to
>>>>>> maintaining dependencies. The OWASP dependency plugin report currently
>>>>>> generates 50 MB of HTML for questionable dependencies, many of which are
>>>>>> related to old versions of various libraries.
>>>>>> 
>>>>>> As a starting point, here are a handful of components and extension 
>>>>>> modules
>>>>>> that could be targeted for removal in a major version:
>>>>>> 
>>>>>> - PostHTTP and GetHTTP
>>>>>> - ListenLumberjack and the entire nifi-lumberjack-bundle
>>>>>> - ListenBeats and the entire nifi-beats-bundle
>>>>>> - Elasticsearch 5 components
>>>>>> - Hive 1 and 2 components
>>>>>> 
>>>>>> *Requiring Java 11*
>>>>>> 
>>>>>> Java 8 is now over seven years old, and NiFi has supported general
>>>>>> compatibility with Java 11 for several years. NiFi 1.14.0 incorporated
>>>>>> internal improvements specifically related to TLS 1.3, which allowed
>>>>>> closing out the long-running Java 11 compatibility epic NIFI-5174. Making
>>>>>> Java 11 the minimum required version provides the opportunity to address
>>>>>> any lingering edge cases and put NiFi in a better position to support
>>>>>> current Java versions.
>>>>>> 
>>>>>> *JSR 310 for Date and Time Handling*
>>>>>> 
>>>>>> Without making the scope too broad, transitioning internal date and time
>>>>>> handling to use DateTimeFormatter instead of SimpleDateFormat would 
>>>>>> provide
>>>>>> a number of advantages. The Java Time components provide much better
>>>>>> clarity when it comes to handling localized date and time 
>>>>>> representations,
>>>>>> and also avoid the inherent confusion of java.sql.Date extending
>>>>>> java.util.Date. Many internal components, specifically Record-oriented
>>>>>> processors and services, rely on date parsing, leading to confusion and
>>>>>> various workarounds. The pattern formats of SimpleDateFormat and
>>>>>> DateTimeFormatter are very similar, but there are a few subtle 
>>>>>> differences.
>>>>>> Making this transition would provide a much better foundation going 
>>>>>> forward.
>>>>>> 
>>>>>> *Conclusion*
>>>>>> 
>>>>>> Thanks for giving this proposal some consideration. Many of you have been
>>>>>> developing NiFi for years and I look forward to your feedback. I would be
>>>>>> glad to put together a more formalized recommendation on Confluence and
>>>>>> write up Jira epics if this general approach sounds agreeable to the
>>>>>> community.
>>>>>> 
>>>>>> Regards,
>>>>>> David Handermann
>>> 

Reply via email to