All of lore.kernel.org
 help / color / mirror / Atom feed
* random thoughts on DEPRECATED and OBSOLETE
@ 2007-04-28 13:25 Robert P. J. Day
  2007-04-28 16:52 ` Stefan Richter
  2007-04-28 23:21 ` Tilman Schmidt
  0 siblings, 2 replies; 13+ messages in thread
From: Robert P. J. Day @ 2007-04-28 13:25 UTC (permalink / raw)
  To: Linux Kernel Mailing List


http://fsdev.net/wiki/index.php?title=Maturity_levels

rday

-- 
========================================================================
Robert P. J. Day
Linux Consulting, Training and Annoying Kernel Pedantry
Waterloo, Ontario, CANADA

http://fsdev.net/wiki/index.php?title=Main_Page
========================================================================

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: random thoughts on DEPRECATED and OBSOLETE
  2007-04-28 13:25 random thoughts on DEPRECATED and OBSOLETE Robert P. J. Day
@ 2007-04-28 16:52 ` Stefan Richter
  2007-04-28 18:05   ` Robert P. J. Day
  2007-04-28 23:21 ` Tilman Schmidt
  1 sibling, 1 reply; 13+ messages in thread
From: Stefan Richter @ 2007-04-28 16:52 UTC (permalink / raw)
  To: Robert P. J. Day; +Cc: linux-kernel

Robert P. J. Day wrote:
> http://fsdev.net/wiki/index.php?title=Maturity_levels
> 
> rday
> 

A few comments:

  - Your argument should include what the benefits of exposing
    DEPRECATED and OBSOLETE as machine-parsable tags are.

  - "...it's not really experimental but nonetheless claims to be. Bad
    craziness all around."
    Won't adding more maturity levels increase craziness?  All of the
    levels except BROKEN are highly subjective.  And such tags can and
    will become outdated.

  - How is the proposed "maturity" keyword to be used?  Will
        maturity EXPERIMENTAL
    replace
        config EXPERIMENTAL
    or
        depends on EXPERIMENTAL
    ?  One of your examples for the usage of the keyword, "maturity
    OBSOLETE && BROKEN", indicates it is the latter.

  - In case it is the latter, didn't you mean by this example "maturity
    OBSOLETE | BROKEN" rather than "maturity OBSOLETE && BROKEN"?

  - I sometimes voiced my opinion that the Kconfig language and files
    should stick to reflect the mere dependencies, while presentation
    should be left to the UIs.  The "maturity" directive is basically
    a variant of "config" or "depends on" with added presentational
    information.  Of course everybody is entitled to have a different
    opinion and ask for more presentational markup in Kconfig.

  - Something /can/ sensibly be DEPRECATED and OBSOLETE at the same
    time.
    (This also means the correct term is not maturity /levels/, but
    maturity attributes or the like.)
-- 
Stefan Richter
-=====-=-=== -=-- ===--
http://arcgraph.de/sr/

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: random thoughts on DEPRECATED and OBSOLETE
  2007-04-28 16:52 ` Stefan Richter
@ 2007-04-28 18:05   ` Robert P. J. Day
  2007-04-28 20:21     ` Stefan Richter
  0 siblings, 1 reply; 13+ messages in thread
From: Robert P. J. Day @ 2007-04-28 18:05 UTC (permalink / raw)
  To: Stefan Richter; +Cc: Linux kernel mailing list


stefan makes a number of points, all of which i'll add to the wiki
page shortly (if i get ambitious enough), but i'll answer them here as
well.

On Sat, 28 Apr 2007, Stefan Richter wrote:

> Robert P. J. Day wrote:
> > http://fsdev.net/wiki/index.php?title=Maturity_levels
> >
> > rday
> >
>
> A few comments:
>
>   - Your argument should include what the benefits of exposing
>     DEPRECATED and OBSOLETE as machine-parsable tags are.

assuming i understand you correctly, the advantage of adding these
attributes is to be able to (de)select, in one operation, anything of
that attribute type from your build (in the same way that you can
deselect anything EXPERIMENTAL in one mouse click).

i think there's a real benefit in being able to say that you can
configure and build a kernel that incorporates nothing that people
have labelled as obsolete or deprecated (or broken, etc.).

(hypothetically, you could do "make allyesconfig", then "make
menuconfig" and switch off anything tagged as OBSOLETE, then do your
build.  that *that* configuration should build would be, IMHO, more
important than whether a full build *including* obsolete stuff
builds.  all that's doing is prioritizing how much you care whether
various parts of the kernel actually compile even though, yes, you
probably want to eventually fix it up, anyway. but at least you can
compile-test the more important features first.)

