MT2.6

Everyone's mentioned the cool shiny features in Movable Type 2.6, but here are some other reasons:

  • encode_xml does explicit CDATA blocks instead of entity encoding text with HTML in it. I wasn't aware people were doing, like, <![CDATA[<$MTWhatever encode_xml="1"$>]]>. You'd think that'd double encode it, eh? But of course, it's only a lucky thing you didn't actually include two closing brackets and a >, since MT would emit that literally and so ask to close the explicit* CDATA block. So you might need a plugin to escape that closing bit.

    And if you want Radio users to read your feed you still have to go with a plaintext (best option these days) or conventionally escaped description, because it doesn't do CDATA. If you didn't look, I use the plaintext entry excerpt for my descriptions, and put the whole entry in an explicit CDATA block in the content:encoded tag. As Phil writes in the above link, some other readers won't handle switching arbitrarily between PCDATA and explicit CDATA contexts, so really you should be doing it as I do it (though I don't include multiple tags in mine), which is why you shouldn't make your own RSS aggregator (which you shouldn't, because you'll not use conditional HTTP, or put a way too low minimum scan limit** in place and people will bang your server with it).

  • Errors with outgoing pings are reported, both immediately and in the activity log.
  • An mt.getRecentPostTitles function for one or the other of the XML-RPC weblogging APIs: get just the page titles and IDs, not the entire posts. I know something like this was discussed, and I thought the new version of the Blogger API had accepted something like this... but then, not even Blogger has implemented it, and . Really, if they wanted to move to the new API, they should've had an implementation ready when they first, so people could actually use the API a bit to see what was wrong or missing, rather than trying to spring it fully formed from the community mind in total architecture-astronaut-space. I know Pyra isn't (well, wasn't) the most resource-blessed company, though.
  • Set keywords and URLs to ping with Trackback through XML-RPC. No clients support it yet as far as I know, but I'm sure that'll change soon (if it hasn't already).
  • Several security fixes. They sound like security through obscurity problems: turning off comments didn't actually prevent comments from being posted, they just omitted the posting form; authors could manually enter the URL of the author permissions form to get there even if they didn't have permission; etc. Good to know they're taking this seriously--but then, who'll pay for MT Pro if it's knowingly insecure?
  • The documentation says "weblog" instead of "blog."

Notably, the problem that's causing Phil's and my consternation here does not appear to be listed. Guess I'll post to the plugin author list.

* I still maintain there's confusion among RSS folk that "CDATA" always means an explicit CDATA block (<![CDATA[...), when to me the XML spec says any content that isn't to be parsed for XML tags--including PCDATA that's been parsed--is appropriately termed "CDATA." But then, I never saw where the other encoding in "double encoded" descriptions occurs, and no one would explain it to me when I asked.

** You can't do more than hourly without incurring bad karma. If you use conditional HTTP and I can't figure out who you are, I may block you anyway. (I couldn't tell it was V.S. Babu using Spycyroll née PyBlagg from just the domain hitting me, so I blocked him when I mightn't've otherwise.) There's no excuse for not using conditional HTTP; "it takes time to implement" is not a good excuse, because you shouldn't be making your own RSS aggregator. (And I don't mean you shouldn't be innovating, I just mean that, according to what's out now, chances are you won't. There's a glut in the .NET aggregator space, and other than Syndirella eating Stapler.py's lunch, I don't know any actual innovation. Especially in interface: that everyone loves NetNewsWire doesn't mean three-pane is the One True Way. Feel free to do something cool and new--just build on the community's experience, if not someone else's code, so you get the necessities like conditional HTTP and not hammering servers right.)