Not a developer? Go to MovableType.com

News

A Leading Japanese Developer's Perspective on Movable Type

By Takeshi Nick Osanai
Posted May 31, 2012.

Hi, my name is Takeshi "Nick" Osanai of Six Apart Ltd. Today, I'm going to post a translated blog article which was originally written by a Japanese Movable Type developer Sumio Noda. He is also known as his nickname "Junnama".

Sumio is a famous Movable Type developer in Japan. He is the co-founder and CEO of Alfasado Inc., one of the largest third-party developer in the worldwide Movable Type Community.

Alfasado develops and distributes Enterprise plug-in packages that extend MT called "PowerCMS". Alfasado also introduces a lot of plugins on Github. Take a look at Alfasdo's account on Github, at https://github.com/alfasado to get an idea of what they have produced and made available to the MT community.

So, let me introduce his blog entry "Reasons why I keep using Movable Type, not WordPress, because it's fun!"


The original entry in Japanese: http://junnama.alfasado.net/online/2012/04/wordpress_movabletype.html

People often ask me, "Why do you keep using Movable Type, not WordPress?", I answer it "Because it's Fun!" It's fun for me as a developer and Product Manager of "PowerCMS", and also as the CEO of a CMS solution vendor.

"MTML" is a Big Part of the Fun

At the most basic level, all of us at Alfasado Inc. think it's fun to use "MTML," Movable Type Markup Language. MTML is probably the most popular template engine in Japan.

Here are portions of typical Movable Type and WordPress templates where each requests 10 blog entries to be listed.

WordPress

<ul> 
<?php $myposts = get_posts('posts_per_page=10'); 
foreach($myposts as $post) : 
setup_postdata($post); 
?> 
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> 
<?php endforeach; ?> 
</ul>

Movable Type

<ul> 
<MT:Entries limit="10"> 
<li><a href="<MT:EntryPermalink>"><MT:EntryTitle></a></li> 
</MT:Entries> 
</ul>

I'm not simply asking "Which code is better?"

List of "how I like" each of these codes, not line-by-line comparison.

When you write a Movable Type plug-in, plug-ins code consists of one or more YAML files plus Perl modules that are written to take advantage of MT's object-oriented architecture and APIs.

In Movable Type, you cannot embed programming logic in templates using Perl or PHP, but only MTML. MTML can perform relatively complex logics, but unlike WordPress, Movable Type does not allow you to embed Perl code or execute shell commands in templates.

In fact, it is not common to write the code in MTML like what is shown in the sample code above. MTEntriesHeader and MTEntriesFooter allow you to put ul tags at the beginning and end of a list of entries displayed by the MTEntries container tag. If you want to do the same in WordPress, you must resort to writing PHP code.

The PHP code can be embedded in WordPress templates. This means that WordPress templates can run server-side commands using the PHP "exec" function. (To be precise, the PHP code can be stored in Movable Type templates, but the Movable Type template simply produces ".php" file that can be executed by the PHP interpreter unless the administrative policy prohibits the execution of the PHP code. Same as the Java code and ".jsp" file.)

Movable Type separates logics from template design, while WorldPress mingles logics and design

In Movable Type, you write plug-ins in Perl (or PHP), but templates only in MTML. Logics are written in plug-ins in Perl or PHP( as a scripting language) whereas design is stored in templates in MTML (as a template language).

In WordPress, both plug-ins and templates are written in PHP, so you can embed business logic in both places. This may mean "flexible", but it also makes the place and manner of inclusion of business logic a bit vague. To make matters even more complicated, in WordPress you can build presentation into a plug-in as well.

From a programmer's standpoint, WordPress provides innumerable ways to structure a template. The temptation is great to use this flexibility to achieve the desired output using unmaintainable coding techniques. To use an extreme example, it is possible for HTML, CSS, JavaScript, SQL and PHP to be contained in a single WordPress template. I know of no debugger that can interpret a template of such complexity. Whether the WordPress user deploying templates written by others can understand what is going on in each of these languages is a separate question.

Although it is certainly possible to create a properly-designed theme framework for use with WordPress, good development and maintenance practices certainly are not required.

