Hi all,

Here we go with part 2 from 3.

Part 2: Non-technical feedback

2.1 COP/Qi4J - a new thought paradigm and programming model

One of the major issues regarding Qi4J mass adoption could be the different
thought paradigm and programming model. It requires - as written in part one
- a strong foundation in domain driven design (which requires good OO
skills) and a transition to COP.

During my tests it took some effort to get used to COP. And I believe -
similar to David Leangen - that you have to have a lot of time to understand
the implications of certain design decisions. I even had a hard time to find
the right names for fragments (interfaces)...

Could certain design blueprints help? Do we need design recommendations that
help others identify fragments? I don't know.

What do you think how much time it will take for the transition from
infrastructure based OOP (as seen in Java today) to COP/Qi4J? I would say at
least two medium size projects. Does 1 to 1.5 years sound familiar?

I am not kidding. When I was playing around with Qi4J it felt like writing
the first lines of basic again. And it still feels uncomfortable in certain
areas. Is this a valid fragment? How do I navigate across my domain? How do
I define default state for this entity attribute? ...

Looks like I am still at the beginning of the steep learning curve;).

2.2 Qi4J - the all or nothing approach

Please correct me if I am wrong: I believe Qi4J can be a good option for a
project that starts from scratch. But once you have a significant investment
in technology that differs from Qi4j it will be very very hard to introduce
Qi4J (and with in COP).

A simple example: How do I leverage my existing application code base that
uses this large relational database model just like 95% percent of all Java
applications out there? Do I need to throw away my OR mapping and DAO code?
Or maintain Qi4J and traditional access code in parallel?

"Yes" could be a valid answer, since the COP model could be too different
from the traditional model. But if we say yes .. you know what I am trying
to say. And no, I don't want to discuss RDBMS vs ... again.

But if we want Qi4J to succeed we definitely need to think about incremental
application migration. And this - in my opinion - includes RDBMS support as
first class citizen.

2.3 Qi4J maturity

I just tried to compile my Qi4J example from November 2008. Well. After
changing almost all Qi4J imports and a few class names it works again.
Unfortunately this happened the last 5-6 months every time I looked into my
example.

I personally believe Qi4J started to stabilize a lot. The changes however
tend to break backwards compatibility regularly.

Should we better call Qi4J "unstable"?

Yes?! No problem. But then we should jump on my suggestion from part one and
talk more about COP while stating that the only freely available
implementation is still work in progress.

2.4 Focus on solutions

The list of options in Qi4J lib and Qi4J extension is impressive. What might
be missing are "solutions" that can be extended or improved. What I am
talking about are answers to:

How do I implement a server application that can be access remotely?
How do I implement a Swing client that talks to my server?

Same applies for web applications. As far as I know web application support
is not available yet. Initially it might be enough to focus on one solution.
Don't ask me why I think web application support might be the killer
feature;).

In general I think it is time to move the focus from "What should we add?"
to "How do I do...?". See "Getting started" in part three for further
comments on this. 


So. This was part two. I have to skip the last, more technical part for now.
Should show up later the day.

So far,
Jens


_______________________________________________
qi4j-dev mailing list
[email protected]
http://lists.ops4j.org/mailman/listinfo/qi4j-dev

Reply via email to