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 <andru..bjectstyle.org
> > 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 ...
>
This archive was generated by hypermail 2.0.0 : Wed Apr 08 2009 - 16:57:18 EDT