True, but maybe there is a middle way -
What if instead of a mad matrix of optional features we have 2 or 3 levels of 
features?
Say:
ODP Basic support - all mandatory features are supported.
ODP Full support - mandatory + all what we now call optional features are 
supported.
And maybe, if it makes sense -
ODP Intermediate support - mandatory + a certain pre-defined set of now called 
optional features supported.
This let application writer to say: My application targets Basic, Intermediate 
or Full support and the application writer knows exactly what to expect. 
The platform vendor can say: I support ODP Basic, Intermediate or Full. So you 
know what you get.

Gilad

Gilad Ben-Yossef
Software Architect
EZchip Technologies Ltd.
37 Israel Pollak Ave, Kiryat Gat 82025 ,Israel
Tel: +972-4-959-6666 ext. 576, Fax: +972-8-681-1483 
Mobile: +972-52-826-0388, US Mobile: +1-973-826-0388
Email: gil...@ezchip.com, Web: http://www.ezchip.com

"Ethernet always wins."
        — Andy Bechtolsheim

> -----Original Message-----
> From: lng-odp-boun...@lists.linaro.org [mailto:lng-odp-
> boun...@lists.linaro.org] On Behalf Of Victor Kamensky
> Sent: Tuesday, November 04, 2014 5:33 PM
> To: Bill Fischofer
> Cc: Savolainen, Petri (NSN - FI/Espoo); lng-odp@lists.linaro.org
> Subject: Re: [lng-odp] [Q] Memory allocation in ODP applications
> 
> I did express the same in the past and agree with Petri
> '“optional” is next to non-existent'. It creates fragmentation
> that we don't need. When I need to figure out what optional
> pieces implemented by specific ODP implementation and
> how to match one that not implemented from that point
> it is not very far for me just to create my own wrappers/shims
> on top of specific SDKs.
> 
> For optional APIs being present and return error in run-time
> even worse in my opinion. Build time link error would be much
> better. Because as usual run-time errors much harder to get
> compared to build time errors. Build errors I discover during
> single build, run-time errors I may need to create bunch of
> specific scenarios to get complete coverage for pieces that
> my app uses.
> 
> Thanks,
> Victor
> 
> 
> On 4 November 2014 05:38, Bill Fischofer <bill.fischo...@linaro.org>
> wrote:
> > That's precisely why we've said that all implementations must provide
> at
> > least stubs for all of the ODP APIs (even those marked optional).  Not
> every
> > ODP application will be able to run on every ODP implementation, but
> that's
> > OK.  You don't need your home office router to have enterprise-level
> > features.  Requiring every ODP implementation to provide identical
> > functionality will either force us to adopt a least-common-denominator
> > approach to what are acceptable APIs or else we'll severely limit the
> range
> > of platforms that can participate in the ecosystem.
> >
> > Do you have a specific list of APIs that are currently marked optional
> that
> > you'd like to see promoted to mandatory?
> >
> >
> > On Tue, Nov 4, 2014 at 7:26 AM, Savolainen, Petri (NSN - FI/Espoo)
> > <petri.savolai...@nsn.com> wrote:
> >>
> >> I’m concerned that the API gets too fragmented already in v1.0 and
> the
> >> ecosystem will be limited by that. For example, it’s hard to
> integrate 3rd
> >> party (or open source) SW into a system, if my app uses optional
> feature X,
> >> the 3rd party lib uses optional feature Y and the implementation
> provides
> >> only one of those, or neither.
> >>
> >>
> >>
> >> -Petri
> >>
> >>
> >>
> >>
> >>
> >> From: ext Bill Fischofer [mailto:bill.fischo...@linaro.org]
> >> Sent: Tuesday, November 04, 2014 3:16 PM
> >> To: Savolainen, Petri (NSN - FI/Espoo)
> >> Cc: Shmulik Ladkani; lng-odp@lists.linaro.org
> >>
> >>
> >> Subject: Re: [lng-odp] [Q] Memory allocation in ODP applications
> >>
> >>
> >>
> >> I think the criteria I outlined above for considering an API optional
> are
> >> reasonable.  Recall that the reason certain APIs are designated as
> optional
> >> is because we received feedback that they were not feasible on
> specific
> >> platforms.  It's RECOMMENDED that platforms provide all of these
> APIs,
> >> however I'm not eager to say platform X can't have a conforming ODP
> >> implementation if it's just not feasible to implement every ODP API
> or
> >> feature on that platform.
> >>
> >>
> >>
> >> Applications will be written to whatever APIs and features they need.
> Not
> >> every application needs every API and feature and if an application
> needs an
> >> optional API then when it chooses which platforms it wants to deploy
> on it
> >> will take whether that platform provides that API into account in
> making its
> >> decision.
> >>
> >>
> >>
> >> These are fundamentally product marketing issues, not technical
> issues.
> >> If we take a one-size-fits-all approach that will unnecessarily limit
> the
> >> ecosystem.
> >>
> >>
> >>
> >> On Tue, Nov 4, 2014 at 6:43 AM, Savolainen, Petri (NSN - FI/Espoo)
> >> <petri.savolai...@nsn.com> wrote:
> >>
> >> Hi,
> >>
> >>
> >>
> >> As noted many times before, “optional” is next to non-existent for
> >> application programmers – especially if it’s important to achieve
> >> application portability. I’d suggest that API v1.0 would not have
> anything
> >> labeled as optional. It’s simplifies the API for everybody
> >> (implementers/testers/users). Features labeled as optional should be
> either
> >> turned into mandatory or dropped out.
> >>
> >>
> >>
> >> -Petri
> >>
> >>
> >>
> >>
> >>
> >> From: lng-odp-boun...@lists.linaro.org
> >> [mailto:lng-odp-boun...@lists.linaro.org] On Behalf Of ext Bill
> Fischofer
> >> Sent: Monday, November 03, 2014 10:35 PM
> >> To: Shmulik Ladkani
> >> Cc: lng-odp@lists.linaro.org
> >> Subject: Re: [lng-odp] [Q] Memory allocation in ODP applications
> >>
> >>
> >>
> >> ODP APIs are divided into two classes: Mandatory, which all
> conforming ODP
> >> implementations are expected to provide, and Optional.  The
> convention is
> >> that Optional APIs must be present but calling them may simply result
> in an
> >> ODP_FUNCTION_NOT_AVAILABLE return code.  These are documented in the
> >> associated header files (currently under revision) and are part of
> the
> >> doxygen.  Basically, unless an API calls itself out as OPTIONAL you
> should
> >> assume that all ODP implementations will provide functional
> implementations
> >> of it, though performance of individual APIs may vary between
> platforms and
> >> within platforms over time.
> >>
> >>
> >>
> >> It's expected that each platform will provide implementations of the
> ODP
> >> APIs that are optimized for that particular platform.  ODP itself
> does not
> >> specify how implementations do that or how they might improve
> performance
> >> over time with subsequent releases of the implementation.  This was
> the
> >> reason for decoupling the APIs from the implementations and
> supporting
> >> multiple repositories.  It's expected that, over time,
> implementations will
> >> evolve and improve their performance as the implementations become
> better
> >> tuned to refinements in their underlying platform.
> >>
> >>
> >>
> >> Hope that helps.
> >>
> >>
> >>
> >> Bill
> >>
> >>
> >>
> >>
> >>
> >> On Mon, Nov 3, 2014 at 2:18 PM, Shmulik Ladkani
> >> <shmulik.ladk...@gmail.com> wrote:
> >>
> >> On Mon, 3 Nov 2014 12:11:26 -0600 Bill Fischofer
> >> <bill.fischo...@linaro.org> wrote:
> >> > ODP APIs are designed to be used *a la carte* by applications, as
> ODP is
> >> > a
> >> > framework, not a platform.  So feel free to mix malloc() or your
> own
> >> > memory
> >> > management or other API calls in as needed.
> >> >
> >> > What ODP requires is the types specified in its APIs, so for
> example the
> >> > only way to get an odp_buffer_t is via the odp_buffer_alloc() call.
> >> >  odp_buffer_alloc() in turn requires an odp_buffer_pool_t and that
> in
> >> > turn
> >> > requires an odp_buffer_pool_create() call.
> >> >
> >> > ODP_BUFFER_TYPE_RAW simply exposes the basic block manager
> functions of
> >> > the
> >> > ODP buffer APIs.  Again, you're free to use them for whatever
> purpose
> >> > the
> >> > application wants.  Obviously one reason for doing so is to gain
> >> > portability across potentially different memory management
> >> > implementations.
> >>
> >> Thanks Bill.
> >>
> >> This leads me to few additional questions:
> >>
> >> Are all memory-related ODP APIs mandatory (must be implemented by the
> >> platform)?
> >>
> >> Are they required to provide any other benefit over standard (or
> custom)
> >> allocation routines besides the portability guarantee?
> >>
> >> Regards,
> >> Shmulik
> >>
> >>
> >>
> >>
> >
> >
> >
> > _______________________________________________
> > lng-odp mailing list
> > lng-odp@lists.linaro.org
> > http://lists.linaro.org/mailman/listinfo/lng-odp
> >
> 
> _______________________________________________
> lng-odp mailing list
> lng-odp@lists.linaro.org
> http://lists.linaro.org/mailman/listinfo/lng-odp
_______________________________________________
lng-odp mailing list
lng-odp@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to