>   - "...it's not really experimental but nonetheless claims to be. Bad
>     craziness all around."

>     Won't adding more maturity levels increase craziness?

not at all.  in fact, what it *will* do is prevent those mismatches
between some kernel feature visually *advertising* itself as being,
say, DEPRECATED, while, in reality, it's *not* tagged that way.  or
vice versa.  there's a lot of that going on in the current Kconfig
files as we speak (with EXPERIMENTAL, of course).

> All of the levels except BROKEN are highly subjective.

i don't think so.  we've had this discussion before, and most people
seem to agree on what it means for something to be "deprecated" and
what it means to be "obsolete."  it's not really *that* subjective.

> And such tags can and will become outdated.

how is that different from what's happening now?  there's stuff marked
"EXPERIMENTAL" that appears to have been in the kernel for years.
and, obviously, the only way a scheme like this is going to work is if
developers keep their own subsystems up to date and tag them
appropriately.

(note also that the beauty of this scheme is that you can start off
slowly and, a bit at a time, start tagging stuff with those new
attributes.  you don't need to do it all at once but, the more you use
it, the more rigorous and selective you can make your builds.)

>   - How is the proposed "maturity" keyword to be used?  Will
>         maturity EXPERIMENTAL
>     replace
>         config EXPERIMENTAL
>     or
>         depends on EXPERIMENTAL
>     ?  One of your examples for the usage of the keyword, "maturity
>     OBSOLETE && BROKEN", indicates it is the latter.

whoops, good point.  it would be used thusly:

config FUBAR
	bool "Grobnit the fubar"
	maturity DEPRECATED
	...

in addition, "maturity EXPERIMENTAL" would replace "depends on
EXPERIMENTAL", while you would lose the whole "config EXPERIMENTAL"
part completely, since EXPERIMENTAL would no longer be a regular
"config" option, but a maturity attribute.

>   - In case it is the latter, didn't you mean by this example "maturity
>     OBSOLETE | BROKEN" rather than "maturity OBSOLETE && BROKEN"?

no, it would make no sense to tag something as

	maturity OBSOLETE | BROKEN

as if there was a choice.  any kernel feature would be explicitly
tagged as one or more maturity attributes, as in one of, possibly:

	maturity OBSOLETE
	maturity BROKEN
	maturity BROKEN && OBSOLETE && PIECEOFCRAP

then, depending on your config selection, you would display *only*
those features whose attributes are a *subset* of what you selected:

	[*] OBSOLETE
	[ ] BROKEN

would display stuff that (in addition to the normal stuff with no
maturity tag at all) was OBSOLETE, but *not* OBSOLETE *and* BROKEN,
since you clearly did not select BROKEN.

> I sometimes voiced my opinion that the Kconfig language and files
> should stick to reflect the mere dependencies, while presentation
> should be left to the UIs.  The "maturity" directive is basically a
> variant of "config" or "depends on" with added presentational
> information.

in a way, yes, it's a variant, but it's a variant that differs enough
from a regular "config" and "depends on" that i think trying to mix
the two would be a horribly bad idea.

i like your suggestion of calling it an "attribute".  it's sort of
like assigning a type.  but the point to note is that this whole idea
has a precedent -- EXPERIMENTAL.  once you've allowed kernel features
to be tagged as EXPERIMENTAL, you're really opened the door to other
types of maturity levels that would be just as useful.  personally, i
don't know how anyone can accept the notion of EXPERIMENTAL, yet
resist adding more maturity levels, but that's just me.

> Of course everybody is entitled to have a different opinion and ask
> for more presentational markup in Kconfig.

fair enough, but it's not just presentational markup, in the same way
that EXPERIMENTAL isn't *just* presentational markup -- it means more
than that.

> Something /can/ sensibly be DEPRECATED and OBSOLETE at the same
> time.

i disagree.  in previous exchanges, most people seemed satisfied that
those two terms were mutually exclusive.  i think the difference in
their definitions is self-evident.

> (This also means the correct term is not maturity /levels/, but
> maturity attributes or the like.)

sure, i can go with that, but it's not like it's a critical
distinction since only the word "maturity" need appear in the Kconfig
file, anyway.

rday

p.s.  a couple more observations.  first, rather than mess with
EXPERIMENTAL or BROKEN, those can be left entirely alone and a new
structure can be added to the parser to support *just* maturity levels
of DEPRECATED and OBSOLETE.  once that seems to work well,
EXPERIMENTAL and BROKEN can be moved over some time in the future but,
even without that move, a restricted maturity attribute would still be
useful and informative.

