1.1 Development Thoughts

Project Announcements. This is read-only, as in... not for problems/bugs/feature request.
Ted
Power Poster
Power Poster
Posts: 3329
Joined: Fri Jun 11, 2004 6:58 pm

1.1 Development Thoughts

Post by Ted »

Hey all.

Sorry that I've been pretty light on forum posts lately.  Life has been busy.  My day job is incredibly busy for the next few months and time for CMSMS is getting harder to come by.  Anyway, I figured that I should discuss what's upcoming for me as the core team leader and where we're headed.

As some of you know, 1.1 has started development.  I started hitting the code pretty hard in the last week or so and laying the groundwork for the changes to come.  There is a LOT of work to do.

However, I'm going to lay down some of the fundamentals and changes that were decided on by the dev team (though, I take full responsibility for any flamebait).  Some of the changes are drastic, but necessary in order to progress this project further into the realm of the "big boys" out there.

Ok, #1 and most drastic...  CMSMS 1.1 is built off of something called ORM.  For the non-programmers out there, ORM implements something called the ActiveRecord pattern.  It basically allows us to represent a table in the database as an object.  That representation basically allows us to map an entire database table to one object and then do things automatically.  Things like saving to the database are now done for us, and therefore we don't have 100's of repeated SQL statements littered throughout the code that do the same thing.

However.  While I originally wrote the ORM system with intention of it working on both php4 and php5, I've come to find a few bugs in the php4 way of handling dynamic functions and properties.  These bugs are marked as "WONTFIX" in the php bug tracking system.  In other words...  either I dump the code I've written, or we make a hard decision.

I've decided to make the 1.1 branch of CMSMS php5 only.  I know it's a hard decision and php4 is still the norm out there.  I'm probably taking a risk by doing this, but I'm confident that it's the right choice.  Eventually server providers will upgrade.  Some already have.  And to keep writing buggy code in a buggy system just because the establishment hasn't caught up is just a mistake.  I want CMSMS to be a modern, stable system.  And trying to get it to run on older versions is getting more and more difficult as we move forward.

As an aside, other systems and frameworks are already making this jump.  For instance, mediawiki (as in wikipedia's engine) has made all releases since 1.8 php5 only.

1.0.x will remain in "maintenance" (and therefore, supported) until php5 has made it's way onto more of the major service providers.  I'm hoping that this is only about a year or so.  Once php5 has penetrated enough of the market, we'll retire it.

Some of the 1.1 changes might get backported to the 1.0.x branch, but chances are that they will only be bugfix type changes and none of the major enhancements.

I'm sure this decision is going to spark controversy and flaming and other downright arguments.  But in a year we're not going to care anymore.  That's the problem with being in charge...  you have to make tough decisions.

Anyway, keep your flames to this thread.  *whew*  That's out of the way.  The rest are good, I swear.  :)  Moving on...

#2. The content system has been itching to be rewritten since about 0.9.  Well, it's been done (for the most part).  The new version of the content system basically works the same, but with the ORM system in place and knowing a lot more than I knew before, it's about 25% of the number of lines of code.  It's much less complicated and much more automated.  Writing new content types is a LOT easier now.  It uses Smarty templates and doesn't reinvent any wheels.

The new content system also reworks how multiple content blocks are handled.  Before, multiple content blocks were only good for HTML text.  This is incredibly limiting and was put in as an afterthought in 0.7 or 0.8.

Now, we're going to have a system in place to allow different block types to go in each content block.  These can be selected while editing the page and not all pages need to have the same type in each block.

We're going to write several different block types for 1.1.  The main will be called HTML (this will be default) and basically work like they do now.  A WYSIWYG (or none if you have it turned off) for each block.  But, we will also add a couple more...  markdown text and images are the 2 that come to mind.  You will be able to setup a default type for each content block ({content type='image' name='someimage'}) and also be able to lock it so that the block type can't be changed by the end user.  This will allow the template designer to really lock the editors into a particular look and particular type of content for each block.

Adding new block types will be easy, and modules will have the ability to do it as well.  In fact, we might change the News content type into the News block type so that you're not wasting a whole page on a News listing.

#3. TinyMCE will be the new default WYSIWYG.  FCK is bloated and way more than people need to start off with.  FCK will be available as an option through the module manager.

#4. Versioning will be in 1.1.  It will be included, but will have to be enabled as an option.  Basically, that means we will keep all the previous versions of different content, template and stylesheet items and you'll be able to revert to older versions if something happens.  The way it will be coded has been worked out, but I have no clue how to handle the interface for this yet.  Any ideas are appreciated.

#5. Versioning means that we can then handle a workflow system pretty easily.  Though, I'm not sure if this will be in the core, or as a module.  Basically, this will mean that editors will be able to make changes to pages, but those changes will have to be approved before they will show up on the site.  Again, working out an interface for this is going to be tricky, as will some of the database gymnastics that we'll have to do to make it fast.  Again, any ideas are appreciated.

#6. Multilanguage.  This will most likely be in the 1.1 branch by default.  Katon and I have come up with a nice way to making the multilanguage system a separeate subsystem that other pieces will be able to use easily without modifying their structures too much. He's talking about writing that before 1.1 comes out as an add-on to the 1.0.x branch.  I'm not sure of his schedule and timeframe, but he is definitely on board for helping us get it in.

These are only the changes that I know a lot about.  The rest of the dev team is going to handling the other aspects of 1.1 and have good ideas as to what is going to show.  Things include a permissions system reworking (calguy1000), removing the file and image managers and using rewritten modules instead (silmarillion), and a bunch of other changes.  I'm sure they'll chime in when they have more details about the direction and progress.

Anyways, thanks for your patience.  1.1 is expected for late Q1 2007.  Expect betas before then...  after we figure out how to write the very involved upgrade process.  If you have anything to discuss regarding this, please continue in this thread.  Try to keep the php5 flames to a dull roar, though.  :)

