On Tue, Jun 18, 2013 at 12:34 PM, Pinaki Poddar <ppod...@apache.org> wrote:

> While I will keep aside the later design principle for now, the former
> principle applies for the current topic. This forward-looking tendency can
> be observed when many "new" JPA features can be mapped onto "existing"
> OpenJPA features (FetchPlan being a notable example).
>
> So it does sound strange when we discuss about implementing JPA 2.1
> features
> as if the decision is subjected to someone asking for it.
>
>   A Open Source group builds features not because a spec committee or a
> customer, but because , the members, as engineers, think that a feature
> will
> be useful -- today or tomorrow. Time may prove otherwise, but unless we
> carry that spirit of innovation backed by our love for a technology domain,
> we, as a group, will fall into the trap of factory-built, proprietary
> software that is so twentieth century.
>
>   Yes, a popular spec like JPA can provide a guideline, but our decision of
> how to take OpenJPA forward should not depend on it.
>

I agree with you to a certain point, Pinaki.  Yes, with open source, folks
are free to innovate and see what's valuable, but in the face of limited
resources, it does make sense that resources be assigned in order to
address those issues with the most votes.  The thorn in the side of this
desire-ocracy is the need to implement the specification that, like it or
not, defines the minimum bar of entry of the space OpenJPA occupies.  For
OpenJPA to remain competitive, it not only has to implement those features
that have been commoditized by the specification, but also innovate to
provide value above and beyond the specification.

I am pretty comfortable saying that most customers are going to expect
matter-of-factly that OpenJPA implement the latest version of JPA, with an
appropriate, but small, lag time after the specification's GA release,
which was in May 2013.  Otherwise, OpenJPA is at a disadvantage in a
competitive situation versus other persistence implementations.  Further,
it is usually those innovative features that tip an organization's decision
to use X or Y.

The various JPA implementations find themselves in the now-common dilemma
of having their features commoditized by the spec, which then puts pressure
on them to innovate.  After a particular innovation (or set thereof) is
commonplace across implementations, it is standardized and commoditized,
and the cycle repeats.  I see this a Good Thing.

Personally, I think all of the implementations should be striving to
implement JDO, since it is and always has been datastore-agnostic and there
is a significant NoSQL movement.  Most of JPA's innovations have been
longstanding features of JDO for years, including fetch plans/entity
graphs.  Contrary to what many think, JDO has continued undergoing active
development this whole time, and 3.1 is now beginning its release process.
 I have long told customers that if their priority is have choice of
implementation, then go with JPA, but if their priority is choice of
datastore type, then go with JDO.

Hibernate, EclipseLink and Batoo may be conventionally thought of as
OpenJPA's competition, but forward thinkers should see DataNucleus as the
primary competition, especially as people continue to consider NoSQL
solutions.

In any case, OpenJPA must, IMHO, implement JPA 2.1 ASAP to be considered
legitimate in the space.  Further, the roadmap should be to target JDO
compliance, as Pinaki alluded to in describing OpenJPA's datastore-agnostic
kernel (thanks to its predecessor, Kodo).  I mean, seriously, the writing
is on the wall.

I guess I'm up to my $0.04 now...  :)

-matthew

Reply via email to