[TYPO3-dev] Moving the topic of the discussion a little bit -- Based of thread "Change roadmap..."

Michael Scharkow mscharkow at gmx.net
Tue Apr 11 20:42:23 CEST 2006


Hi Sven,

you didn't expect me *not* to put my 2c here. Since you asked for knives 
out, I hereby delightfully disagree with you on many points ;)

In short, the more XML, JAVA and Design-by-committee your proposals are 
the more I'll shout "This is soooo 90s! It's too ambitious, convoluted, 
non-agile! The whole goddam web app industry is just moving in the 
opposite direction! TYPO3 *is* a kitchen-sink already.". Be warned...


Sven Wilhelm wrote:

> 1. Storage Layer (which is not really existing)

>                            UNIFIED STORAGE LAYER
>                                     |
>               -----------------------------------------
>               |         |                |            |
>            RDMBS      XML Files    XML Databases      Webdav

If you mean ORM with the main target being RDMBS I fully agree that we 
need it.

As for XML, I'd be more than happy with a working import/export for 
that. Rails 1.1 has a very nice toXML method which just serializes an 
object into XML. You can image the other way around...

I'm not sure about the rest though: There's a good reason for keeping 
files organised in the filesystem, and I smell a lot of overhead if you 
try to stick all that into a *unified* data model. Maybe two separate 
class families with similar methods for DBlike and file-like stuff is 
enough.

> 2. Changing the view on data (Strict usage of objects)

> Thinks about the idea when objects are able to store themself to the
> right datasource, maybe all you need is a news container (old style
> called sysfolder) that knows the datasource to use :)
> 
> Example (an object news):
> $news = new News();
> $news->setTitle('Hello World, TYPO3 5.0 will rule');
> $success = $news->save();

We've come to theconclusion already that page->save() *is* the way to 
go, we being Kasper, Elmar and fespecially Jeff Segars who actually 
implemented parts of that already as TCAobject (see ECT group).


> 3. Cleanup or complete redesign of database model
> --------------------------------------------------
> If you have played around with the previous two sections you may have
> changed your view/mind how and what data should be stored in the
> database and which way. Having a unified storage layer, it should be
> quite unimportant in which datasource which object is stored! You can
> store a news item on RDBMS mysql or in XML file news.xml. To be able to
> do that the complete object must have a strict model (not changing every
> minute because another extension wants to add a column).
> As some guys have asked for a normalization of the database schema in
> the past, it is really 
> necessary.

I agree that TCA should be the one and only source for any model 
definitions (whatever format TCA itself is is, please not XML!), we 
should never ever bother with SQL or anything like this again.

As for other data-sources: I think we should concentrate mainly on our 
own necessary stuff in core, and leave the import/export to extensions. 
If we implemented horror like JSR170(?) in the core, we'd not release 
until 2010. Let's just see how the demand for import/export will be and 
not start with this now because most probably "You ain't gonna need it" :)

> 4. Getting a real Metadata System!!!
>  An also required
> key feature for really large content bases is a central categorisation
> of data. It's part of a good metadata system. If you think in objects
> (see section 2) you will see that you have a metadata element to each
> object in each revision (and under normalization an n-m mapping)

As long as the metadata is kept out of the regular models (as you 
propose), I'm fine with that.

> 5. Developing style - The Eclipse Way
> 5.b Splitting the project into manageable parts
> ----------------------------------------------
> Big projects like the Linux Kernel are only manageable because they
> split the whole system into manageable parts, the so called subsystems
> (eg. network, scsi, ide, protocols,...).
> For each subsystem there are maintainers that are specialized. They
> concentrate on one part of the Kernel. With enough developers, this
> could also be a way for TYPO3? See also next section.

We have that already. TYPO3 is mainly a smaller core and lots of sysext 
which can be perfectly developed separately. And the core itself is also 
quite modular. So I see no real problems there.

> 6. Having regular code sprints

Hm, I admit that I completely agree with you :(

> 7. Dropping the frontend/backend behavior
> -----------------------------------------
> Having worked with TYPO3 for some years now, it gets a bit difficult to
> break through the barriers of habit and find a solution for those
> editors that complain about the unnecessary abstraction layer they are
> forced to deal with when using the backend to edit their front-end page.

No fucking way! I love the BE/FE separation, and I think it's a very 
good thing to have. I have worked exclusively in the BE for years and it 
works very well, although there are rough edges. The BE/FE user 
separation makes much sense in a lot of situations.

Rather, I agree a) that FE editing should be made much more usable 
(Tapio is AFAIK very well working on that), b) content editing for fe 
users (like submitting news, etc.) should be made much easier. However, 
once we get TCAobjects working, it's a no-brainer to make records 
editable from the BE, FE, or via web services...

> At least imagine that at the moment you see usability from a developers
> point of view. But an editor has another view, he looks task oriented on
> the system!!!

That's a whole different point. You can very well work task-oriented in 
the BE. I agree that we need to revamp the whole content creation 
process to be more userfriendly. BTW, I recommend reading
http://www.veen.com/jeff/archives/000622.html for a very insightful 
summary of what sucks about CMS usability.

> -> A good base for a more advanced database abstraction layer could be
>    Propel. This project builds a Object Relation Mapper (reminding parts
>    of section 2 :)
>    Starting on such a base should boost developing a new base like a
>    rocket

I have had a look at propel (and the whole symfony project) and found 
that it sucks. Quoting myself from the ECT thread:
"Okay, the ORM they use (propel) is completely unsuited for us because 
we need runtime accessors and not generated code from some XML 
definition. "
I still think we can use our own ORM and Jeff has proven how well this 
looks. We have TCA which defines our models (and contrary to propel it 
does this dynamically) and we can very well use that.

> -> There are several good template systems out there. Using one of this
>    existing projects will save a lot of development time. One of these
>    really perfect systems is ZOPE TAL (Template Attribute Language) that
>    is also implemented in a PHP Version.

(Am I repeating myself?) I don't like TAL because a) it is XML, b) it is 
excessively verbose, c) it's only suited for X(HT)ML output, d) did I 
mention it's XML?

I'd really enjoy templating only if it does not get into my way as I 
write prepared output. Basically, I want only a little logic 
(conditions, loops, etc.) and simple access to my objects and variables. 
And tiny convenience functions for localisation, like LL:add_page 
instead of $this->pi_getLL('add_page',1,0,1)

Huh, that's all already. Sven, I really enjoy debating with you ;)

Cheers,
Michael




More information about the TYPO3-dev mailing list