Subject: Re: [netmod] deprecated and conformance

From: Balazs Lengyel <[email-masked]>
Date: Fri, 08 Aug 2008 12:01:16 +0200

Hello,
I think the definition of deprecated should be changed. Today it states that if foo is 
deprecated it might or might not be there, but I agree with Andy that it should rather mean it 
is supported now, but will be removed in the future (that is the same philosophy that they use 
in Java). So the proposed text is:

Old text:

"deprecated" indicates an obsolete definition, but it permits new/
       continued implementation in order to foster interoperability with
       older/existing implementations.

New text:

"deprecated" means that a definition is still implemented and usable - but you should not use 
it. It will gradually be phased out in the future.

Balazs

Andy Bierman wrote:
> Juergen Schoenwaelder wrote:
>> On Wed, Jul 02, 2008 at 09:16:23AM +0200, Martin Bjorklund wrote:
>>  
>>> As we have discussed earlier, we don't currently have a fine grained
>>> agent conformance mechanism, and it seems consensus is to not do this 
>>> now
>>> (with the possible exception of when-capability).
>>>
>>> This means that a server that claims conformance to a module must
>>> implement it fully (modulo when-capability).
>>>
>>> But this makes a 'deprected' object problematic.  If an object is
>>> deprecated, it means:
>>>
>>>    "deprecated" indicates an obsolete definition, but it permits
>>>    new/continued implementation in order to foster
>>>    interoperability with older/existing implementations.
>>>
>>> So a client knows that a server fully implements a module, but if
>>> there are any deprecated objects, it doesn't know if those objects are
>>> implemented or not.
>>>
>>> Can we remove 'deprected' and use 'current' and 'obsolete' only?
>>
>> The assumption that every implementation will implement modules fully
>> is an illusion if you ask me. I think the distinction between obsolete
>> and deprecated has been useful in the SMI space and so I would not
>> easily give it up.
>>
> 
> deprecated serves a very useful purpose -- it means the
> feature is supported now, but it will go away in the future.
> It is needed to phase out old API mechanisms, instead of
> eliminating them abruptly from version N to N+1.
> 
>> /js
>>
> 
> Andy
> 
> _______________________________________________
> netmod mailing list
> [email-masked]
> https://www.ietf.org/mailman/listinfo/netmod

-- 
Balazs Lengyel                       Ericsson Hungary Ltd.
TSP System Manager
ECN: 831 7320                        Fax: +36 1 4377792
Tel: +36-1-437-7320     email: [email-masked]
_______________________________________________
netmod mailing list
[email-masked]
https://www.ietf.org/mailman/listinfo/netmod

---

From: Juergen Schoenwaelder <[email-masked]>
Date: Mon, 18 Aug 2008 13:50:49 +0200

On Fri, Aug 08, 2008 at 12:01:16PM +0200, Balazs Lengyel wrote:

> I think the definition of deprecated should be changed. Today it states 
> that if foo is deprecated it might or might not be there, but I agree 
> with Andy that it should rather mean it is supported now, but will be 
> removed in the future (that is the same philosophy that they use in 
> Java).
> So the proposed text is:
>
> Old text:
>
> "deprecated" means that a definition is still implemented and usable - 
> but you should not use it. It will gradually be phased out in the future.

I believe the wording "is still implemented and usable" is asking for
confusion. What about this:

  "deprecated" means that a definition is still supported but should
  not be used anymore.

/js

-- 
Juergen Schoenwaelder           Jacobs University Bremen gGmbH
Phone: +49 421 200 3587         Campus Ring 1, 28759 Bremen, Germany
Fax:   +49 421 200 3103         <http://www.jacobs-university.de/>
_______________________________________________
netmod mailing list
[email-masked]
https://www.ietf.org/mailman/listinfo/netmod

---

From: Martin Bjorklund <[email-masked]>
Date: Mon, 18 Aug 2008 16:36:56 +0200 (CEST)

>   "deprecated" means that a definition is still supported but should

I think this definition is better than the old one.  But the terms
"supported" and "used" are maybe confusing.  I think you mean:

   "deprecated" means that a definition is still supported by servers
   but should not be used by clients anymore.

s/should not/SHOULD NOT/ ?

/martin

---

From: Andy Bierman <[email-masked]>
Date: Mon, 18 Aug 2008 07:54:28 -0700

> s/should not/SHOULD NOT/ ?

The old text is wrong.  Deprecated means the object exists
and is supported for now, but could be removed in the future.
The DM reader should check for a replacement definition.
A normative SHOULD NOT is not appropriate.  An implementor
MAY choose to use a deprecated definition, but it
is NOT RECOMMENDED.

Obsolete means the definition in the YANG module is a placeholder
(to make sure the name is never reused), and it is no longer in use
in the implementation.

Andy