also, once a few things get tagged, then, as i mentioned before, a
full tree build can be done in stages.  i recall andrew grumbling that
he was still trying to get a full configuration to build.  but why try
to do it all at once?

i'd start with an "allyesconfig" but leaving out all the DEPRECATED,
OBSOLETE and BROKEN stuff and beat on that until it worked.  then i'd
add in the DEPRECATED stuff and do it again.  finally, add the
OBSOLETE stuff.  at each stage, the build might fail but, the further
you get into it, the less a build failure should concern you.

it's just a thought.

-- 
========================================================================
Robert P. J. Day
Linux Consulting, Training and Annoying Kernel Pedantry
Waterloo, Ontario, CANADA

http://fsdev.net/wiki/index.php?title=Main_Page
========================================================================

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: random thoughts on DEPRECATED and OBSOLETE
  2007-04-28 18:05   ` Robert P. J. Day
@ 2007-04-28 20:21     ` Stefan Richter
  2007-04-28 20:26       ` Stefan Richter
  2007-04-28 21:04       ` Robert P. J. Day
  0 siblings, 2 replies; 13+ messages in thread
From: Stefan Richter @ 2007-04-28 20:21 UTC (permalink / raw)
  To: Robert P. J. Day; +Cc: Linux kernel mailing list

Robert P. J. Day wrote:
> On Sat, 28 Apr 2007, Stefan Richter wrote:
>> Robert P. J. Day wrote:
>>> http://fsdev.net/wiki/index.php?title=Maturity_levels
...
>>   - Your argument should include what the benefits of exposing
>>     DEPRECATED and OBSOLETE as machine-parsable tags are.

(I said that because most things go in because they have uses, not just
because we can.)

> assuming i understand you correctly, the advantage of adding these
> attributes is to be able to (de)select, in one operation, anything of
> that attribute type from your build (in the same way that you can
> deselect anything EXPERIMENTAL in one mouse click).
> 
> i think there's a real benefit in being able to say that you can
> configure and build a kernel that incorporates nothing that people
> have labelled as obsolete or deprecated (or broken, etc.).

And that benefit is...? :-)

I suppose it's for example a convenient way to test-build a kernel
without deprecated stuff, run the kernel, and see if anything in
userland breaks.  Then take measures to update userland in time, or get
in touch with whoever declared the deprecation, before it's too late.

You probably have more applications in mind and maybe even posted about
them before.  (See also at the end of this mail.)

[...]
>>   - "...it's not really experimental but nonetheless claims to be. Bad
>>     craziness all around."
> 
>>     Won't adding more maturity levels increase craziness?
> 
> not at all.  in fact, what it *will* do is prevent those mismatches
> between some kernel feature visually *advertising* itself as being,
> say, DEPRECATED, while, in reality, it's *not* tagged that way.

Ah, I see.  (It gets better because you reduce redundancy of Kconfig
expressions vs. Kconfig display strings.)

[...]
>> All of the levels except BROKEN are highly subjective.
> 
> i don't think so.  we've had this discussion before, and most people
> seem to agree on what it means for something to be "deprecated" and
> what it means to be "obsolete."  it's not really *that* subjective.

Sorry, I didn't express myself clearly.  It's quite clear what the
labels mean.  But it can be controversial whether a piece of code
deserves one of these labels.  Except for BROKEN, whose applicability
can be proven or falsified.

>> And such tags can and will become outdated.
> 
> how is that different from what's happening now?

The difference is that there will be even more tags which require
attention to keep them up to date.  Although that's hardly a problem if
there is an alert maintainer or janitor, or at least an enthusiastic
user who sends a notice to LKML.

> there's stuff marked
> "EXPERIMENTAL" that appears to have been in the kernel for years.

It is sometimes true for years, although that's not the goal for
software in mainline.

> and, obviously, the only way a scheme like this is going to work is if
> developers keep their own subsystems up to date and tag them
> appropriately.

Yep.

[...]
>> I sometimes voiced my opinion that the Kconfig language and files
>> should stick to reflect the mere dependencies, while presentation
>> should be left to the UIs.  The "maturity" directive is basically a
>> variant of "config" or "depends on" with added presentational
>> information.

[of "depend on", as you clarified]

> in a way, yes, it's a variant, but it's a variant that differs enough
> from a regular "config" and "depends on" that i think trying to mix
> the two would be a horribly bad idea.
[...]
>> Of course everybody is entitled to have a different opinion and ask
>> for more presentational markup in Kconfig.
> 
> fair enough, but it's not just presentational markup, in the same way
> that EXPERIMENTAL isn't *just* presentational markup -- it means more
> than that.

