<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Aviblock.com &#187; diem</title>
	<atom:link href="http://www.aviblock.com/blog/tag/diem/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.aviblock.com/blog</link>
	<description>My musings on web development</description>
	<lastBuildDate>Thu, 03 Jun 2010 13:40:47 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Diem, my new CMS of choice</title>
		<link>http://www.aviblock.com/blog/2010/01/04/diem-my-new-cms-of-choice/</link>
		<comments>http://www.aviblock.com/blog/2010/01/04/diem-my-new-cms-of-choice/#comments</comments>
		<pubDate>Mon, 04 Jan 2010 17:57:30 +0000</pubDate>
		<dc:creator>Avi</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[cmf]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[diem]]></category>
		<category><![CDATA[symfony]]></category>

		<guid isPermaLink="false">http://www.aviblock.com/blog/?p=89</guid>
		<description><![CDATA[Every since I started getting frustrated with Expression Engine, I was always looking out for something different. A CMS aimed at developers. Just about every CMS on the market is aimed at letting less technical people get out their and create content. There are a few CMSs that bill themselves as a Content Management Framework. [...]]]></description>
			<content:encoded><![CDATA[<p>Every since I started getting frustrated with Expression Engine, I was always looking out for something different. A CMS aimed at developers. Just about every CMS on the market is aimed at letting less technical people get out their and create content. There are a few CMSs that bill themselves as a Content Management <em>Framework</em>. In other words, they provide with the tools to create your own custom CMS. In fact, I would actually put Expression Engine in that category. Others that come to mind are Drupal and EzPublish. Both of these, for some reason, I was never able to wrap my head around. Then again, I never spent much time with them either. Drupal is written procedurally (at least they admit it) which is not my style. Something always goes wrong when I try to install EzPublish.<br />
Then of course there is the option of <a href="http://gadgetopia.com/post/5940">RDBMSWAAS</a>. When thinking about that last option, there are two frameworks that come to mind, Symfony, and Django. I tried Django before for a small project, and it worked out well, but I had never really given Symfony the time of day. When looking at the Symfony website, I stumbled across a nice hidden gem.<span id="more-89"></span><br />
That gem is called <a href="http://diem-project.org/blog">Diem</a>, and it is a CMF written on top Symfony, masquerading as a plugin. Out of the box it can do some pretty cool stuff, which all boil down to placing intelligent widgets on your page, which strikes me as the cleanest way to make a webpage with some dynamic features on it, or even a full blown web app.<br />
What does Diem add to Symfony? Out-of-the-box, Symfony is probably the most &#8220;modular&#8221; of all PHP frameworks. Its modularity rings heavily of Django. It happens to be super easy to create distributable mini-applications. A symfony project is made up of applications, and each application is made up of modules. The project, applications and the modules within the application all follow a similar structure for configuration which makes for nice &#8220;cascading effect&#8221;, whereas an app contain override configuration from the project, and a module can override configuration from an app (and the project of course). Not only that but you can merge two different configurations from a module provided by a plugin and your own local version of that. This, we&#8217;ll see, can make for some nice extensibility.<br />
My biggest gripe with the framework, and it really is not a fault of its own, but probably of Symfony, is the blatant misuse of inheritance. There are certain components which have inheritance hierarchies running 4 or 5 levels deep. I have not yet gone through the whole framework, but I have not encountered an Interface in any of the core components, such as the front controller, and the router. This kind of encourages extensibility via subclassing, as opposed to implementing interfaces. Hopefully Symfony 2.0 will alleviate some of this.<br />
That being said, the best part of Diem is the extensibility. By virtue of the fact that it is written on top of Symfony, you have some good extensibility built in right away. Many core components can be swapped out using factories.yml, and the core Diem components (which are already replacing the symfony ones), are no exception to this.<br />
As I explore the framework, I&#8217;m trying to make a series of posts on Diem can be extended and modified, including some (at least for now) undocumented features that I&#8217;ve discovered.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aviblock.com/blog/2010/01/04/diem-my-new-cms-of-choice/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
