I'll try to reply to the specific non-JPA items in this email in a separate thread. I should just say that *now* I share Michael's viewpoint. Below is a long version of the initial email that started this thread.

A couple of years ago when I started on the JPA effort the dynamics was different. JPA was the first persistence standard by the Java Community Process that made any kind of sense, with the possibility to differentiate the providers behind the standard API facade (kind of like Tomcat and Jetty are very different beasts, even though both are standard-compliant servlet containers). My plan was to provide Java developers with a standard API built on the stable and tested Cayenne core, convincing enough of the hardcode J2EE crowd to switch to Cayenne (the audience that has been traditionally in the Hibernate camp).

So I still think the plan was good, but a little too ambitious. First I was encouraged by a number of the new "volunteers" who emailed me privately offering help. And I do not mean people on this list who were happily using Cayenne for years and had no incentive to switch to JPA - that I can understand. Those were people totally new to the project, seemingly excited about the opportunity to work on a new framework, and at the end not a single person showed up. So there was a failure in building a developer community. Also I overestimated my own availability to do coding, which has shrunk significantly in the last two years. Racing against teams of full-time paid employees of big companies writing their own JPA providers ended up being a losing proposition (not complaining, just reflecting on the fact that I picked the wrong fight).

So now we've gone a full circle back to "Cayenne the way it is supposed to be" :-). As mentioned elsewhere the time wasn't wasted. It was spent to compare head to head Cayenne and "mainstream" Java persistence models (conclusion: Cayenne model still gives the users the smoothest ride, but we shouldn't be ashamed to borrow the best ideas from others, and we need to evolve), sync up in a few areas (EJBQL, etc..), and keep improving our strong sides (ROP, Modeler, etc.)

There's lots of things to look forward to in and after 3.0. So I wanted to turn this page and move ahead.

Andrus



On Apr 6, 2009, at 7:10 PM, Michael Gentry wrote:

On Mon, Apr 6, 2009 at 3:55 AM, Andrus Adamchik <[email protected] > wrote:
Comments?

I fear this will be a bit long-winded, but I hope it will be coherent.

Having JPA in Cayenne has never been a selling point for me
personally.  Chasing the JPA specification feels like a distraction
and almost like an admission that Cayenne classic (the "real" Cayenne
-- Cayenne's strength) isn't worthwhile.  We may never get there and
the cost of chasing the JPA specification is that Cayenne classic
suffers.  For people that want JPA, they'll almost always choose
Hibernate because it is popular and/or because it is driving the
specification.  Even if Cayenne could satisfy someone's JPA checklist
requirement, they'd most likely find another reason to not use
Cayenne.  That's fine.  You can't appeal to everyone.  Besides, the
J2EE world seems to chase a different silver bullet every few years
and JPA may evaporate as trends change.

I think Cayenne should focus on what separates it from Hibernate/JPA
and, in my mind, makes it better, plus add new features that make
sense within the Cayenne world.  Apple isn't gaining market share from
Microsoft by trying to be more like Microsoft.

Some examples:

Improve Cayenne Modeler.  This is a huge advantage of Cayenne over
Hibernate.  It is very useful as-is, but has some weaknesses, such as:
can't open multiple models at the same time, related DbEntity and
ObjEntity get too spread out in large models (too much scrolling),
relationship mapping could be easier, no way to browse the database
(I'm still working on my DBEdit clone, but it isn't close to finished
yet), getting rid of HSQLDB for the preferences, etc.  The better the
modeler, the better the image of Cayenne -- especially to new users.
From Gavin King's comments in the past, he thinks GUIs are for wimps
and I don't think Hibernate will ever have one (in the core
distribution) as long as he is the driving force behind Hibernate.
This is a key distinguishing feature of Cayenne and should be
leveraged.  Even Apple has dropped their EOModeler support in OS X
10.5.

Hibernate/JPA has nothing like an ObjectContext.  This feature should
be emphasized more.  I doubt Hibernate/JPA will incorporate one
anytime in the near future, either.  This is another key
distinguishing feature.

Enhance ROP.  I've been looking at Cappuccino lately and am intrigued
by the idea of a robust web-based GUI that retrieves and saves all
data by JSON.  (Yes, there are other Web 2.0 apps that make heavy use
of JSON, too.)  If the Cayenne Web Service could vend data through
JSON instead of Hessian, it might appeal to more people looking to go
into Web 2.0.

Better integration with Apache projects.  The Click framework is now
in the Apache Incubator and includes Cayenne support.  It would also
be nice to see Tapestry and Wicket include it, too.  There aren't
really robust installers (like what Apple did with WebObjects), but at
a minimum it would be nice if there were Maven archetypes for various
frameworks that could configure Cayenne support automatically.  Google
Summer of Code task, possibly?

There are many other things (better marketing by having papers
published, providing support for larger companies that might be
willing to invest in it, etc), but I've been long-winded enough.  All
of these things take time and effort, but I think having a clear
direction and goal would really help that, too.

Thanks,

mrg

PS. I'm hoping for more comments, too ...


Reply via email to