On 30/08/2012, at 9:28 AM, Hans Dockter <[email protected]> wrote:

> 
> 
> On Thu, Aug 30, 2012 at 10:18 AM, Luke Daley <[email protected]> wrote:
> 
> 
> 
> 
> On 30/08/2012, at 8:27 AM, Hans Dockter <[email protected]> wrote:
> 
>> So far we have used the term experimental for features with the following 
>> attributes:
>> 
>> - The implementation quality of the feature was already as good as it gets. 
>> But the API is not stable yet.
>> - We were not sure whether the implementation quality was production ready 
>> (or we knew already that it wasn't). We don't release usually half baked 
>> stuff. But for features that are tough engineering challenges like the 
>> Gradle daemon or now the parallel build there is no chance to get it right 
>> from the beginning. 
>> - Both of the above.
>> 
>> I'm not sure if the term experimental is the right one. When I hear 
>> experimental, my association is:
>> 1.) That we are not sure yet whether the feature is of value to our users. 
>> We might drop it in the future.
>> 2.) The quality is not very high.
>> 
>> 1.) has never been the case of any of the features we are introducing as 
>> experimental. 
>> 2.) Might be the case, see above.
>> 
>> I think it is pretty important to get the terminology right here as this 
>> 'experimentalness' is a crucial part of our development process (see: 
>> http://forums.gradle.org/gradle/topics/the_gradle_release_approach).
>> 
>> We don't want to make things unnecessary complex. Then again we don't want 
>> that people get a misunderstanding.
>> 
>> For some of those features the term unstable is I think the best one. If I 
>> had to decide between the term experimental or unstable I would go for 
>> unstable. It is also an established term for linux development. Another 
>> question is whether we want to use different terminologies to better capture 
>> the two scenarios decribed above. My feeling is that this is not necessary. 
>> For specific features like parallel build we can always print tailored 
>> warnings that manage the expectations for those features.
>> 
>> So what I would like to discuss is whether we should use the term unstable 
>> instead of experimental:
>> - When we talk about it in the forum
>> - In the release notes
>> - In the DSL
> 
> I strongly want to avoid more than one term as it's too confusing for users.
> 
> I see two things we want to communicate:
> 
> 1. The public API is in flux, and/or
> 2. The feature is incomplete in terms of stability so we expect some issues
> 
> The reason we release stuff with these characteristics is that putting in the 
> hands of users early makes it better in the long run and it may be good 
> enough for some.
> 
> I like the term "incubating" more than "unstable". It implies that it's 
> growing; moving forward. A precedent for this term would be the ASF 
> incubation process.
> 
> The term "unstable" is too negative to me.
> 
> Although it is used a lot in the linux distribution/development world?

Yeah it is.

And that's such a user friendly/centric environment right? :) (I'm going to get 
it from a Linux person for that).

>  
> While "incubating" has a positive feel.
> 
> Incubating is an appealing alternative.  I agree that it is more positive. 
> The only argument that comes to my mind against it is that it might not 
> manage the expectation properly that the API is changing.

I think that's a good thing. It describes the state of the feature, and we then 
can define the characteristics of a feature in that state.

Different kinds of features may have different characteristics during 
incubation. While some characteristics, e.g. unstable public API, applies to 
all incubating features.

> Than again you can't specify everything perfectly with one word anyhow. It is 
> our job in the release notes and in the other documentation to define what we 
> exactly mean by it.

Yes, and we would use it consistently and universally which aids understanding.

> So I like incubation quite a bit.
> 
> Hans
>  
> 
> I want to stay well away from "experimental".
> 
>  
> 

Reply via email to