Different philosophies of Security and permissions in Movable Type and WordPress

Movable Type has series of user roles that can be used to keep users from deploying code in Perl or PHP, but still allow them to use MTML. In Movable Type, the template-editing role is called "designer". The designer does not have permission to write Perl (or PHP) logic, or include any file available on the server to display (as you may know, since MT 4.38 and 5.13, the MTInclude tag has been disabled by default).

The design philosophy of security and permissions in Movable Type is that the designer of a website should not be able to do those actions. Users who can deploy Perl and PHP programs are those who have the technical understanding and authority to setup plug-ins on a server. So the designer and server manager roles can be strictly separated.

This does not have much meaning when starting and managing a personal website or an individual blog, but is absolutely necessary when managing corporate or institutional websites, such as official websites run by governments.

There is another advantage associated with a "static publishing" CMS, such as Movable Type. You may want to physically separate the content-publishing server from the distribution server for security reasons, again using my example of managing a government-related website. I do not know how the Japanese prime minister's official website is managed, but I suppose that using a dynamic-publishing CMS safely in that situation is highly difficult.

What's fun for programmers is to extend a language.

From a server-side engineer's point-of-view, the greatness of developing Movable Type all comes down to "extending MTML". You can make tags to extend language and let others use them. It is not just applying design to themes or templates, but much more than that.

Here is a template logic that you can create that permits a designer to build Facebook applications using MTML:

<MTIfFacebookLoggedIn>
Welcome, <mt:FacebookUserName escape="html">! 
<a href="<mt:FacebookLogoutURL>"> Logout </a> 
<MTElse> 
<a href="<mt:FacebookLoginURL>"> Login via Facebook </a> 
</MTIfFacebookLoggedIn>

For a publishing company's website, template tags to display a list of books can be defined and implemented like this:

<MT:Books limit="10"> 
<li><a href="<MT:BookPermalink>"><MT:BookTitle></a></li> 
</MT:Books>

Once you have finished defining MTML tags, you can have a designer handle the rest of the website presentation. Important is that you can separate low-level programming and the design of the final website presentation. Programmers who define tags, and designers (or front-end engineers) who write tags in templates, do not share the same files or templates.

The beauty of creating your own MTML tags is that such tags can be reused in other projects. With MT, each presentation is written by designers using the same tags once programmers define their tags. As you know, programmers are so lazy that they hate writing similar code for each website whose purpose is very similar.

Fun as a manager #1: Being able to establish the style to build as a team

Being able to divide areas of tasks between server-side engineers and front-end engineers lets you establish your team's work style. Engineers who have different skills can work simultaneously.

I can tell you from my experience that writing templates entirely in PHP puts too much burden on the server-side engineers. First of all, if engineering is not divided, there is no question who has the heaviest burden.

It is always hard to find skilled engineers these days. As long as front-end coders understand HTML and MT tags, there can be much to do for them and thus it is easy to assign them to tasks.

Fun as a manager #2: You do not panic even when employees quit.

Of course, managers always need to keep in mind that good employees may eventually leave your company. Let's say that one of your clients visits your office to discuss his website, asking to update it. The employee who was in charge of building it originally is now gone. Imagine how troublesome and risky this can be.

There are two advantages of using Movable Type. The first is that Movable Type makes it easier to manage websites using a team approach. The second is, and this is more important, that it is easy to pinpoint where to fix, if the website is built with Movable Type.

  1. Go step-by-step through the templates
  2. Verify the code at the MTML tag level, if applicable

By doing this, you will know where changes need to be made. If you have standardized the process of development using MTML and Movable Type plug-ins, you can greatly compress the process of understanding the website structure, resulting in a faster site revision.

Fun as a CEO from business aspect

Because I write code and manage the business also, I understand what is fun about using Movable Type. But there is more.

In Japan, especially after Movable Type 3 was released, so many websites were built with Movable Type. So there is huge business opportunity to extend, renew, or manage them.

Of course, there are websites built by WordPress as well. But I would rather not to take care of heavily customized WordPress websites for the reasons I stated earlier.

