Nico Klasens wrote:
Hello Ernst,

hello Nico, and all others who have responded to this thread

Let me first say I'm quite happy with this discussion. It is not my intention to put anybody in the hot seat, but i think it is positive to get to know each other a bit better in this way, and also perhaps get a more clear idea about what we are all doing and where the whole thing is going. 'What is mmbase?' is an unanswered question and that seems to be one of it's prime features. Still i like to hear from other people how they look at mmbase, what they see in it and where they want to take it. Secondly, let me state I'm not against any kind of development. Mmbase is flexible enough to support different methods of application. For me it is important many people use it, which ever way they see fit. This does not mean i think mmbase is equally suitable for all purposes, on which more later.


Your perception on what Finalist thinks of MMbase is not the same as we (or at least I) think of MMbase. This email is my personal writing, but I am confident Finalist is on the same line.

In the past years we (Finalist) have selected frameworks and products to use in our custom-made applications. The selection process is based on what customers want, what we think can help in implementing quality applications and eases development. We have seen that MMbase is not always high-quality, but it is versatile and that is what customers want. It is also very flexible which makes development easy.

MMBase is NOT a fancy database. It is a data repository which is backed by a database. A database lacks many data management features a data repository has. Examples of these are: search, notification, access control and type, object and relationship management. In the java world you can choose now between a pojo based persistency framework (EJB/hibernate) or a data repository (MMBase, Jackrabbit).

One of the weaker points of MMbase is that it does not communicate which concepts are used, which design decisions were made and how it prefers to do thinks. Some of the answers can be found in the code and some in the community. I am involved for a few years now, but I am still searching. I am happy to hear what the 'mmbase way of things' is. (+1 for the principles)

I agree with you. That's why this kind of communication is important.


The current cmsc demo includes these mmbase dependencies: mmbase.jar, mmbase-cloudcontext.jar, mmbase-dove.jar, mmbase-editwizard.jar, mmbase-email.jar, mmbase-rmmci.jar, mmbase-taglib.jar. Some others will be used when we add some things from the wishlist. The cmsc makes a clear distinction between content repository and site management. The sole reason for this is to be able to use the content repository and another site management implementation.

We decided to use pluto as the base for our small portal product. We have considered to use one of the other portal products (Liferay, jetspeed, jboss portal, etc) which would push MMbase in a position as external information system. These portal products provide many advanced features which some of our customers might need. We decided to use pluto and a stripped portal implementation to reduce complexity to have a better change of acceptance in the mmbase community. We also made sure that the mmbase taglibs could be used inside portlets. At the moment, MMbase is the base library in the cmsc. All other libraries are just utilities.

I am glad to hear that, I guess i stand corrected on this point. I did get the impression that Finalist was having a tendency to use from mmbase what it could, and avoid those areas that did not quite do the trick, and put another api in place to do that (i have seen several Finalist products that wore lashed together in this fashion). of course there is nothing wrong with it, as we all have done this at times, but it seems to me that if there is one party in the mmbase community that can afford it to drive mmbase development in those situations where a customer needs a feature that is underdeveloped, it would seem to be Finalist. We just have not seen an awful lot of this. So if i can read from your words that Finalist is strengthening it's commitment towards mmbase, I am ever so happy.


The initial and still the main goal of the cmsc is to solve several development issues. It is nice that it has also benefits for our customers. We are spending time on this MMbase framework, because it has some of the same goals as we have set for the cmsc. The cmsc can be a test case for this framework. The framework is a success when we and someone else are happy in the way it works. It is a great success when a jsp based webapp and our cmsc can both benefit from it.