"maturity" is just like "depends on" with the added feature that UIs are
supposed to print the flag onto the screen even if the user did not
enable a debug mode of the UI.

It's really nothing more.  Nobody stops you for example from writing a
derivative of make allyesconfig which says N to CONFIG_EXPERIMENTAL.

>> Something /can/ sensibly be DEPRECATED and OBSOLETE at the same
>> time.
> 
> i disagree.  in previous exchanges, most people seemed satisfied that
> those two terms were mutually exclusive.  i think the difference in
> their definitions is self-evident.

Yes, they have different meanings.  No, they are not exclusive, they are
orthogonal.

DEPRECATED = "I don't want you to build or run this if you can possibly
avoid it."

OBSOLETE = "There is other stuff which does more or less the same, and
this here could go away in the future."

[...]
> also, once a few things get tagged, then, as i mentioned before, a
> full tree build can be done in stages.  i recall andrew grumbling that
> he was still trying to get a full configuration to build.  but why try
> to do it all at once?
> 
> i'd start with an "allyesconfig" but leaving out all the DEPRECATED,
> OBSOLETE and BROKEN stuff and beat on that until it worked.  then i'd
> add in the DEPRECATED stuff and do it again.  finally, add the
> OBSOLETE stuff.  at each stage, the build might fail but, the further
> you get into it, the less a build failure should concern you.

