Rise of the Machines
Many tools are now being developed to make the creation of these experiences much easier (Edge, Sencha, Hype, MotionComposer, Animatable(2) etc). However, there’s a potential danger lurking under the surface with these apps and the many demos and samples showing off these new shiny features: Machine Generated Code.
Made in the image of Flash
The content created might be made using web standards like HTML5, CSS3 and SVG but in reality it fails in exactly the same way that Flash does — poor / non-existant semantic structure and a lack of accessibility(3).
Another form of Machine Generated Code that is manifesting on the web is within many popular web apps. Take a look at the code under the hood of Google+ and you’ll see something like this:
Is that code any better than the code that is generated by iWeb? It’s possibly worse. How can a company like Google who has incredibly talented developers end up with code like that? Well, in Google’s case it was written using a templating system that uses Closure, these templates are converted by java on the server into HTML(4). Nothing inherently wrong with that process but the end result is HTML that is machine-friendly but is not really intended to be easily readable by humans.
(Of course a counter-argument is that clean semantic HTML code doesn’t apply to web apps as they are ‘more complex’ than ‘regular’ websites! That’s something for further discussion).
Change begins at home
So, is there a solution to this? Well, the first solution is to consider these issues yourself. If you’re evaluating tools like Edge, Sencha or evaluating development frameworks then pay close attention to the code they create. If it seems to be falling short then take the time to give feedback to the companies behind them. In the case of Adobe’s Edge tool which is currently an early preview release on Adobe Labs then there is an opportunity to give feedback on the app and influence it at an early stage of development. Don’t just whine about it on Twitter but take the time to give feedback and clearly explain what you think is wrong and how it can be improved.
Talking of people whining on Twitter, I wrote this article and had it all pretty much ready to publish when Adobe released another product on Adobe Labs, Muse. Although the main focus of this article is on the more interactive, dynamic flash-esque content creation applications that have been appearing I couldn’t really post this article without briefly mentioning Muse (I did mention iWeb and talk about Google+ after all, both of which obviously don’t fit that category of app).
Muse definitely renders Machine Generated Code as it’s sole aim is to enable visual designers to “Design and publish HTML websites without writing code”. I have to admit that the first thing I did when viewing the Muse website (which is itself built with Muse) was to view source, and sadly I was disappointed with what I saw there – lots of nested divs, generally bloated looking content, and despite purportedly being ‘HTML5’ there were no HTML5 structural tags to be seen.
Many WYSIWYG apps have come and gone and have never managed to produce good clean code without requiring the user to intervene and clean up code, this doesn’t mean it’s impossible to create such an app, but it’s definitely a big challenge. As with Adobe Edge I’d recommend taking time to give good, reasoned feedback about what you consider is wrong with the output it produces, don’t just complain about it on Twitter.
Christian Heilmann wrote an interesting article called “Getting rusty – we need new best practices for a different development world” which I think gives an interesting pragmatic perspective on the debate about Machine Generated Code and why we rightly consider clean, semantic code desirable as opposed to that produced by apps like iWeb, Edge, Hype, Muse etc. His final couple of paragraphs sum up the thoughts and feelings that inspired me to write this post:
“Using web standards means first and foremost one thing: delivering a clean, professional job. You don’t write clean markup for the browser, you don’t write it for the end users. You write it for the person who takes over the job from you. Much like you should use good grammar in a CV and not write it in crayon you can not expect to get the respect from people maintaining your code when you leave a mess that “works”.
And this is what we need to try to make new developers understand. It is about pride in delivering a clean job. Not about using the newest technology and chasing the shiny. For ourselves we have to understand that the only one who really cared about our beloved standards and separation of concerns is us – as we think maintainability and not quick deployment and continuous iteration of code. The web is not code – the web is a medium where we use a mix of technologies fit for the purpose on hand to deliver a great experience for the end users.”
- 1: By post-Flash I mean as the only way to do interactive animated content on the web.
- 3: I acknowledge that it is possible with recent versions of the Flash player to make Flash content that is more accessible, but generally Flash’s integration with Screen readers like Jaws etc is not great, and you have to specifically apply settings to the Flash content to help it be accessible.
- 4: This information about Google+ development and other interesting info from this thread.
Tags: code,web dev,adobe,edge,hype,sencha,animatable,css,html,muse
Originally published on 2011-08-17 01:26:10 by Rick Curran
Last edited on 2011-08-17 01:26:10 by Rick Curran
Left by KJ on 2011-08-18 15:43:21 #
"poor / non-existant semantic structure and a lack of accessibility"
This is true, if you're a really bad AS3 programmer. The Flash bashing needs to stop. Talented devs know how to make accessible Flash applications. They also know how to code properly just like any other developer who specialises in a particular programming language. The sooner people realise that Flash is more than just timeline animation the sooner we'll see more balanced and thoughtful arguments instead of the 'pick generic anti-flash argument' that seems to get more prevalent on the internet. It's a tool and has its uses and like every other language is only as good as the developer that uses it.
Apart from that I pretty much agree with the rest of the article.
Also, an extra note about Muse. Adobe seem to think that it's a good thing that designers not know about HTML or CSS coding. That to me is worrying. If I was hiring a digital designer I would expect that HTML and CSS coding abilities would be a given. In order to truly understand digital design surely you need to know how the technology you are designing for works?
Left by Redpanda on 2011-09-28 23:04:43 #
Great article, tho seems quite biast - for an understandable reason, as you're a developer by the sound of it.
Being a designer/animator, I'm not expected to know code or understand how it works at any job I've ever held. Companies usually have a separation for this task with a dev team. There are very few people in the world who are great at both design and code, but rather excelling in one area or another. My point: let's not blame either designers or developers for not knowing how to do the other task. Let's hold the companies who create software like Edge and Sencha mindful of code that gets generated in the background.
Left by Rick Curran on 2011-09-29 16:44:07 #
@Redpanda: Thanks for your comment, my background is actually both as designer and developer so I hope that I'm looking at this with eyes on both sides.
Your final point about holding the companies to account is a good one, any software that creates / generates code has a responsibility to keep things like standards compliance etc at the forefront and not just consider the visual aspect.