We don't want to change MMbase to fit the cmsc. We also don't want to change the way you can develop with MMbase. We are only suprised that you can more easily develop with the taglib then with the bridge. Many of us expected to have a mmbase engine with an mmbase api. The api should allow applications to interact with the engine. All other tools (taglib, editors, etc) only makes it a better product to choose it as the base for a custom-made application. Many of us know how to apply other frameworks to solve specific issues. Not being able to use features (because they are only implemented in the taglib) makes MMbase a less interesting product for us. If MMbase prefers the taglib above the bridge then it should communicate that. We will accept that decision.

As I understand from the below email, MMbase should more rely on code by convention? Then MMbase and Java are not a good fit. Java is a very type-safe programming language. Especially now in java5 with typed parameters. Not using the strong points of Java is a loss to me.

Well, let me elaborate. This is also very much the area of 'what is mmbase', or my answer to it. First, I agree java is more like a high-end product and 'deserves' more complex solutions, that are strong and flexible. But on the other hand i can not see mmbase as an enterprise component. For that it lacks, as you point out as well, a clear focus in both purpose and implementation. On the other hand it has some unique features and advantages over other api's that all partly overlap it. One of the fun things of mmbase is it's completeness. It offers a solution for every step of the way of building content management systems, or web applications in general.

This, along with it's high configurability makes it an ideal system for rapid development, if not for a few problems (Henk pointed this out in his reaction as well) - there are not enough authoring tools for creating mmbase applications (builders, wizards, inserting business logic) - there is not a clear separation between the framework and it's extension points. Functions is partially addressing this problem. - you have to use java for more complex business logic than scratching your bum, which introduces problems like added compile cycle and perhaps code obscurity (what happens were?).

conclusion: you have to know a hell of a lot about mmbase to be able to use it successfully, because it fails in the separation of concern department. It is insufficiently possible to determine different roles in the development process and boundaries between different layers of the framework are very weak.

So my idea of strengthening mmbase is addressing those points (because i think mmbase can be most benefited from in that role). I think that if those problems could be addressed mmbase could be used by a much larger group of people, allowing the community to grow, and development to flourish.

So, about not using the strengths of java: In my picture java is the language of the framework, and the primary solution for extending it's functionality. But if you look around at what's happening in the world, and you see the success of platforms like ruby on rails and python, and on the other hand the small user base of mmbase, the difference is striking. In my view these platforms strike an excellent balance between simplicity and robustness, using convention where sensible, and lifting the burden of development significantly. We need a language like java to build the framework and make structural extensions to it, but we don't need it's complexity to perform simple tasks. If someone has to work with mmbase for years in order to be able to do simple thins like extend builders, write functions, and use the 'natural' extension points of the framework, i see this as a problem.

conclusion: different technology on different layers geared towards different roles in the development process.


I think, it is very narrow minded to say that default builders will be enough to solve all component type issues. It is also a lot of work to migrate a database to integrate the default builders. Currently, several organizations have invested a lot in their mmbase systems and they are not going to like it to convert them. Ease of collaboration is still requested.

I totally agree. So standardizing builders is not the way to liberate an existing application. On the other hand, if you already have the functionality in a different implementation you don't need the 'standardized' one (unless you want to use other standardized components). That is a price to pay for sure, but the same problems will arise when you start converting applications to the mmbase container. But data migration is definitely one of the holes in the mmbase tool stack..

conclusion: an integrated component system will work best for new developments.


The development meetings about this subject did send us a clear message that what we visioned was not the same as what the mmbase developers had in mind. This is one of the reasons that we dropped the name karma. We will contribute with feedback to the mmbase component framework to make it a success. Next to this we continue to set out a repository standard in the mmbase world. We like to deliver several mmbase components which together create a base system for a content repository application. The first is important to you, the second is important to us.

I can be happy about that. Finalist is a strong development potential for mmbase, and it needs that. I do am afraid I led this discussion off topic a bit, but that was why i did not comment to the individual points of Johannes' mail in the first place. For me this is a bit of an opportunity to talk about mmbase, and to find out about what others think and do. I think it is a nesecary step in the process of developing something like the proposed component structure


Regards,

Nico