Aha, a tool to split and prioritize an integrator's efforts to unbreak
things.  It's another of the applications you could have mentioned to
show the benefits of the facility. :-)
-- 
Stefan Richter
-=====-=-=== -=-- ===--
http://arcgraph.de/sr/

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: random thoughts on DEPRECATED and OBSOLETE
  2007-04-28 20:21     ` Stefan Richter
@ 2007-04-28 20:26       ` Stefan Richter
  2007-04-28 21:04       ` Robert P. J. Day
  1 sibling, 0 replies; 13+ messages in thread
From: Stefan Richter @ 2007-04-28 20:26 UTC (permalink / raw)
  To: Robert P. J. Day; +Cc: Linux kernel mailing list

I wrote:
> Robert P. J. Day wrote:
>> there's stuff marked
>> "EXPERIMENTAL" that appears to have been in the kernel for years.
> 
> It is sometimes true for years, although that's not the goal for
> software in mainline.

Because EXPERIMENTAL does not mean "is subject to currently ongoing
experiments" but rather "is unfinished code which is known to work
incorrectly sometimes".
-- 
Stefan Richter
-=====-=-=== -=-- ===--
http://arcgraph.de/sr/

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: random thoughts on DEPRECATED and OBSOLETE
  2007-04-28 20:21     ` Stefan Richter
  2007-04-28 20:26       ` Stefan Richter
@ 2007-04-28 21:04       ` Robert P. J. Day
  2007-04-28 22:28         ` Stefan Richter
  1 sibling, 1 reply; 13+ messages in thread
From: Robert P. J. Day @ 2007-04-28 21:04 UTC (permalink / raw)
  To: Stefan Richter; +Cc: Linux kernel mailing list

On Sat, 28 Apr 2007, Stefan Richter wrote:

> Robert P. J. Day wrote:
> > On Sat, 28 Apr 2007, Stefan Richter wrote:
> >> Robert P. J. Day wrote:

> > i think there's a real benefit in being able to say that you can
> > configure and build a kernel that incorporates nothing that people
> > have labelled as obsolete or deprecated (or broken, etc.).
>
> And that benefit is...? :-)

the same benefit you get from being able to deselect all EXPERIMENTAL
stuff -- the knowledge that you can build a fully-functional kernel
without having to rely on anything that's considered broken or
deprecated or obsolete.

at this point, i think i've pretty much bored everyone to tears making
a case for why i think there's actual value to this feature.  if
you're not convinced, there's nothing else i can think of to say that
will persuade you.

> I suppose it's for example a convenient way to test-build a kernel
> without deprecated stuff, run the kernel, and see if anything in
> userland breaks.  Then take measures to update userland in time, or
> get in touch with whoever declared the deprecation, before it's too
> late.

exactly.  being able to deselect deprecated or obsolete stuff en masse
this easily means you can figure out *way* ahead of time whether
finally removing something will cause problems, rather than suddenly
learning that only when the actual removal happens.

> Ah, I see.  (It gets better because you reduce redundancy of Kconfig
> expressions vs. Kconfig display strings.)

yup.  i'm assuming that it's a trivial change to the display routine
to add a parenthesized maturity level (or levels) to the end of the
label when you're running "make xconfig" or "make menuconfig" or ...
etc etc.

> [...]
> >> All of the levels except BROKEN are highly subjective.
> >
> > i don't think so.  we've had this discussion before, and most
> > people seem to agree on what it means for something to be
> > "deprecated" and what it means to be "obsolete."  it's not really
> > *that* subjective.
>
> Sorry, I didn't express myself clearly.  It's quite clear what the
> labels mean.  But it can be controversial whether a piece of code
> deserves one of these labels.

in the first place, that would be *entirely* the decision of the
maintainer, just as it is now.  but nothing says that starting to tag
stuff has to affect you in any way.  there should be a top-level
selection that lets you even *activate* the maturity level settings as
part of your configuration.

if you don't want to take that stuff into account, you should be able
to turn it off entirely with a single switch, as in:

  [*] Activate maturity attributes
    [*] EXPERIMENTAL
    [*] DEPRECATED
    [*] OBSOLETE
    [*] BROKEN

if you choose not to care about maturity levels, then nothing will be
filtered at all.  so everybody's happy.

> >> And such tags can and will become outdated.
> >
> > how is that different from what's happening now?
>
> The difference is that there will be even more tags which require
> attention to keep them up to date.

i don't see that being a problem.  personally, if i was building a
kernel for my system, my first attempt would be to build one without
anything tagged DEPRECATED, OBSOLETE or BROKEN.  and if that kernel
failed because a critical feature was left out of the build, i would
be *so* instantly all over the ass of the subsystem maintainer who
erroneously tagged it that way.

this wouldn't make maturity tagging harder -- it would make it
*easier*.

> Although that's hardly a problem if there is an alert maintainer or
> janitor, or at least an enthusiastic user who sends a notice to
> LKML.

i don't think it would even need that, if people change the way they
do builds by *starting* with only those features that aren't tagged
and seeing if that fails for some reason.  it would certainly be the
way *i* would start doing builds from now on.

> "maturity" is just like "depends on" with the added feature that UIs
> are supposed to print the flag onto the screen even if the user did
> not enable a debug mode of the UI.
>
> It's really nothing more.  Nobody stops you for example from writing
> a derivative of make allyesconfig which says N to
> CONFIG_EXPERIMENTAL.

sure, i have no disagreement with that.  (um ... was there something
there i was supposed to address?  it just sounded like you were
clarifying what we were talking about.)

> >> Something /can/ sensibly be DEPRECATED and OBSOLETE at the same
> >> time.
> >
> > i disagree.  in previous exchanges, most people seemed satisfied
> > that those two terms were mutually exclusive.  i think the
> > difference in their definitions is self-evident.
>
> Yes, they have different meanings.  No, they are not exclusive, they
> are orthogonal.
>
> DEPRECATED = "I don't want you to build or run this if you can
> possibly avoid it."
>
> OBSOLETE = "There is other stuff which does more or less the same,
> and this here could go away in the future."

nope.  we've been down this road before, and the consensus was that
something could be one of deprecated or obsolete, but not both.  i can
re-post those definitions if you want, or you could read about them
here:

http://kerneltrap.org/node/7593

> > also, once a few things get tagged, then, as i mentioned before, a
> > full tree build can be done in stages.  i recall andrew grumbling
> > that he was still trying to get a full configuration to build.
> > but why try to do it all at once?
> >
> > i'd start with an "allyesconfig" but leaving out all the
> > DEPRECATED, OBSOLETE and BROKEN stuff and beat on that until it
> > worked.  then i'd add in the DEPRECATED stuff and do it again.
> > finally, add the OBSOLETE stuff.  at each stage, the build might
> > fail but, the further you get into it, the less a build failure
> > should concern you.
>
> Aha, a tool to split and prioritize an integrator's efforts to
> unbreak things.  It's another of the applications you could have
> mentioned to show the benefits of the facility. :-)

i could have except i just thought of it as i was responding to your
earlier email.  :-)

rday
-- 
========================================================================
Robert P. J. Day
Linux Consulting, Training and Annoying Kernel Pedantry
Waterloo, Ontario, CANADA

http://fsdev.net/wiki/index.php?title=Main_Page
========================================================================

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: random thoughts on DEPRECATED and OBSOLETE
  2007-04-28 21:04       ` Robert P. J. Day
