1: Introduction to The Web Standards Curriculum/Table of Contents
11th October 2012: Material moved to webplatform.org
The Opera web standards curriculum has now been moved to the docs section of the W3C webplatform.org site. Go there to find updated versions of these docs, and much more besides!
12th April 2012: This article is obsolete
The web standards curriculum has been donated to the W3C web education community group, to become part of a much bigger educational resource. It is constantly being updated so that it remains current with modern web design practices and technologies. To find the most up-to-date web standards curriculum, visit the web education community group Wiki. Please make changes to this Wiki yourself, or suggest changes to Chris Mills, who is also the chair of the web education community group.
- Next article—The history of the Internet and the web, and the evolution of web standards
- Table of contents
For a while now, I’ve had a dream. My work in the last 8 or 9 years has been heavily focused around education, whether I’ve been commissioning and editing technical books to help people create cool stuff with technology, training new employees at the various companies I’ve worked for, or editing and writing tutorial articles to help people use Opera’s software. I am passionate about the Web too, and a big believer in open web standards. I wanted to do my bit to help make the Web a better place, and I think this comes back to education, whether that’s teaching people how to collaborate and have more respect for one another, or teaching them how to make their web sites work across platforms and devices, and be accessible to people with disabilities. Web standards are key to the latter, so I decided to try putting my time and energy into something that would help increase the adoption of web standards on the Web today and in the future. It has been floating around my head for a while now, but it has finally come to fruition at Opera—many thanks to my wonderful employers for paying me to do this! One of my dreams has finally been realised.
So in this article I introduce to you the product of a lot of hard work over the last several months (by myself and a lot of other people)—the Web Standards Curriculum, a course designed to give anyone a solid grounding in web design/development, no matter who they are—it is completely free to use, accessible, and assumes no previous knowledge. I am mainly aiming this at universities, as I believe the standards of education in web standards to be somewhat lacking at many universities. I’ve heard tales of students being marked down for using web standards in their coursework, because the marking schemes are so outdated; I’ve also heard tales of employers despairing because when they interview university graduates for web–related positions, they find out that the graduates really don’t have a clue about real world web development. If you’re at a progressive university that does teach web standards in a reasonable fashion, then I tip my hat to you—get in touch!
In this article I’ll cover the following:
- Why web standards? Here I briefly discuss the advantages of using web standards, why they are not being adopted like they should, and how my course aims to tackle these issues
- How the course is structured. What it says on the tin; this section also talks about how educators should think about presenting the material to use it effectively in courses
- Who should use this course? When I say “anyone”, who do I mean, exactly?
- The table of contents. Skip to this bit if you’re fed up with my waffle and want to get straight to the learning.
- Contact me
Why web standards?
The main reasons that adopting web standards in your web design/development work is such a good idea are expanded on in article 4, but I’ll go through them briefly here, to set the scene. Using web standards confers the following benefits:
- Ease of maintenance: This follows closely on from the last point—if you can write HTML only once, and then apply styles and behaviour wherever they are needed using classes and functions, then if you need to change something at a later date, you can just make the change in one place and it propagates throughout the entire web site, rather than having to specify that change everywhere that it is needed!
- Accessibility: The next two points are closely related—one of the big issues on the Web is making web sites accessible to everyone, no matter who they are, regardless of circumstance. This includes making web sites usable by people with disabilities such as blindness/visual impairment and motor impairment (ie, people who have restricted movement, and might not be able to use their hands properly, or at all). By using web standards and best practices, you’ll be able to make your web sites usable by this significant group of the web audience with no extra effort.
- Device compatibility: by this, I mean ensuring that your web sites will work not only across different platforms—ie Windows, Mac, Linux—but also alternative browsing devices, which these days can include mobile phones, TVs and games consoles. These devices have limitations such as screen size, processing power, control mechanisms available and more, but the good news is that again, using web standards and best practices, you can pretty much guarantee that your web sites will work on most of these devices. There are more mobile phones in the world than PCs, a lot of which are Internet–capable, so can you or your clients afford to miss out on this market? For more on mobile web development, check out some of the dedicated mobile articles on dev.opera.com.
- Web crawlers/search engines: By this, we are talking about what is termed search engine optimization—the practice of making your web sites as visible as possible to the so–called web crawlers that trawl the web and index web sites, and therefore giving you better search rankings on sites such as Google. There is a science to this (see SEO articles such as Intelligent site structure for better SEO! and Semantic HTML and Search Engine Optimization) but yet again, just by using web standards you will make your site a lot more visible on Google, Yahoo!, etc., which is good for business.
Even with all these advantages however, most sites on the Web still do not follow web standards, and many web developers working today still use bad, outdated practices. “Why?” You ask. There are a number of reasons for this—people will cite lack of education, company policy, not needing to learn standards because they are getting paid anyway, it’s too hard to learn, standards support in web browsers…let’s look at each one of these in more detail, and then look at the counter arguments, to try to get rid of any excuse for not adopting/learning standards.
- Lack of education: There is an issue here, but this is one of the main reasons this course was created. A lot of universities don’t teach web standards in their web–related courses, and a lot of curriculums tend to contain outdated practices, and are hard to change due to bureaucracy. Books and training courses tend to be expensive. But wait! Now we’ve provided a course that’s free, and are running around universities etc to help make these changes for them, so there’s really now no excuse here.
- Company policy: There is no doubt that some companies/institutions still have really old and outdated web sites. They may have policies that force their employees to use outdated browsers, but it is getting better, and now there is a free course available to easily show how to make changes, things should improve further. Upgrading a web site to modern standards encourages companies to upgrade the browsers that they use, as sites will not look as good in outdated browsers (although they should still work in older browsers). Companies should encourage their customers to upgrade as well. There is sound business reasoning as well—sites that use web standards, as explained above, will yield better search engine results and be accessible to people with disabilities and users of alternative devices—can companies afford to ignore this audience?
- “I don’t need to learn them!”: I know some developers will sit there and say “but I’m using outdated practices and still getting paid—so why do I need to bother with this new stuff?” As explained above, it makes your code more efficient, easier to write, and easier to maintain. And it allows you to write modern code that is accessible and usable on alternative devices—isn’t that exciting? It will also make your skillset more future–proof, and make you capable of earning more. A lot of companies are requesting skills in web standards these days.
- “It’s too hard to learn!”: Rubbish. After digesting some of this course, you’ll realize how easy it is to pick up the basics of using web standards, whether you’re new to web development/design, or an existing web person upgrading your skillset. It is about as hard as using the old, outdated bad methods, which isn’t very, and it confers so many advantages over the old ways.
- Standards support in browsers: Standards support in browsers used to differ greatly, which made getting web sites to work across different browsers a nightmare. But those days are gone—modern browsers all have decent web standards support. Support is still sometimes needed for old browsers that don’t have such good standards support, but by using modern best practices, you can ensure that users of those browsers will still have a reasonable user experience.
So as you can see, there’s really not any excuse to not adopt web standards in your web development work. At least if you are coming to this course from the point of view of a beginner, you are starting off on the right foot and learning best practices from the start, rather than having to unlearn bad practices.
OK, so we keep talking about these bad practices in hushed tones, like they’re the secret plans to the Death Star or something. We are not going to cover these practices in any detail in this course, as we don’t believe we should; we think you should just be sent along the correct path to begin with. You are however probably wondering what they are, so let’s just talk about them briefly.
<font> elements (terrible for maintenance, and adds superfluous markup to the page). And many other crimes against web development. The worst thing is that I say “in the old days” above, but the fact is that a lot of people are still doing things like this!
Web development is a messy skill at the best of times, but bad practices like these just make it harder. Using web standards and best practices, as outlined in this course, is the best way to go.
The course is composed of several articles—there will be over 50 when the basic course is finalized—and each article is a few thousand words long. Each article focuses on a specific microtopic, and where appropriate, contains background on the topic, essential theory, practical examples and walkthrough tutorials to follow, and exercise questions to test your knowledge.
A logical way to teach the course is to work out how many lessons you’ve got available to teach it over, and divide it by the number of articles. For each lesson, get the students to read over the articles connected to that lesson before the lesson occurs. Then go through practical examples during the lesson, and get the students to do the exercise questions after each lesson. Logically, I think an hour should be enough time to go through the concepts contained in each article, as long as you get the students to read each article before the lessons are taught. There is perhaps about 50 hours of teaching time in this course, and 50 hours of background reading.
Obviously, you’ll have to think about the amount of time you teach the course over and exactly what to cover in each lesson, but experimentation is key.
Who should use this course?
Who is it aimed at? I want it to be usable by anyone who wants to learn web design “the right way”:
- University/college students and teachers: I have mentioned this already—this is an ideal set of articles to either create your own course from and deliver it to students, or use parts of to supplement your own course. To any students already studying some kind of web–related course, you should use this material to supplement your knowledge, and lobby your teachers into considering it as well! I would recommend all teachers/lecturers to look over this material as well, to make sure the techniques covered in their courses are current best practices.
- Pre–college/university age students: While this course has been mainly written with adults in mind, there is no reason why younger students can’t benefit from it—have a go and see how you get on.
- Existing web designers and developers: There are a lot of existing web developers and designers out there who either aren’t using web standards and best practices, or could use an easily accessible reference to look things up in, or use to brush up their knowledge. To the former, I urge you to give this course a chance and see how easy and valuable web standards are to adopt. To the latter, I’m sure you will find this course useful in helping others, brushing up on your skills, looking up hard–to–recall facts, and finding ammunition to help convince bosses and clients that things such as accessibility make a lot of sense.
- Educators inside companies: This is an ideal way to provide inexpensive training to employees.
- Any other individuals: If you are an individual who just fancies learning something about web design and development, then again, this is an inexpensive way to get some help with your endeavors.
I am not expecting people to pay to use this course—it is released on a Creative Commons license, so freely available to anyone who wants to make use of it, as long as they give us the proper attribution.
Table of contents
- Introductory material, by Chris Mills—This is the one you’re reading. Hebrew translation | Hungarian translation | Italian translation | Japanese translation
TRANSLATIONS AVAILABLE! There are other translations of the web standards curriculum available too.
Introduction to the world of web standards
- The history of the Internet and the web, and the evolution of web standards, by Mark Norman Francis. Hebrew translation | Hungarian translation | Italian translation | Japanese translation
- How does the Internet work?, by Jonathan Lane. Hungarian translation | Japanese translation
- Beautiful dream, but what’s the reality?, by Jonathan Lane. Hungarian translation | Japanese translation
Web Design Concepts
This section won’t go into any code or markup details, and will act as an introduction to the design process before you start to create any graphics or code, as well as concepts of web design such as IA, navigation, usability etc.
- Information Architecture—planning out a web site, by Jonathan Lane. Hungarian translation
- What does a good web page need?, by Mark Norman Francis. Hungarian translation
- Colour Theory, by Linda Goin. Hungarian translation
- Building up a site wireframe, by Linda Goin. Hungarian translation
- Colour schemes and design mockups, by Linda Goin. Hungarian translation
- Typography on the web, by Paul Haine. Hungarian translation
- The basics of HTML, by Mark Norman Francis. Hungarian translation
- The HTML <head> element, by Christian Heilmann. Hungarian translation
- Choosing the right doctype for your HTML documents, by Roger Johansson. Hungarian translation
The HTML body
- Marking up textual content in HTML, by Mark Norman Francis. Hungarian translation
- HTML Lists, by Ben Buchanan. Hungarian translation
- Images in HTML, by Christian Heilmann. Hungarian translation
- HTML links—let’s build a web! by Christian Heilmann. Hungarian translation
- HTML Tables, by Jen Hanen. Hungarian translation
- HTML Forms—the basics, by Jen Hanen. Hungarian translation
- Lesser–known semantic elements, by Mark Norman Francis. Hungarian translation
- Generic containers — the div and span elements, by Mark Norman Francis. Hungarian translation
- Creating multiple pages with navigation menus, by Christian Heilmann.
- Validating your HTML, by Mark Norman Francis.
- Accessibility basics, by Tom Hughes-Croucher.
- Accessibility testing, by Benjamin Hawkes-Lewis.
- CSS basics, by Christian Heilmann.
- Inheritance and Cascade, by Tommy Olsson.
- Text styling with CSS, by Ben Henick.
- The CSS layout model - boxes, borders, margins, padding, by Ben Henick.
- CSS background images, by Nicole Sullivan.
- Styling lists and links, by Ben Buchanan.
- Styling tables, by Ben Buchanan.
- Styling forms, by Ben Henick.
- Floats and clearing, by Tommy Olsson.
- CSS static and relative positioning, by Tommy Olsson.
- CSS absolute and fixed positioning, by Tommy Olsson.
Advanced CSS study
- Headers, footers, columns, and templates, by Ben Henick
- Programming - the real basics!, by Christian Heilmann
- Traversing the DOM, by Mike West
- Creating and modifying HTML, by Stuart Langridge
- Graceful degredation versus progressive enhancement, by Christian Heilmann
- Get familiar with HTML5!, by Chris Mills
- New structural elements in HTML5, by Chris Mills
- New form features in HTML5, by Patrick Lauke and Chris Mills
- Introduction to HTML5 video, by Bruce Lawson Patrick Lauke
- More accessible HTML5 video player, by Cristian Colceriu
- HTML 5 canvas - the basics, by Mihai Sucan
- Introducing Web Sockets, by Bruce Lawson and Mike Taylor
- Running your web applications offline with HTML5 AppCache, by Shwetank Dixit
- Web Storage: easier, more powerful client-side data storage by Shwetank Dixit
- Web Workers rise up!, by Daniel Davis
- How to use the W3C Geolocation API, by Shwetank Dixit
Mobile web development
- Mobile 1: Introduction to the mobile web, by Brian Suda
- Introduction to hCard, by Christopher Schmitt
- Introduction to hCard, Part two: Styling hCards, by Christopher Schmitt
- XFN encoding, extraction, and visualizations, by Brian Suda
- Styling XFN and rel-license links, by Christopher Schmitt
- Styling hReview Microformats, by Christopher Schmitt
- Styling and extracting hCalendar, by Christopher Schmitt
- Microformat Encoding and Visualization, by Brian Suda
Supplementary accessibility articles
- Introduction to WAI-ARIA, by Gez Lemon
- Creating accessible data tables, by Frank Palinkas
- Building Accessible Static Navigation with CSS, by Frank Palinkas
- Getting your content online, by Craig Grannell.
- More about the document <head>, by Chris Heilmann.
- Supplementary: Common HTML entities used for typography, by Ben Henick.
- The Opera Web Standards Curriculum glossary, by various authors. This is incomplete, and will be added to as time goes by.
The number of people who have helped me with this course are too numerous to mention in any great detail, but I have hopefully included everyone here. They are all great people, so check them out—go to their talks, buy their books, read their blogs, or do whatever else you can do to support them. I give to all of you my admiration and gratitude.
- The authors: thank you so much to Ben Buchanan, Tom Hughes–Croucher, Mark Norman “Norm” Francis, Linda Goin, Paul Haine, Jen Hanen, Benjamin Hawkes–Lewis, Ben Henick, Christian Heilmann, Roger Johansson, Peter–Paul Koch, Jonathan Lane, Stuart Langridge, Robert Nyman, Tommy Olsson, Greg Schechter, Nicole Sullivan, and Mike West. Without you, this course would be nothing, literally.
- The Opera crew: best wishes to Jan Standal, David Storey, the rest of my team, and everyone else at Opera for believing in this idea, and helping me to develop the plan.
- The organizations: thanks to everyone at Yahoo (the authors, and Sophie Major for he, by Christian Heilmann. lping to do a lot of organization and promotion), the WaSP (particularly Gareth Rushgrove, Stephanie Troeth and Aarron Walter), the Britpack, the Geekup folks, and all the universities who showed an interest in looking at this course and helping to take it further.
- The individuals: small mercies shall be granted to the following wonderful people—Craig Saila, Sara Dodd, John Allsopp, Roan Lavery, Bruce Lawson, Alan White. Sorry if I forgot anyone.
- The readers: special hails to you for having an interest in creating web sites the right way, and taking time out to read this course!
I am constantly looking to improve this course, and get it adopted by as many people as possible. If you have any suggestions for how the course could be improved, any general comments to share, or want to talk to me about adopting it somewhere, then get in touch. My e–mail is cmills [at] opera [dot] com. You can also post comments about each article in the series using the “Discuss this article“ link at the bottom of each one. You’ll need a my.opera account to participate in discussions.
- Next article—The history of the Internet and the web, and the evolution of web standards
- Table of contents
About the author
Chris Mills is a developer relations manager for Opera—he edits and publishes articles on dev.opera.com and labs.opera.com, liaises with the community to raise awareness of Opera and collect feedback, and evangelises about Opera software wherever he can. He is also the organiser and editor of the Web Standards Curriculum.
Outside of work, he is an extremely avid music fan, enjoying playing and listening to a wide variety of music, including metal, folk, punk, electronica, prog, and more. His main band at the moment is the mighty Conquest of Steel.
This article is licensed under a Creative Commons Attribution, Non Commercial - Share Alike 2.5 license.