Re: Open source WO - offer

Lachlan Deck <[email protected]> Mon, 4 Sep 2006 11:25:06 +1000
Newsgroups gmane.comp.web.webobjects.general
Message-ID <[email protected]>
Hi there,

On 03/09/2006, at 11:40 PM, Ashley Aitken wrote:

> On 03/09/2006, at 9:23 PM, Andrus Adamchik wrote:
>
>> On Sep 3, 2006, at 12:09 PM, Georg Tuparev wrote:
>>> Where is the open source equivalent of EOF with the same elegance  
>>> etc?
>>
>> Hehe. I can't claim to be an independent party in this discussion,  
>> but isn't what you say [uninformed|biased|untrue|completely  
>> wrong]? I understand your attachment to the technology you've been  
>> using for years, but let's try to be objective.
>>
>> In other words, do you have some facts to back this claim? ;-)
>
> Of course, Andrus was the founder of the Cayenne project - an open  
> source equivalent of EOF - now in the Apache Incubator and working  
> towards JPA compliance.

'Equivalent' is not a helpful word to use in that it conveys a  
mistruth. i.e., it's not a drop-in replacement and does not have a  
1:1 comparison of features let alone maturity. But the overall  
concepts of what it aims to achieve have many similarities.

> I believe Cayenne is an amazing achievement (of course, Andrus has  
> helpers now) since it would seem to most of what EOF does and even  
> out do EOF in certain areas (e.g. in-built notifications).

Cayenne is certainly impressive for its age (we're using it a lot for  
a 3 tier Java Server/Client application) and Andrus has been very  
responsive to providing solutions to existing problems. Cayenne will  
mature and progress (esp given it's inclusion into the Apache  
development processes) but there is and will be teething problems  
along the way. That's the nature of it.

EOF on the other hand is very mature, its interface is stable. I'm a  
fan of the elegance of much of it's interfaces...

> It also seems to now have most of the advanced features of EOF -  
> nested editing contexts (called data contexts), client-side editing  
> contexts, and a powerful entity modelling application.

Nested contexts are a new feature (I think) for Cayenne so not sure  
how well tested they are. At least we're looking forward to nested  
contexts on the client side :-)

> Please correct me if I am wrong (Andrus or others), I am no expert  
> on Cayenne.
>
> Out of interest, I would like to put the following questions to  
> Andrus (or others in the project) since I would really like to know  
> just how well open source projects can do:
>
> 1.  What percentage of EOF "features" does Cayenne have equivalent  
> to or better than EOF?
>
> 2.  How many (useful ;-) features does Cayenne have that EOF doesn't?

I think the more appropriate question(s) is "What features do you  
need?" and "What features can't you live without?" The answers to  
these will indicate whether Cayenne will fit your requirements...

Either way - think of it this way: When people come to EOF/WO from  
some other technology they're often advised (appropriately) not try  
to force WO to work the same way as some other technology. That's  
true with using Cayenne. It's not EOF. I'm often finding things that  
I'd do using EOF (and they can be just subtle things) that either  
cannot be done (yet) in Cayenne or have a different approach in  
Cayenne. Sometimes things in EOF seem like simple features (e.g.,  
NSArray's "@sum" KVC notations that can be operated in-memory or  
against a db). Java Lists/Maps just don't have these conveniences.

> 3.  How would the reliability, performance, efficiency of EOF and  
> Cayenne compare?
>
> Of course, EOF is much more mature than Cayenne, so I would expect  
> it to have higher reliability and performance, but some  
> quantitative indication of how they compare would be interesting.

Cayenne performs acceptably well. I've not compared it to EOF because  
that would require building the same application for both which is  
not an efficient use of my time ;-). Much can be done with Cayenne so  
it's highly recommended where appropriate.

EOF has maturity, various useful delegates, context notifications,  
KVC built into many an interface, stability, etc - and is as such a  
well oiled, elegant technology. Perhaps (to those of the Objective-C/ 
dynamic persuasion) a useful analogy is it's like going from  
Objective-C to Java. There's just things you really miss and things  
you gain.

with regards,
--

Lachlan Deck