25 May 2007

Symphony certainly is a bit of a head scratcher. It’s difficult to really put your finger on it; “A ha, Symphony is [insert pre-existing definition]!”. It suffers from an identity crisis. Correction, Symphony knows very well who she is, the problem is people’s perception of her. Judging from the public’s opinion of Symphony and the type of support enquiries we receive, it’s obvious that many people have the wrong idea about Symphony. It’s our fault really, the product website fails to really define Symphony, who should use it and why it’s useful. Now that I’ve acknowledged it, I am going to address the problem right here.

Is it a blogging app?

In the past, my answers had always been “yes, but…” then followed by a long and elaborated explanation. Recently, my answers have been a quick and short “no”. In the wake of the blogger generation, what bloggers have been exposed to and have come to expect makes Symphony a very awkward girl. It’s not that Symphony cannot do the things a typical blog system can do. It’s like asking a Samurai to cut your bread - the blade is sharp and the wielder certainly knows how to use it but where in the world will you find a Samurai these days? More bluntly put, the issue is about finding the right tool for the right purpose. If all a blogger want is a system that is simple to skin, ready right out-of-the-box with a modest learning curve, most dedicated blog systems does the job exceptionally well.

Is it a CMS?

My problem with the term CMS is that it’s too broad. My wife often asks me to explain how she should tell others what I do for a living. I usually reply, “Just tell them I’m in I.T.”. Tragically, “I surf the net” is not only more descriptive but also fairly accurate. Content Management System essentially manage one’s content over Internet protocols (Internet and Intranet) and by that definition, almost anything online can be a CMS. I am, of course oversimplifying it but the fact remains that the term CMS is just too broad. Symphony is a CMS, but I consider it as a blanket term for all data-driven systems.

Is it a framework?

Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design.

Ruby on Rails and Django are definitions of a framework. The idea of a framework is to give a developer a means of interfacing with a lower level system with ease. For RoR, that’s Ruby and for Django, it’s Python. Another important attribute of a framework is the concept of constraint. Unlike general-purpose programming languages such as C or Java, Frameworks promote constraint on coding methods in effort to achieve “good coding practices”. Both of these attributes are also found in Symphony. The lower level system in Symphony’s case is PHP and Symphony promotes a segmentation of presentation v.s. logic to promote “good coding practices”. This comes naturally from how XSLT fundamentally works with XML but going further, Symphony extends upon it with concepts such as events, data sources, sections and URL Schema.

Yet despite the similarities, Symphony is not a framework. Generally speaking, frameworks does not have an user interface. A developer spends most of its time hacking away at lines of code to build their system. Symphony on the other-hand has an user interface and most of the structure is built through it. On the side of XSLT however, is synonymous to code hacking in frameworks.

Another important difference is in its scope. Symphony cannot do everything you would expect from a framework but nor does it try to. To solve its limitation, Symphony utilises a plug-in system called Campfire services. Depending on a developer’s skill, one can achieve the scope of a framework by creating Campfire services through PHP, but the point is moot seeing how the same thing applies to purpose-built apps like blogging systems.

How about an IDE?

I especially like the idea of coining Symphony as an IDE. Integrated Development Environments like Dreamweaver, XCode and recently, Coda seem to fit more with how I personally perceive Symphony but once again, it’s not quite one. Like an IDE though, Symphony’s purpose is to provide a developer with tools to interface with existing technologies. Also, like an IDE, there is an editor for XSLT, data sources and creating data structures (sections and custom fields). Along with all of that is a debug page, which is another concept found in IDEs.

Unlike an IDE however, Symphony comes with an engine that interprets the components put together through its editor and executes it. Applications like dreamweaver merely create the assets but the output source does not require the application itself to function.

Symphony defined

Pipes also has a full web-based IDE. Even more amazingly, the IDE is incredibly rich and powerful, with the usual complement of editing tools you’d expect from a visual editor in a desktop application.

So what is Symphony really? Although it does not quite fit in any of the definitions described above, it certainly got qualities found in all of them. Most accurately speaking, I would say Symphony is a development environment to the same degree as technologies like Yahoo Pipes and Microsoft Popfly – all of which has got an integrated editor and some kind of core-level engine. Another important similarity between these technologies is the fundamental idea of interpreting data. Both Pipes and Popfly have an editor for hooking up data, much like you would with creating sections and custom fields and hooking it up with a data source. The main difference is, Symphony runs entirely on open technologies. These technologies are very new and this goes to show that the Internet is still young and new genre-defying technologies are created daily.


So now that you know how we’ve defined Symphony, why don’t you share your thoughts on what Symphony is to you?


No comments made yet.

Create an account or sign in to comment.

Symphony • Open Source XSLT CMS

Server Requirements

  • PHP 5.3-5.6 or 7.0-7.3
  • PHP's LibXML module, with the XSLT extension enabled (--with-xsl)
  • MySQL 5.5 or above
  • An Apache or Litespeed webserver
  • Apache's mod_rewrite module or equivalent

Compatible Hosts

Sign in

Login details