Ernst Bunders wrote:

hi

I will not react to your document point by point. I would rather react to the assumptions (i think) lie behind it.

There is a lot of talk about the need for a framework or container that can make bits of functionality work together. This is a very good idea.

What i wonder though is how this should be approached. Finalist chose for a very 'dominant' solution, where the the role of mmbase is marginalized to that of 'datapump'. I feel there is not a lot of attention for what is already there and what approach is in line with the 'mmbase way of things'.

Mmbase has a lot of power in the tag lib, so what happens is that a lot is being done in templates. Adding functions to the equation even made this a more attractive approach, striking a nice balance between presentation-code separation and ease of use.

If you would have to implement java interfaces to translate the functionality of your application to the container, you loose that power, and you may loose investment in developed functions as well, if it turns out that calling functions is not a conveneant way to implement the interface. The whole thing becomes very java-centric which i think would be a loss.

Personally i would rather see a move in the other direction where it becomes more and more easy to develop with mmbase, also for non-java programmers. Idears in that direction comprise adding scripting support for scritable functions and system callbacks, and development of better (gui) tools.

So, i think that if you want to address the problem of reuse of mmbase functionality, you should try to do it as non-obtrusive as possible. this can be achieved in several ways:

- strong convention: (i don't need a java interface to a functionality if i can look at the cloud design and use it with the tag lib.)
- formalizing existing solutions
- think of clear boundaries to the areas you want to manage (don't manage everything)

So: builder name blurr can be overcome by choosing default builders (we don't need mixin for that), also by using application dependencies you can already define collaboration between functionality and reuse. I think the apps1 spec is not complete, and apps2 is still hanging there.. Still, maybe this is all we really need. Maybe we should focus more on creating those applications, that use each other and integrate well, and provide the documentation and information needed to reuse them successfully.

Perhaps special attention should go to how different 'applications' interact in one screen. The portlet spec. has an answer to that, but perhaps we could think of something that is much more in line with the current way of things. Something more lightweight, again more based on convention. Something that is just as easily used as ignored.

I can imaging the mixin idea can be very interesting if this means you can define 'meta objects' what i mean is an object consisting of different nodes. Say, an article meta object, consisting of an article node, some paragraph nodes, and some image nodes. I can imagine that could have a lot of use (also for import export purposes).

So, in conclusion, i am not really happy with where this is all going. Finalist is obviously driving this towards an architecture where java programming is central to mmbase development (it's what they do after all), and mmbase is just one more framework in their stack. I think mmbase has some properties that make it different from all those (very nice) j2ee spinoff api's, and i think we should expand on that, in stead of marginalize.

regards,

Ernst





Johannes Verelst wrote:

Hi all,

As some of you know (and probably others don't), I have been busy
together with Nico Klasesn to see if there is a way to create an
"MMBase framework". The reason is simple: many companies have spent
huge amounts of money for custom MMBase implementations, and
components in those implementations are never given back to the
community. One of the reasons is because of the 'lock-in' to their own
framework which was built on top of MMBase.

With many frameworks already in existance, and the need for "generic
components", I looked with Nico at Didactor, the EO site and to
finalist's Karma/CMSC. The result of this session is now a word
document that I attach here (html version also added).

The main suggestion is: don't enforce a "great unified mmbase
framework", but work the other way around: define some interfaces that
frameworks should implement and components must use. That way every
framework can keep its own way of doing things. So, don't enforce
people to use either tree-include or leaf-include, but create an
interface for creating URLs for which the EO will write an
implementation for their framework which generates urls based on
leaf-include.

Next week, on the symposium organized by Jo, I will present this
proposal to parties interested in a mechanism to share components
between parties. Currently it is "my" proposal (together with Nico),
but I would hope it could be "our" proposal. For that I need your
comments, insights and possibly even flamewars :).

Johannes


------------------------------------------------------------------------

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



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





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



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

Reply via email to