Hello Michiel,

The below is all very focused on code rhings. I am not sure that we need a CoreNode and CoreNodeManager and that we have to drop MMObjectNode or MMObjectBuilder. I rather would take a step back and observe MMBase from a distance. There are many parts in MMbase which are bloated with things that don't match the initial goal. The bridge is a very good example. It was added on top of the core to streamline many templating languages, but now it takes over some of the features the core should do. This is okay, but then we have to redefine what the responsibilities are of these parts. Another thing I don't like is the changes set and oldValues in MMObjectNode. All users are sharing these collections and can commit the MMObjectNode. The TemporaryNodeManager and the bridge are doing some "magic stuff" to prevent some of the issues which arise. I am vague on this, because I have never figured out how it exactly works and that is the real issue. Another one is the difference between MMObjectNodes, VirtualNodes and ClusterNodes. How can VirtualNode extend MMObjectNode and not be persistable? It inherits a feature and removes it? It is also not clear in the bridge which type of node (MMObjectNode, ClusterNode) is returned in lists, because they are both wrapped by a BasicNode. This gives a lot of confusion for application developers.

The above are not examples of things that are wrong, but things that show we need more then the old concepts are providing. We should analyze them and design a solution which includes them in a nice way.

When we do a step back and view at the "ugly" things then we should also look at other frameworks how they handle them. MMBase is a persistency layer with additional services and features. Hibernate, EJB3 and jsr-170 have some concepts which might be appliable to MMBase. For example, Hibernate makes a clear distinction between POJO's and RowSets. A POJO is our MMObjectNode and the ClusterNode matches more or less with a RowSet. We also could make that distinction instead of inheritance? Another example is the workspace and session concept of jsr-170. You login to the repository providing credentials and a workspace name. This all sound very similar as the ContextProvider and cloud login. jsr-170 returns a session. MMBase returns a cloud. The only difference is that we don't have a well defined concept for what a cloud is. When I try to explain the mmbase cloud concept I usually use the vague phrase: 'it is almost like .., but then with ... and without ...'

IOW, I am not going to work on something which is anticipating what we need in a good architecture. I would love to work on something which promises me a good architecture. When you know what you are going to build then it is easier to refactor in steps.

I also doubt that our end-users (the application developers) would wait for all the features you mention for 1.9. I think they rather like to see a less confusing architecture.

Regards,

Nico

Michiel Meeuwissen wrote:

Since 1.8.0 is out, we can now think about what we can do for upcoming
releases.

If I may start making suggestions:

1.8.x:
 - bugfixes (also when related to performance only)
 - loose ends on datatypes (XML presentation and javascript,
   commons-validator wrapper, LIST db type?)
 - loose ends on applications and contributions.
1.9.0
 - dropping support for java 1.4, dropping backport-concurrent,
   using other java 1.5 features in the code. Evaluate what we must do
   with things like 'NodeList' (should it not become List<Node>?)
- 1.8 has made a start with a new org.mmbase.core package
   We must discuss how we progress with this. CoreField suggest that
   also  CoreNode, CoreNodeManager may follow. We may introduce these
in 1.9 already.
 - Changes necessary for the upcoming application/portlet
   framework. E.g. to accomodate versioning, workflow and
   application-packaging features more easily.

 - 1.8.0 is shipped with succeeding junit test-cases.
   1.9 must be shipped with standardized bench-marks for performance of
   core, bridge, taglib etc.  I feel it is a problem that must be
   addressed that we don't well perceive performance regressions or 
improvements.

Something like that seems to be enough for a new major release. It
should not take over 2 years again.  I'd say we must strive to a release
of 1.9 in 2006.

And after that:

2.0  (yeah! core2, finally!, after so many years ...)

- Completing of the 'code clean up' (optimization project)
  - Dropping MMObjectBuilder MMObjectNode, in favour of more bridge
    like interfaces all around (as we may have anticipated in 1.9 by
    filling org.mmbase.core..).
  - ....

- ...


Please, comment and contribute.


Greetings,
Michiel


_______________________________________________
Developers mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/developers

Reply via email to