@ 2007-04-28 22:28         ` Stefan Richter
  2007-04-28 23:31           ` Robert P. J. Day
  2007-04-28 23:38           ` Robert P. J. Day
  0 siblings, 2 replies; 13+ messages in thread
From: Stefan Richter @ 2007-04-28 22:28 UTC (permalink / raw)
  To: Robert P. J. Day; +Cc: Linux kernel mailing list

Robert P. J. Day wrote:
> On Sat, 28 Apr 2007, Stefan Richter wrote:
>> And that benefit is...? :-)
...
> if you're not convinced, there's nothing else i can think of to say
> that will persuade you.

It didn't come across this way, sorry, but I didn't ask a priori to be
persuaded, but rather because I thought your argument (at the wiki site)
could be enhanced by pointing out the concrete applications of the
facility.  When I visited the page, it only explained how the facility
works, not what the end-use is.

[...]
>> But it can be controversial whether a piece of code
>> deserves one of these labels.
> 
> in the first place, that would be *entirely* the decision of the
> maintainer, just as it is now.  but nothing says that starting to tag
> stuff has to affect you in any way.  there should be a top-level
> selection that lets you even *activate* the maturity level settings as
> part of your configuration.

(Although if a certain number of kernel components is inappropriately
labeled, the facility becomes useless of course.)

[...]
>> "maturity" is just like "depends on" with the added feature that UIs
>> are supposed to print the flag onto the screen even if the user did
>> not enable a debug mode of the UI.
>>
>> It's really nothing more.
[...]
> sure, i have no disagreement with that.  (um ... was there something
> there i was supposed to address?  it just sounded like you were
> clarifying what we were talking about.)

You said "it's not just presentational markup", I said "it is". :-)

[deprecated and obsolete exclusive?]
>> DEPRECATED = "I don't want you to build or run this if you can
>> possibly avoid it."
>>
>> OBSOLETE = "There is other stuff which does more or less the same,
>> and this here could go away in the future."
> 
> nope.  we've been down this road before, and the consensus was that
> something could be one of deprecated or obsolete, but not both.  i can
> re-post those definitions if you want, or you could read about them
> here:
> 
> http://kerneltrap.org/node/7593

I see a discussion on OBSOLETE vs. BROKEN there, which even ended in a
consensus, but I do not see an explicit discussion on OBSOLETE vs.
DEPRECATED.  The only definition of DEPRECATED I see there is yours, and
as it is worded, it is largely overlapping with the definition of
OBSOLETE (which, as it is laid down in that thread, is mostly yours too)
--- but it is not actually conflicting with it.

Note, another classification system can be found in
Documentation/ABI/README.  That one also features the category
"obsolete", but does not include a category "deprecated".  This is
beneficial because it doesn't leave room for disagreeing interpretations
like ours, nor for any overlap in the definitions like in those at the
end of the thread you referenced.
-- 
Stefan Richter
-=====-=-=== -=-- ===--
http://arcgraph.de/sr/

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: random thoughts on DEPRECATED and OBSOLETE
  2007-04-28 13:25 random thoughts on DEPRECATED and OBSOLETE Robert P. J. Day
  2007-04-28 16:52 ` Stefan Richter
@ 2007-04-28 23:21 ` Tilman Schmidt
  1 sibling, 0 replies; 13+ messages in thread
From: Tilman Schmidt @ 2007-04-28 23:21 UTC (permalink / raw)
  To: Robert P. J. Day, LKML

[-- Attachment #1: Type: text/plain, Size: 663 bytes --]

Am 28.04.2007 15:25 schrieb Robert P. J. Day:
> http://fsdev.net/wiki/index.php?title=Maturity_levels

You note:

> DEPRECATED and OBSOLETE at the very least, whose definitions should be reasonably obvious.

The obviousness is in the eye of the beholder. :-)

For the sake of us non-native speakers, the definitions might
bear spelling out. I know I've had my understanding of those two
terms significantly adjusted during the last discussion of them.

Thanks,
Tilman

-- 
Tilman Schmidt                          E-Mail: tilman@imap.cc
Bonn, Germany
- In theory, there is no difference between theory and practice.
  In practice, there is.


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 253 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: random thoughts on DEPRECATED and OBSOLETE
  2007-04-28 22:28         ` Stefan Richter