Thanks!
Last edited by Ted on Mon Nov 27, 2006 12:37 am, edited 1 time in total.
moorezilla

Re: 1.1 Development Thoughts

Post by moorezilla »

For the record, I think php5 is the way to go. Many hosts already offer the option of using 4 or 5, so I doubt too many people will be adversely affected. The planned development sounds great!
iNSiPiD

Re: 1.1 Development Thoughts

Post by iNSiPiD »

If your host isn't offering 5 I would strongly suggest finding a new one.

The changes all sound good. I have complete faith in the dev team to make the right changes and improvements (in consultation with me of course). :)
brady

Re: 1.1 Development Thoughts

Post by brady »

#1- I think PHP 5 is the way to go also. There are just so many useful things you can't do with PHP 4. _autoload comes to mind, it seems like this is a good step in the right direction(thats easier to say, now that my host supports PHP 5).I have some questions about the ORM, does it use ADOdb as the backend, if so will it support SQLite? Can it be used by modules?

Also you said that you wrote your own ORM, but then went on to say you aren't re-inventing the wheel. Why not use one of the ORMs already out there.

#2-Sounds good!

#3-I think TinyMCE is too bloated also. Why not provide a light-weight editor as the default and offer TinyMCE as the option?

#4-How about a dropdown box that gives the revision date and an option to restore?

#5-I think this should be in a module. I can see how that would be useful for large sites, but there are probably more small sites using CMSMS than large sites.

#6-I don't have much use for this, but someone probably does, so good idea!

I think all these changes are good ideas.
Last edited by brady on Mon Nov 27, 2006 4:32 am, edited 1 time in total.
Ted
Power Poster
Power Poster
Posts: 3329
Joined: Fri Jun 11, 2004 6:58 pm

Re: 1.1 Development Thoughts

Post by Ted »

@brady

About #1.  Yes, it uses adodb as a backend.  To be honest, I didn't like any of the ORM options that were out there that worked on php4 and php5.  So I started the process of writing my own, and then realized why the good ones didn't support php4.  :)

I've actually thought about going back now and finding an existing one to use instead, but haven't researched it fully.

