Hello Ernst,
The below email makes me believe that your answer on 'What is mmbase?'
is different than mine. This greatly influence how we use it and what we
expect from it.
If I have to answer that question then I like to rephrase the question
to "What issue does MMbase solve?" My answer is the same on both questions
What issue does MMbase solve? I already wrote this in my previous mail.
MMbase solves the domain of a data repository which is backed by a
database. MMbase has many data management features a data repository
requires. Examples of these are: search, notification, access control
and type, object and relationship management. A data respository
consists of a repository engine and an API to interact with the engine.
The engine has to solve every aspect of the issue like storage,
configuration, object model, security, search, events, etc
The mmbase solution for this issue can be found inside the mmbase.jar.
'What is mmbase?' For me, the mmbase.jar and not the full distribution
The community provides additional functionality which makes working with
mmbase easier. Every added piece of functionality solves another issue.
Generic editors - solves the issue of easy access to reporitory data.
Editwizards - solves the issue of user-specific and task-based access of
repository data
Taglib - solves the issue of rapid and scripting-like access to
repository data
Clustering - solves the issue of several system working with the same
repository data
RMMCI - solves the issue of remote access to repository data.
... - ...
MMbase is not a scripting language. A scripting language solves a
different issue. You choose Ruby or Python for a different reason then
you choose for mmbase. The taglib address some of the same aspects of
the scripting language issue. Funny to hear that code obscurity is
easier introduced in a type-safe languauge then in a scripting language.
I always thought it was the other way around. You could create something
which solves the same issue as Ruby on Rails does, but then you are not
solving the same issue as mmbase does.
If you think this way in development then you should ask yourself with
every issue: does mmbase solve this issue. In a lot of cases the answer
is no and there is always another product which will solve it. The cmsc
is a good example. I have content and want to store it somewhere. MMbase
solves this issue for me, because it solves data management. I also want
to create html blocks which are aggregated to one html page. MMbase does
not solve this issue for me. Pluto does solve this. I want to make these
html blocks configurable and store this some where. This is data
management again so MMbase could be used.
Nico
Ernst Bunders wrote:
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.
_______________________________________________
Developers mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/developers