@ 2007-04-28 23:31           ` Robert P. J. Day
  2007-04-29  0:29             ` Stefan Richter
  2007-04-28 23:38           ` Robert P. J. Day
  1 sibling, 1 reply; 13+ messages in thread
From: Robert P. J. Day @ 2007-04-28 23:31 UTC (permalink / raw)
  To: Stefan Richter; +Cc: Linux kernel mailing list

On Sun, 29 Apr 2007, Stefan Richter wrote:

> (Although if a certain number of kernel components is
> inappropriately labeled, the facility becomes useless of course.)

well, sure, but if someone chooses to use a tool incorrectly, there's
really no way to stop them.  and i'm guessing that that sort of thing
would be quickly self-correcting based on peer pressure.  incorrectly
tagged features should become obvious fairly quickly when builds start
to break in unexpected ways.

> You said "it's not just presentational markup", I said "it is". :-)

no, it's not just presentational markup.  it's also a selection or
filtering utility, which i consider distinct from markup.  maybe we're
just disagreeing on semantics, so let's not flog this distinction.

> I see a discussion on OBSOLETE vs. BROKEN there, which even ended in
> a consensus, but I do not see an explicit discussion on OBSOLETE vs.
> DEPRECATED.  The only definition of DEPRECATED I see there is yours,
> and as it is worded, it is largely overlapping with the definition
> of OBSOLETE (which, as it is laid down in that thread, is mostly
> yours too) --- but it is not actually conflicting with it.

in a previous discussion, the definitions were pretty much as follows:

* deprecated:  while a feature is still supported, its use is
discouraged because there is a better alternative that you should
consider migrating to at your convenience.

* obsolete:  while a feature is still in the tree, it is no longer
supported and no one should need it anymore, and everyone *should* be
using the better alternative at this point.

IMHO, there is a clear distinction between those two definitions.
they are not orthogonal, they are mutually exclusive.  put another
way, there is an obvious timeline for features:

  normal -> deprecated -> obsolete

quite simply, based on the above, you can't be deprecated and obsolete
at the same time.

in any event, i don't want to drag this out too much longer.  i think
the proposal is reasonably clear, now it remains to be seen if enough
people think it's worth implementing.

rday
-- 
========================================================================
Robert P. J. Day
Linux Consulting, Training and Annoying Kernel Pedantry
Waterloo, Ontario, CANADA

http://fsdev.net/wiki/index.php?title=Main_Page
========================================================================

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: random thoughts on DEPRECATED and OBSOLETE
  2007-04-28 22:28         ` Stefan Richter
  2007-04-28 23:31           ` Robert P. J. Day
@ 2007-04-28 23:38           ` Robert P. J. Day
  2007-04-29  0:22             ` Stefan Richter
  1 sibling, 1 reply; 13+ messages in thread
From: Robert P. J. Day @ 2007-04-28 23:38 UTC (permalink / raw)
  To: Stefan Richter; +Cc: Linux kernel mailing list

On Sun, 29 Apr 2007, Stefan Richter wrote:

> I see a discussion on OBSOLETE vs. BROKEN there, which even ended in
> a consensus, but I do not see an explicit discussion on OBSOLETE vs.
> DEPRECATED.

i think this online definition matches what i have in mind:

http://www.google.com/search?hl=en&rls=GGGL,GGGL:2006-10,GGGL:en&defl=en&q=define:Deprecated&sa=X&oi=glossary_definition&ct=title

"A deprecated element or attribute is one that has been outdated by
newer constructs. Deprecated elements are defined in the reference
manual in appropriate locations, but are clearly marked as deprecated.
Deprecated elements may become obsolete in future versions of HTML. We
recommend that authors avoid using deprecated elements and attributes
whenever practical."

  note carefully how deprecated elements can still be used, but their
use is discouraged and they *may become obsolete*.  that's exactly
what i was getting at.  deprecated stuff *might* still be used;
obsolete stuff *shouldn't* be used.

rday

p.s.  just FYI, even *i'm* getting bored of this.  :-)

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: random thoughts on DEPRECATED and OBSOLETE
  2007-04-28 23:38           ` Robert P. J. Day
@ 2007-04-29  0:22             ` Stefan Richter
  2007-04-29  6:34               ` Robert P. J. Day
  0 siblings, 1 reply; 13+ messages in thread
From: Stefan Richter @ 2007-04-29  0:22 UTC (permalink / raw)
  To: Robert P. J. Day; +Cc: Linux kernel mailing list

Robert P. J. Day wrote:
> i think this online definition matches what i have in mind:
> 
> http://www.google.com/search?hl=en&rls=GGGL,GGGL:2006-10,GGGL:en&defl=en&q=define:Deprecated&sa=X&oi=glossary_definition&ct=title

"Definitions of Deprecated on the Web: [...] This term is used to refer
to /obsolete/ structures that should not be used for new applications".

Emphasis is mine.
I can agree with this and the other definitions at this search result.

> p.s.  just FYI, even *i'm* getting bored of this.  :-)

I thought so. :-)
-- 
Stefan Richter
-=====-=-=== -=-- ===-=
http://arcgraph.de/sr/

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: random thoughts on DEPRECATED and OBSOLETE
  2007-04-28 23:31           ` Robert P. J. Day
@ 2007-04-29  0:29             ` Stefan Richter
  0 siblings, 0 replies; 13+ messages in thread