My requirements for one would be an adodb backend and activerecord functionality (field definitions from the sql tables itself, no xml declarations and NO code generation).  If you find a good one, let me know and I'll take a look.  To be honest, I'd rather use something that's existing instead of my own...  but what I have so far isn't too bad so it's not an absolute requirement.

#3. It's tough to find a proper mix of bloat vs features.  Anything too simple isn't going to be useful to people that need hand holding to insert images and stuff.  Anything too complicated is just plain scary.

Thanks for the support!
brady

Re: 1.1 Development Thoughts

Post by brady »

How about http://phplens.com/lens/adodb/docs-active-record.htm ? Part of the default ADOdb(full version) install, and looks like it meets your requirments
cyberman

Re: 1.1 Development Thoughts

Post by cyberman »

Ted wrote: About #1.  Yes, it uses adodb as a backend. 
Ähmm, means this a step back from adoDB lite to AdoDB for 1.1? Or is my english too bad?
brady

Re: 1.1 Development Thoughts

Post by brady »

I think he meant ADOdb in general. So it could be either ADOdb lite of the full one.
User avatar
fexcel
Forum Members
Forum Members
Posts: 16
Joined: Wed Nov 09, 2005 9:16 pm

Re: 1.1 Development Thoughts

Post by fexcel »

Hi Ted,

There can be no doubt that PHP5 is the logical way.
I´m also agreee with brady, providing a light-weight editor as the default and offer TinyMCE and FCK as optionals.
Multilanguage system is a must have today for intenational enterprise use of the CMS.

Thanks for the good job to you and the development team. ;)
Pierre M.

Re: 1.1 Development Thoughts

Post by Pierre M. »

Hi Ted and all,

these are good news. Thanks for the product so far, happy coding on ;)

PM

PS@fexcel : Russ has explained in this forum the possibility to limit TinyMCE features to make it a lightweight default editor.

PPS : my favorites
Some of the changes are drastic, but necessary in order to progress this project further...

to keep writing buggy code in a buggy system just because the establishment hasn't caught up is just a mistake.

25% of the number of lines of code.  It's much less complicated...

It uses Smarty templates and doesn't reinvent any wheels.

versionning, workflow, multilanguage...
Exciting :-)
cyberman

Re: 1.1 Development Thoughts

Post by cyberman »

Ted wrote: While I originally wrote the ORM system with intention of it working on both php4 and php5
If there are some drastic changes - what's the reason to write an own ORM system and not use existing (and well tested) solutions like propel or ezpdo?

http://propel.tigris.org/
http://www.ezpdo.net/

Propel supports currently MySQL, PostgreSQL and SQLite (and Oracle in future).
And default database library of Ezpdo is AdoDB  :).
Last edited by cyberman on Mon Nov 27, 2006 8:44 pm, edited 1 time in total.
brady

Re: 1.1 Development Thoughts

Post by brady »

If there are some drastic changes - what's the reason to write an own ORM system and not use existing (and well tested) solutions like propel or ezpdo?

http://propel.tigris.org/
http://www.ezpdo.net/

Propel supports currently MySQL, PostgreSQL and SQLite (and Oracle in future).
And default database library of Ezpdo is AdoDB  :).
propel and ezpdo both use an XML file instead of active record.
Last edited by brady on Mon Nov 27, 2006 9:57 pm, edited 1 time in total.
cyberman

Re: 1.1 Development Thoughts

Post by cyberman »

Ahh I see Ted was inspired from the "ruby corner"  and the "bad joke" has some truth inside :)

http://forum.cmsmadesimple.org/index.ph ... 964.0.html
brady

Re: 1.1 Development Thoughts

Post by brady »

It makes sense not to use XML, imagine the problems with modules! The only advantage to XML is speed.
tsw
Power Poster
Power Poster
Posts: 1408
Joined: Tue Dec 13, 2005 10:50 pm

Re: 1.1 Development Thoughts

Post by tsw »

not really, parsing XML files can be very slow and memory intensive..

only thing good with XML is that almost every programming language can open / edit / read / write to xml so its good for communication between different programs..

and then there is the wrong way to do xml: http://thedailywtf.com/forums/thread/102936.aspx :)
Post Reply

Return to “Announcements”