It is relatively easy to get cooperation from Six Apart because they are based in Japan and offer commercial licenses. They take the responsibility for auditing platform security and a number of other things.

Movable Type is, in fact, an "application development platform"

In this post, I focused pretty much on development style of template engine. Although WordPress and Movable Type seem to look similar as CMS, they are very different inside.

Movable Type has elements of a development platform. As developers, we can:

  • enhance MT::App and use it as a web application framework
  • use an Object-Relational mapper (MT::Object)
  • use MTML (Movable Type Markup Language)
  • use the MT 5.1 Listing Framework
  • take advantage of the pluggable structure
  • use DynamicMTML (which my company developed)

of the platform, for development beyond Movable Type's core CMS functons.

Back

16 Comments

Tinman

Tinman on June 1, 2012, 4:13 a.m. Reply

I’m a loyal Movable Type user for 8 years now and for me it is still the most flexible cms for designers. It has never limited me in my creativity. Thanks for the testimonial!

Andrew Bowden

Andrew Bowden on June 1, 2012, 4:30 a.m. Reply

I recently tried Wordpress - just as an experiment. The templating system put me right off. I was amazed at how backwards it seemed compared to MT.

MT has its flaws, but templating is so much easier

Inceva

Inceva on June 9, 2012, 9:38 p.m. Reply

Hi Takeshi… long time fan of movable type…had a question about the comment you made “WordPress templates can run server-side commands using the PHP “exec” function. ” can you please elaborate on that? just having a hard time wrapping my mind around that statement..

margaret laureys

margaret laureys on June 25, 2012, 10:41 p.m. Reply

Fun as a manager ?

genf20 plus review site

genf20 plus review site on July 15, 2012, 6:45 p.m. Reply

Junnama is a very brilliant guy. He is capable of doing anything in movabletype field.

Becka

Becka on August 27, 2012, 5:18 a.m. Reply

Moveable type has another huge advantage compared with Wordpress. MT is far more secured, which is really important.

James Gordon

James Gordon on August 27, 2012, 8:13 p.m. Reply

Hello, I just join this network and I am still looking around. I have a question. Is MTML something like html, but only for Moveable type?

Another question, can I use Moveable type when I don’t understand much from coding. Just like a blog system?

Takeshi Nick Osanai

Takeshi Nick Osanai on August 27, 2012, 8:19 p.m. Reply

Dear James,

Reply to the first question: Yes, MTML is an original tags only effective for Movable Type. The structure of MTML is similar to html. Though it can be used both for designing and programming logic.

Reply to the second question: Yes or no. You can create your own blog with default template set. If you want to customize your blog design and make original module for blog, it is better to use MTML.

Here is a documentation of designing.

http://www.movabletype.org/documentation/designer/

James Gordon

James Gordon on August 27, 2012, 9:46 p.m. Reply

Thank you. I will have a look now.

barrymandy

barrymandy on August 28, 2012, 1:51 a.m. Reply

There is no doubt that Moveable type is far more secured than Wordpress. Of course this is my opinion and as I see the author of the article thinks on the same way.

Anastasia Friend

Anastasia Friend on September 25, 2012, 5:11 a.m. Reply

Can we say that in Japan Moveable type is the most used CMS like Wordpress in Europe?

Ben10

Ben10 on October 23, 2012, 6:40 p.m. Reply

you point of view is very trustfull, MT is far more reliable than WP…

Songlyrics

Songlyrics on October 31, 2012, 12:05 a.m. Reply

Right, better security than Wordpress, exactly my point of view.

iwin.vn

iwin.vn on November 5, 2012, 7:33 p.m. Reply

It is true that MT does scale well due to it’s static HTML output, whereas Wordpress continues to hit the database multiple times for every page view because the content is dynamic.

sarees

sarees on November 8, 2012, 4:43 a.m. Reply

“Falling for him would be like cliff diving. It would be either the most exhilarating thing that ever happened to me or the stupidest mistake I’d ever make.”

proactol reviews

proactol reviews on December 12, 2012, 8:06 a.m. Reply

That was an interesting read. While MT has its own flaws, I still prefer it over wordpress for an easy template creation process.