> On Mar 8, 2022, at 11:25 AM, Ralph Goers <ralph.go...@dslextreme.com> wrote:
> 
> Answers inline below. FWIW, these are my opinions. I don’t know that the PMC 
> has ever made declarations to these.

I would like this thread to be the start of us as a project documenting what 
expectations we want folks to have. Does that sound reasonable?


> 
>> On Mar 8, 2022, at 8:34 AM, Sean Busbey <sbus...@apple.com.INVALID> wrote:
>> 
>> 
>> Hi folks!
>> 
>> Apologies if I missed this discussion; I’ve read back through the dev list 
>> through 2021. I wanted to make sure I have the correct expectations before I 
>> start stomping around in Jira.
>> 
>> I haven’t found a write up anywhere on what promises we make for 
>> major/minor/patch versions.  What is the current expectation for:
>> 
>> - compatibility of configs
> 
> I tried to create a JSON version of the config. Unfortunately, the properties 
> syntax is not directly translatable as we allow both child properties and for 
> the property to have a value, which is not allowed in JSON and YAML. There 
> are a few other things I really don’t like about the config format.
> But… I would never dream of breaking compatibility in a 1.x release. It would 
> even be tough doing it in 2.0 unless it isn’t too painful.
> I would really love to integrate Flume with Spring Boot. That could mean the 
> Flume configuration could be in the application.yml. But that has issues. All 
> the Flume components use the config api and walk a properties tree. That 
> would still need to function. 
> 
> So my main point in this long-winded response is. Yes, I expect that configs 
> I currently have will continue to work in future releases.

What version change would be needed to break configuration handling? It sounds 
like you’d prefer it be only on major version number changes?

(I want to make sure we have consensus before I propose writing it down in the 
user guide.)

> 
>> - compatibility of versions of things we can connect to (e.g. Kafka servers)
> 
> There really isn’t much of a choice here. These 3rd party things make their 
> own rules. We don’t have much choice but to upgrade from time to time as the 
> older versions will be unsupported, which is a problem Flume currently faces 
> with many of its dependencies.

We as a project could still increment our versions to indicate when we’ve 
dropped support for older third party offerings e.g. because they are no longer 
providing updated older versions of things.

For example, if we drop support for talking to HDFS 2.x and require HDFS 3.x. I 
personally think it’d be better to convey that in a major version number, so 
that someone who is running an older HDFS and wants to upgrade Flume to deal 
with a CVE unrelated to HDFS could safely expect only a major version change 
from Flume would indicate they have something to worry about.


> 
>> - compatibility of folks who implement our APIs to make their own components
> 
> Every attempt should be made to keep APIs from breaking.

Sounds good.

I see we have InterfaceAudience and InterfaceStability annotations, similar to 
those provided by Apache Yetus Audience Annotations.

Are the guidelines provided in the InterfaceStability annotation class[1] still 
accurate?

* IA.Public/Stable - major version only
* IA.Public/Evolving - minor version only
* IA.Public/Unstable - can break in patch release

> 
>> 
>> I know a big focus right now is on updating dependencies.Talking about 
>> expectations for the above ahead of time will help downstream users 
>> understand how difficult adopting those new dependencies will be from their 
>> perspective.
>> 
>> Our last release was 1.9.0 in ~2019. The `trunk` branch currently has a 
>> SNAPSHOT version of 1.10.0. Right now JIRA has a combination of closed 
>> issues since 1.9.0 that say they are for version “2.0.0” and “1.10.0” and 
>> AFAICT the changes associated with them are all in the trunk branch.
>> 
>> What is our next planned release version? What is the planned release after 
>> that?
> 
> I am planning on the next release being 1.10.0. I haven’t given thought to 
> the release beyond that. I would only go to 2.0 if there is some significant 
> change to warrant it.
> 

Does this mean some new feature that requires it? Or is updating our code base 
for maintainability in a way that causes a breaking change sufficient? For 
example, FLUME-2957 is flagged as a breaking change and as a result was already 
held out of the 1.9.0 release.


>> 
>> If our next planned release is 1.10.0 and the release after that is 2.0.0, I 
>> think we should create a branch-1.10 now so that we have a place to triage 
>> which changes might need to be backed out depending on the above 
>> expectations for compatibility.
>> 
>> If we’re not planning on a 2.0.0 this year, then we’ll need to review the 
>> already landed changes to make sure they’re in line with whatever 
>> expectations we want to set about compatibility.
> 
> It is hard to say “we” and “planning” in the same sentence. Most of the 
> active Flume developers have gone on to other things, especially since 
> Cloudera no longer seems to use it, although Tristan has maintained an 
> interest in it.  I use it for a critical component in my employers 
> infrastructure. So I have personal reasons for wanting to improve it. There 
> are a few other PMC members who still monitor Flume and will participate in a 
> release vote, but as far as planning goes my feeling is that we are free to 
> assume there are no concrete plans.
> 

We’re an ASF project. Those of us who are participating here on the dev list 
are sufficient as a representation as the project planning in so far as any ASF 
project plans.

I think from your prior messages your goal for the 1.10.0 release is the 
feature addition of configuration via URI(s) and to have whatever dependencies 
we can get updated. Is that correct?

I think I won’t have an opinion on the timing of the release after 1.10.0 until 
we get through what the dependency updates look like.

[1]: 
https://github.com/apache/flume/blob/release-1.8.0/flume-ng-core/src/main/java/org/apache/flume/annotations/InterfaceStability.java

Reply via email to