[oslc] Ways to think about OSLC SDK "reference implementations"
Dave
snoopdave at gmail.com
Mon Jun 27 10:02:06 EDT 2011
There are a couple of different ways to think about the OSLC reference
implementations and some conflicting goals, depending on how you
think. I think it's useful to consider the different ways to think
about the SDK's provider implementation(s), so here are three:
1) Reference Implementation: Think of RIO as a reference
implementation, design to support the needs of workgroups developing
specs and experimenting with new features, protocols, etc.
* Goals
- Support spec development process
- Provide complete and correct implementation of OSLC specs
- Experimental "prototype" for proposed spec features
- Provide example code for developers implementing providers
- Make it very easy for workgroups to build implementations
e.g. data-driven implementation, use of RDF triple store, etc.
* Non-goals
- Useful as an ALM tool
- Production ready and high performance
* Issues
- Easy for OSLC workgroups is different from easy for product
developers, and product developer care a lot about being production
ready and high-performance, so this approach won't help product
developers looking for example code and re-usable components.
2) Provider Framework: Think of RIO as a framework for building OSLC
providers, design to support the needs of product development teams
who are adding OSLC support to existing products.
* Goals
- Provide framework for building Provider Implementations
- Suitable for creating complete and correct implementation of OSLC specs
- Suitable for creating production ready implementation of OSLC specs
- Make it easy for product teams to add OSLC support to existing products
* Non-goals
- Useful as an ALM tool
* Issues
- Developers already use a lot of different web development
frameworks. Do we really want to introduce a new framework for
REST/Linked Data services? Won't this cause problems for those already
using other web/REST frameworks such as Spring, JSF, Seam, Wicket,
Struts, Play, JAX-RS, etc.?
3) Pluggable Adapter Implementation: Think of RIO as an Adapter Server
that can be used to create an OSLC provider by "plugging in" a backend
system. This is very similar to the "Shindig" reference implementation
for OpenSocial.
* Goals
- Complete OSLC adapter that allows back-end to be plugged in
- Suitable for creating complete and correct implementation of OSLC specs
- Suitable for creating production ready implementation of OSLC specs
- Make it easy for product teams to add OSLC support to existing products
* Non-goals
- Useful as an ALM tool
* Issues
- There are some significant problems with the adapter approach,
e.g. introduction of redundant URLs for resources, new server to be
maintained, etc.
Personally, I think we want #1 and #3 above.
Regardless of how we think of RIO, I think the OSLC SDK should include
a Provider Library, a set of components, utilities and helper classes
for building OSLC provider implementations.
* Goals
- Provide specific components useful for building OSLC providers
- e.g. Query Syntax parser, OSLC JSON parser/generator
- Suitable for creating complete and correct implementation of OSLC specs
- Suitable for creating production ready implementation of OSLC specs
- Make it easy for product teams to add OSLC support to existing products
- Works equally well with any web development framework
Other thoughts? What type of provider implementation(s) would you like
to see in the OSLC SDK?
Thanks,
Dave
--
OSLC Spec Lead
IBM Rational Software
More information about the Community
mailing list