From: Stefan Richter @ 2007-04-29  0:29 UTC (permalink / raw)
  To: Robert P. J. Day; +Cc: Linux kernel mailing list

Robert P. J. Day wrote:
> * deprecated:  while a feature is still supported, its use is
> discouraged because there is a better alternative that you should
> consider migrating to at your convenience.

IOW "discouraged, no {mid,long}-term commitment, alternative available,
supported"

> * obsolete:  while a feature is still in the tree, it is no longer
> supported and no one should need it anymore, and everyone *should* be
> using the better alternative at this point.

IOW "discouraged, no {mid,long}-term commitment, alternative available,
*un*supported"

Note, that's different from http://kerneltrap.org/node/7593 --- the
supported bit is new.  Why would I officially support what I deprecate?

Also, why don't we just adopt what "deprecated" and "obsolete" mean in
real life?  (English dictionaries say, one means "disapproved", the
other means "outdated" or "no longer in use".)  And if you don't find
these meanings applicable, other terms should be chosen whose
established meaning better matches what you want to express.

[...]
> there is an obvious timeline for features:
> 
>   normal -> deprecated -> obsolete

That wasn't clear (to me) from your earlier definitions.

IOW "normal" -> "obsolete and deprecated, phase 1" -> "obsolete and
deprecated, phase 2"  (using the real-life meanings of the terms here)

with the fine distinction that there is still support available in phase
1, however curious that is.

Besides, I find it unfeasible to divide a feature removal process into
two phases.  (I was involved in feature removals before and continue to
be involved in them.)

[...]
> in any event, i don't want to drag this out too much longer.

At least my pestering seems to lead to increasing precision in your
wordings.  And believe me, precision in a feature removal process is
valuable for each party involved.
-- 
Stefan Richter
-=====-=-=== -=-- ===-=
http://arcgraph.de/sr/

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: random thoughts on DEPRECATED and OBSOLETE
  2007-04-29  0:22             ` Stefan Richter
@ 2007-04-29  6:34               ` Robert P. J. Day
  0 siblings, 0 replies; 13+ messages in thread
From: Robert P. J. Day @ 2007-04-29  6:34 UTC (permalink / raw)
  To: Stefan Richter; +Cc: Linux kernel mailing list

On Sun, 29 Apr 2007, Stefan Richter wrote:

> Robert P. J. Day wrote:
> > i think this online definition matches what i have in mind:
> >
> > http://www.google.com/search?hl=en&rls=GGGL,GGGL:2006-10,GGGL:en&defl=en&q=define:Deprecated&sa=X&oi=glossary_definition&ct=title
>
> "Definitions of Deprecated on the Web: [...] This term is used to refer
> to /obsolete/ structures that should not be used for new applications".
>
> Emphasis is mine.
> I can agree with this and the other definitions at this search result.

you're conflating those two again.  here's my last attempt -- see the
definitions here:

http://www.w3.org/TR/html401/conform.html

and note the fundamental distinction:

deprecated:  "... User agents should continue to support deprecated
                                     ^^^^^^^^^^^^^^^^^^^
elements for reasons of backward compatibility..."

obsolete:  "... no guarantee of support by a user agent."
                ^^^^^^^^^^^^^^^^^^^^^^^
  that's it -- there's the fundamental difference.  i really don't
care if you can find other wordings that you can interpret
differently.  in *my* proposal, those two definitions are not
orthogonal, they are mutually exclusive.  period.  end of discussion.
if you can't accept that, feel free to submit your own proposal.

rday
-- 
========================================================================
Robert P. J. Day
Linux Consulting, Training and Annoying Kernel Pedantry
Waterloo, Ontario, CANADA

http://fsdev.net/wiki/index.php?title=Main_Page
========================================================================

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2007-04-29  6:34 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-04-28 13:25 random thoughts on DEPRECATED and OBSOLETE Robert P. J. Day
2007-04-28 16:52 ` Stefan Richter
2007-04-28 18:05   ` Robert P. J. Day
2007-04-28 20:21     ` Stefan Richter
2007-04-28 20:26       ` Stefan Richter
2007-04-28 21:04       ` Robert P. J. Day
2007-04-28 22:28         ` Stefan Richter
2007-04-28 23:31           ` Robert P. J. Day
2007-04-29  0:29             ` Stefan Richter
2007-04-28 23:38           ` Robert P. J. Day
2007-04-29  0:22             ` Stefan Richter
2007-04-29  6:34               ` Robert P. J. Day
2007-04-28 23:21 ` Tilman Schmidt

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.