Why FitML sucks

End of 2013, one of our customers were convinced by the marketing team of the German company Sevenval that their FitML server was the best solution to make their website mobile ready.

FitML's only remnants are blog posts by Sevenval about it, many wasted work hours and unhappy customers.

Sevenval's FitML marketing promise was that your web server would output the Fit markup language, and their Fit server would automagically do the rest to deliver it in the correct format to mobile devices, with auto-scaled images and everything. It was also said that the server would work around device bugs and missing features; if an iPhone would not support HTML select tags correctly it would generate working replacements.

None of this was true; it was all a big mess. None of the ~10 developers working on the project had any joy with it.

Here is what FitML did wrong:

Does not work on all devices

When a new iOS version came out during that project and the FitML templates provided by SevenVal did not look good on it, their answer was: "iOS 6 is not in the browser matrix".

There is no magic going on in FitML. You will have per-device (class/version) templates. You can do that yourself already without FitML.

No Schema

There is no official DTD or XML schema to validate your output.

Sevenval will tell you that it's "Standard HTML with a bunch of <div> tags", but it's not.

Debugging nearly impossible

When your FitML is broken a bit, you will get a hard error from your FIT server, without any notice what went wrong. var_dump() cannot be used because of this.

To get more information, you have to add /dd=1/ to your URL and repeat the request. Good luck with POST requests!

Also, HTTP headers used for debugging (e.g. Firebug) are stripped away, leaving you without information.

Server-side HTML debug tools unusable

Server-side debug helpers like TYPO3's admin tool, Symfony's console or Smarty's variable debug view are unusable since they are not FitML, and converting them is near to impossible.

Broken form syntax

Form element attributes checked and disabled have to have the value true, while normal HTML allows checked="checked":

<input type="checkbox" checked="true" disabled="true"/>

This means your standard HTML form library cannot be used.

Broken HTML syntax

Every class attribute is seen as special FitML instruction.

If you want to generate a class attribute in the HTML output, you have to use the style attribute. Yes.

You can not use a standard CMS unless you customize *all* the output, even of standard content elements like text. This means you are forced to develop and maintain two versions of your web site/web app.

No magic: Mobile switch

Their solution for redirecting mobile clients from the normal to the FIT server is an apache rewrite rule that's several years old.

Documentation

Their documentation is not wrong, it just does not describe this aspect of the behavior. We really got that reply from their support staff.

Unstable server

Until 2 days before launch, we had reproducible crashes of the entire FIT server software.

No magic: Missing features

Some iOS versions don't support the <label for> attribute, and the FitML server does nothing to compensate that automatically (e.g. by adding some javascript).

Marketing vs. Reality

The FitML/Sevenval people will tell you that everything automatically works, while in reality things are really nasty - up to the point that their support staff says "no, that can't be done".

Their website also states:

FITML ist eine eigens von Sevenval entwickelte Markup-Syntax, die sich an XHTML und Microformats orientiert.

This is wrong; there are no microformats at all.

AJAX

FitML has something called "ContentUpdate", but that only gives 2% of standard AJAX functionality.

Throw away all libraries you use for your desktop site. jQuery.ajax()? Forget it. You have to re-develop all the existing functionality to fit into FitML.

Written by Christian Weiske.

Comments? Please send an e-mail.