Web design is one of the most interesting fields in
technology today. Though it is oft derided by
kernel hackers, marginalized by
technology managers, and dismissed by traditional
graphic designers, it embodies many of the practical challenges that face
Information Technologists in this new century of
computerization. Why is it so significant? Well, several reasons:
- Wide Adoption
- The sheer numbers of people using the web and the lure of its vast arrays of information have already made the web the defacto standard for on-line publication. Nothing about the technology itself (HTML, HTTP, etc) is really unique enough to explain this popularity. We had Gopher and SGML and lots of information technology theory and practice before the web. HTML and the first graphical browser, Mosaic just happened to be in the right place at the right time to garner ubiquity.
- Opportunity
- When the 'net exploded in the 90s, the web grew up too fast. The resulting mishmash of technologies looks like it got a massive dose of radiation during the embryonic stage. This makes it the perfect playground for all kinds of creative computer users ranging from system-level developers to writers and electronic artists.
- Accessibility and Flexibility
- The ideal that one publishing format can be served to blind, deaf, or cognitively impaired users over a standard PC, kiosk, cellphone, voicemail, or other device is a dream that has come closest to being fulfilled by the web. It's a daunting task, and the tools today are incredibly crude, but today's experience paves the way for tomorrow's innovation.
- Simplicity
- HTML is a relatively simple markup language, as HTTP is a relatively simple protocol. This has made it easily adopted, but also quite expandable. Here at the beginning of 2004 any web designer can bitch about the lack of broad support for the promising standards proposed years ago in the W3C recommendations. It's true that the web is not really very well engineered (if you can even use that word), but despite that it has become the best way of doing a great many things. The fact that a lot of ways to improve it are obvious just means there's more room for future research and development.
- Complexity
- The web has its dirty little fingers everywhere these days. Thanks to HTML's rapidly growing brother, among other things, it's now relatively easy to write web applications the draw data and content from any electronic source. The fact that the web is getting linked into everything just makes it easier for Joe developer to get into because most projects need not be started from scratch.
- Ambition
- Due to its wide adoption and good baseline for distributed multimedia presentation, developers all over the world are constantly working to expand the web, whether it be through proprietary plugins, browser development, or working on the specs directly. Nowadays if someone has some cool new Internet multimedia idea, chances are it will have some web component. The advantages of using a widely-deployed, well-established, and relatively open architecture generally outweigh the benefits of rolling up a proprietary solution. In the case where a new client and protocol are necessary, it seems much more likely that developers will find a way to make relevant information available on the web rather than attempt to do everything within the application.
When you boil all these down, you come up with a mixture of existing technologies, equal parts graphic design, semantic description, and internet communication with easy application integration as the secret sauce. Each by itself is just a rehash old concepts, nothing fancy there. But what sets the web apart is its existence as the much sought after real-world crucible for developing these technologies in a loosely collaborative fashion.
For the web designer (or web developer), building a great website is not just about perfecting a graphic design, nor is it about engineering the perfect application. Web design combines both these disciplines in a rigorously abstract environment. At its highest form, the web designer attempts to control the presentation and behaviour of multimedia content across a range of widely disparate environments. It's often a frustrating game of compromise and disappointment, but from a geek's perspective it easily offers as much mental stimulation as any other field in computer science with the possible exception of compilers.
Graphic Design
On the forefront of the presentational side of the web is the use of CSS to provide sophisticated rule-based graphic design without compromising all the accessibility and semantic goodness that is inherently part of a properly marked up HTML document. Compared to more sophisticated page layout formats such as PDF, or proprietary file formats such as QuarkXPress and InDesign use, CSS is crude. Even if all the features outlined in the specifications were completely supported in all browsers, it still would not offer the degree of control that graphic designers expect. Yet there is a very good reason for this.
CSS attempts to provide an abstract way of styling documents with basic semantic markup. It accomplishes this in a verbose yet surprisingly concise dialect. Toss in the fact that it is expected to handle a wide range of output devices and screen dimensions, and you have a truly ambitious project. It's unfortunate that poor support by the world's most popular browser has marginalized the benefits that CSS can achieve, but due to the collaborative nature of the web, solid solutions to a great many problems have been discovered and shared.
Server Side
Though some may argue the title of this node 'web design' refers specifically to the front-end HTML and CSS presentation of web pages, back-end programming offers the real power and flexibility needed to keep a large website manageable. From an application programmer's perspective, HTML and HTTP provide an easy interface for an application that is both widely accessible and cross-platform compatible. The widgets are admittedly spartan, but with the help of a little javascript can handle a wide range of tasks quite elegantly.
In many ways the web provides for distributed application writers what TCP/IP provides for traditional networked applications: a simple layer to take care of basic connectivity. The difference being that HTTP is not sufficient for many hardcore programming endeavours, but it is perfect for simple transactions and multimedia presentation, which coincidentally is what most Internet users want these days. The interesting thing about the development of server side technologies is that we are continuously finding better ways to funnel traditional application data and functionality onto the web.
The Future
Companies like Microsoft and Macromedia want you to think that they are driving progress on the web. While they certainly make contributions, it's important to remember that anything they provide will only last as long as they are making a profit from it. That's why real long-term progress on the web requires open file formats and protocols. Currently that progress is embodied by the recommendations put forth by the World Wide Web Consortium. My main concern is that Microsoft, in an attempt to maintain control over the browser market, will foresake these standards and devote its resources to providing proprietary enhancements to Internet Explorer. If the web becomes dependent on a single company for its innovation, then we can expect the pace of improvement to slow significantly. To look at it another way, any open standard can be built upon, whereas proprietary applications will constantly be re-invented by the next competitor. When I think of all the places we could be going if companies stopped re-inventing the wheel and started building sophisticated apps on top of open standards it makes me a little nauseous, but that's a topic for another writeup.