I see similarities between Sling and projects such as MySql and MongoDB. In 
both of these the code that actually persists the data is a separate 
application, sometimes maintained by completely different people. In the case 
of MySQL you had a choice between MyISAM and InnoDB and they had different 
capabilities  and it was up to the needs of the administrator to determine 
which one to use.

I agree with your statement that we don't build dedicated persistence engines, 
but that's a very different statement to supporting the integration of various 
persistence engines, and/or implementing the layer that allows interaction with 
a given engine.

I'm not sure what you were discussing, but my view of ordering comes down to 
this

1. A Resource Provider may support ordering the  children of any particular 
resource
2. It's up to an implementer to understand whether a Resource Provider supports 
ordering and when it's appropriate
3. Ordering on a merged Resource Provider results in undefined behaviour

Your concern with multiple providers and how the handle ordering is valid but 
is an existing issue. If I have a merged view with JCR resource provider and a 
non-jcr resource provider which supports CRUD. How does that work if I add 
content to the non-jcr provider to the children of an ordered jcr node?

Of course, I'm fine with iteration, as long as we call it out that doing X and 
Y isn't defined I'd move forward, but I can understand how some would be 
reluctant.

- Jason


> I think there's an important note to be added here. Jackrabbit/Oak are
> dedicated to building persistence engines. Sling is a web framework. I
> am not saying that we can't build persistence engines or that we can't
> pull up features from Oak, but that's going to be hard :-)
> 
> To make things even more interesting, concerns moved at the resource
> provider level need to be consistent between resource providers,
> something that Oak does not have to care about.
> 
> As a quick example, Radu and myself had a short chat some weeks ago
> about what it would take to add ordering at the Sling level. While it
> would not be _that_ hard to add some basic support at the resource
> provider level, things go downhill once you start ordering things
> between providers, e.g.
> 
> - ordering fails for provider 1, succeeds for provider 2 (two-phase
> commit anyone?)
> - two providers with inconsistent ordering properties are mounted in
> the same sling instance

Reply via email to