Good thoughts.
My $0.02:
I've always considered specs like JPA to be, well, a bit of a pipe
dream. Once upon a time, I thought I cared about the ability to
switch between persistence providers. But then I realized that, no,
actually, I really don't. Persistence is an area where you choose a
provider based on differences from rather than similarities to other
providers. Even having an opportunity last year to do a significant
amount of work with a (largely) JPA shop didn't really change my
perspective; they still found areas where the spec wasn't enough,
where they had to lean on hibernate-specific features. At that point,
the "happy promise" of "switch providers anytime" is broken. So, I'm
with Andrus: let's not be afraid to adopt /good/ ideas in other
frameworks, but also forge ahead where we're strong.
Robert
On Apr 8, 2009, at 4/83:56 PM , Andrus Adamchik wrote:
> 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 - 17:26:56 EDT