I think the title (and domain name) are a bit misleading: that's not HTML6, because it doesn't appear to be endorsed by anything related to the web standards (Mozilla, W3C, etc). That's MyHTML, sure, but not really HTML6.
Funnily enough, at a first glance it looked like a real proposal, then I looked again and it appeared as a joke (I mean ... <html:html> and <form:form> are a bit satirical), and then I looked the repo and there's enough issues to think that it is actually real.
> I think the title (and domain name) are a bit misleading: that's not HTML6, because it doesn't appear to be endorsed by anything related to the web standards (Mozilla, W3C, etc). That's MyHTML, sure, but not really HTML6.
HTML5 was exactly that; just a bunch of implementors (WhatWG) until the W3C eventually endorsed it.
I for one was neither mislead by this post nor did I take it as a joke.
I agree with lmm's comment, and clarify a tacit assumption that you're implying: that these ideas are somehow less valid because they aren't associated with a standards body.
It's true you never outright claim that, but you accuse the author first of being misleading, and then of making a joke. In fact this is (clearly) a real, heartfelt attempt to articulate the path one person wants HTML to move in, and I object strongly to any rhetoric that seeks to invalidate this persons views.
The domain is even more misleading: this isn't the 'HTML6 spec', it's one person with little support or peer review (completely unlike whatwg). It's worth flagging the article.
I hate to shit on people's work[1] on HN because everyone else does it but I earnestly think this will get filed in the same bin as XHTML, aka "no web developer actually cares about this so no one will write it and it will die an awkward, forgotten death."
HTML5 did some very important things. Mainly it wrestled back the web from plugins.
Hey, remember Flash?
Isn't that great! That in 2014 I can say "Remember Flash?" Flash had such an insane grip on the web and now it's nearly gone! Not nearly, you might argue, but there are extremely few serious pages left that depend on flash. We've come a huge way since 2009.
It's crazy to think back, honestly. I'm amazed at how the grip of flash has receded. I would not have guessed in 2008 that this was where we'd be. I am a happy web developer.
This just doesn't solve the same scope of problems. It might be useful to some people, just like XHTML, but it's not worth building a new buzzword paradigm over.
[1] Everyone who writes a post like this deserves to be commended. Putting your own opinions out there is hard, so kudos to the author.
I don't think it's shitting on work to criticize this proposal. It has too many flaws to just be nice, smile and go on - it is the direction I don't want HTML to take, and the direction that already failed.
It's missing the lesson of XHTML. Namespaces and XML-correctness failed, what is wanted is easy to write HTML that is readable and rescueable by the browser if it is invalid. Namespaces are a clusterfuck when you just want to get a html-element with a parser, and they make writing code so much more complicated.
Also, the whole idea of elements that have no meaning for the browser misses the niceness of HTML5. Yes, we have now some elements that have only semantic meaning like the header element, but there is at least the option for browser to help with them. It is a standard set to build readable code, not fully customizable XML with no anchor in the browser. Really appreciated are the elements that use the browser, like audio and video, as you mentioned. That is missing here.
Maybe things like the media element are a good idea. Or maybe not, since it does not hurt to be explicit what you are specifying here, a video or an audio file - talking about semantic.
>extremely few serious pages left that depend on flash. //
I'll bet of the pages served the [vast] majority depend on flash for display of content and/or advertising.
On the other hand many _sites_ no longer rely on flash in that they offer an alternative HTML5 implementation. But, of the pages served I'd imagine that version is far less commonly presented to the site visitor. I'm thinking YouTube as an example.
http://httparchive.org/trends.php?s=Top1000&minlabel=Nov+15+... shows that in the Top 1000 (however they're judging that) the instances of flash use are down on average from 52 to 34% over the last 4 years. However the average flash amount of flash transferred and the average number of flash items on a page don't show any downward trend.
HTML5 may have enabled some of that, but I think the thing that actually "wrestled the web back from plugins" is the iPhone, or more generally, the smartphone. Popular devices that people wanted to target, without support for plugins (sure, Android had Flash for a while, as a second-class citizen, but it never had support for arbitrary plug-ins).
Some good ideas here but some terrible ones as well. First, <html:whatever> is terrible. We don't need namespaces in HTML (or in XML for that matter, but that's a different story). <media type="image"> would be sufficient. Even better, something like this:
I do like the idea of not having generic <div>'s everywhere. You can already do this with, for example, Angular. Basically, aside from the pre-defined elements (div, span, input, etc.) I want to just use whatever element I choose myself. I should then be able to style it how I want, and by default it can be, let's say, a borderless, 0 margin, 0 padding, transparent, block element. That way I can use add <wrapper> and style it how I want. Saves keystrokes. This gets me into trouble if later browsers decide to actually support <wrapper> with different semantics than I intended, but I am sure we could work around this somehow without resorting to <html:wrapper> namespacing.
Lastly, I really would love to be able to define element behavior. I want to say that <calendar> is a link, until you click on it, then it opens a calendar, and fires such and such events, etc. Basically, instead of adding a script tag to the base template that defines how $('.calendar') should work, I want to define it globally, a la Angular's directives, then have this happen for the entire site. If the browser allowed me to have finer grained control over user input (exact keystrokes, position of cursor, etc.), I could then re-create <input type="text">! You might say "well, we already have that, the browser does it", but the beauty of doing it yourself is that you can define more complex rules for it than just "type in text". You could, for example, easily define the format of it without having to resort to ugly hacks (think a mm/dd/yyyy type input, or an insurance subscriber ID with a very specific format).
Came here to drop a link to web components ;) imho, empowering devs to define elements & their behavior is better than defining a standard set of elements & their behavior.
I am aware of <picture>, but it's a bit too narrow I think. The srcset functionality is really what I want, but there's also the other aspect of this: the ability to specify content-type.
Nobody, but that's not a problem with namespaces. Just a problem that they didn't specify a default.
Treat them like namespaces aka packages aka modules in programming languages and I don't see a downside. Import what you need, allowing defaults. You're able to override terms if you really need to with stacked imports. You're able to use conflicting terms by specifying the namespace. You're able to alias namespaces to convenient short-hand. i.e.:
Yes writing "html:" explicitly everywhere seems pretty silly. When the domain's primary purpose is writing HTML, that should obviously be the default/root namespace.
But adding support for alternatives on top of that...? Not seeing the evil there.
I'm not the OP, but 'Bzzt, wrong' is rude, and not how people communicate on HN.
A default namespace of 'html', and explicit namespaces for is reasonable. But <html:a> instead of <a> is ridiculous and few people who currently create content for the web will ever use it.
HTML will never be semantic. The whole idea should be scrapped. HTML is inextricably bound to CSS in 2014, and has become more and more about presentation and less and less about data.
Which is fine. We have JSON and XML for data. I would rather see some cohesive standards for JSON data formats, because that is the future. HTML is just the glue between CSS and Ajax requests.
To your point, I would also love to see more improvement in the area of using HTML/CSS/JS as a proper user interface toolkit. For example, Flexbox and CSS Grid Layout are steps in the right direction.
The web browser is a powerful sandboxed VM installed on virtually all Internet connected devices. And yet we a terrible toolkit for building applications on top of this VM (and I know it's because existing tools were built for hyperlinked documents and not proper stateful applications).
Also an interesting interesting topic are the different classes of these Internet applications. On one hand you have applications like Gmail, which are intended to reach a broad audience and should work on most "platforms" (substitute "web browser" for "platform" in this case). But you also have the traditional enterprise LOB application, where you may focus on one or two platforms and make that a "requirement".
I agree that HTML needn't be strictly semantic in the way that the OP suggests. But for the foreseeable future, it does need to encode basic structural data for CSS-less presentation. That includes links, headings, inter-page and intra-page navigation, and the like. Who needs that data? Screen readers, text-only browsers, and scrapers, to name a few.
Someday, it may be possible to do away with the concept of a web "page" or "document." Desktop and mobile apps aren't (generally) built in that paradigm. But if we move away from the document concept, we'll have a new set of problems. How do we represent things like blog posts, which really are more like documents than applications? How do we enable a variety of clients with varying capabilities to consume textual content? How do we maintain the useful concept of a URI, if at all? These may not be unsolvable problems, but they are challenging for sure.
I simply can't imagine anyone wanting to adopt this.
It seems like a lot of effort was put into the concept, and there are some great suggestions, but the added bloat goes against adopting the proposed solution.
"HTML6 is conceptually HTML with XML like namespaces."
Well, there goes backwards compatibility. This sounds like a poor attempt to modularize markup. Web components + shadow DOM have already solved this problem. React solves this problem.
"there is a void that HTML5 has yet to fill and that void is truly semantic markup."
The spec I see here doesn't even satisfy this requirement! It simply adds namespaces to existing elements and changes the syntax for some form elements. For instance:
<html:media src="images/logo.jpg" type="image">
vs.
<img src="images/logo.jpg">
Which is more semantic? Neither. They're identical in every way. Why is it better for the browser to figure out the type rather than using <video> or <audio>? The author makes it seem like this is an advantage, but frankly I can't see it. With HTML5, I get all sorts of methods for controlling media types based on the DOM node. I don't need volume controls on an image. Is it really that hard to decide which tag to use? Your computer can do three things:
* Display something that might move and makes no sound (image)
* Display something that moves and makes sound (video)
* Play sound (audio)
If--as the developer--you have no idea which of these three things your asset is going to do, you've got bigger problems than being burdened by figuring out which tag to use.
IMO, this spec fails to solve a problem that doesn't exist.
This is all already possible with current HTML, except for the namespace stuff (Which is too verbose, and was ditched after the failed XHTML effort, since it never really caught on anyway).
You can already create your own custom HTML tags with the `document.registerElement()` API. And then use all the semantic elements you want. You can even add custom rendering and logic to then via the shadow DOM.
You have to differentiate between the WHATWG and the W3C, which have different goals/purposes and different HTML specs.
As the link you referenced states, the WHATWG's non-versioned living standard attempts to stay "a little ahead of the implementations" with the goal of (hopefully) guiding implementors toward common goals.
The W3C periodically looks at already-implemented features and creates versioned snapshots (like HTML5, HTML5.1, etc.) with the goal of providing developers with a stable, known set of features for development.
Call it XHTML 2.0 or something like that. Calling your experiment HTML6 is a terrible idea.
Terrible because not only it disrupts completely on how HTML matured, but also because there won't be any more HTML versions from now on; HTML is now a living versionless standard.
Sorry, my intention is not to just bash your idea. I personally disliked it because it resembles xml, something that I learned to hate. But that's me.
On the issue tracker (https://github.com/OscarGodson/HTML6/issues/17#issuecomment-...), it's stated that this "HTML6" is meant for developing applications, not marking up documents. Which strikes me as odd, because he is pushing for semantics but is not targetting the one usage of HTML where it would make sense: Documents.
In apps, I care little about semantics. div-soup all the way, why not? Using non-standard attributes? Sure! As long as the browser behaves as an application platform and only my app has to understand the markup, then doing all this is fine [to me].
But for documents, it's a different thing. I want those to be as accessible as possible. This is the place to use semantic markup. I want to use <date> and similar things because I want search engines to understand my document. But "HTML6" is not meant for this?
So... I can see where the author wanted to go with this, but it just doesn't make sense to me.
But it breaks compatibility with what has been HTML since first version, by forcing to prefix existing HTML tags.
Rather, it should propose to enhance the new semantic tags by adding a prefix, for instance <e:calendar>...</e> (or </e:calendar> for readability) while preserving existing tags.
To achieve what the poster wants, wouldn't it be better to
<html>
<body>
<h1> Keep the stuff we already have </h1>
<#calender>
<.calender-header>And just make id and class syntax better?</.calender-header>
<.month>
<.day>1</.day>
</.month>
</.calender>
</body>
</html>
I don't see them removing the way html works, but I could see adding in a way to do classes easier.
Is there anything preventing you from using non-native elements right now? I mean the <html:html> weirdness aside... can't modern browsers just recognize current <weird><tags> and process them as such? Why not just have HTML keywords be hands off for your app and then do your own thing with the element syntax? That's what Angularians are doing.
Some of them already do. I use <p10> as a style tag on some websites and firefox/chrome deal with it fine. The advantage is that old versions of IE don't, so it's a simple browser detection for the user support team. ie. "Is the text in the top-right black or bright green?" "Ok, you need to update your browser..."
This is an old site. Copyright of the site is 2012. The github repo's first commit[1] predates the first commit of Web Components' draft of Custom Elements[2] by a few months.
So, I wouldn't say ignorant but that the Web is catching up to this "spec's" vision.
just feels backwards to me. the <html:* > stuff seems like it should all be under the default html namespace and assumed. where as the other stuff may be better suited to be namespaced.
just seems like a waste adding "html:" to all of the root/core elements.
A concept always invites picky comments, but one can be subtle about it. I agree on few tags, like <logo> , <calender> , <nav> .
but I feel there is still more that is needed. Specially with regards to <select> and <input> tags. Have you come across how tricky it can be to style both? Both of these require more simple styling and controls. Also, I would very much welcome some sort of basic encryption for data submitted by <input> tags, given that many don't need SSL certificate level of security, but being totally naked is not okay as well.
The one good idea here is merely the media tag, which could be useful for CMS for instance. But that's it. Namespaces are already too much in XML, don't bring them into HTML, please.
I'm almost disappointed to see a post like this with no comments - because while it's often quite negative - HN comments often provide me with context and a counterpoint that's really quite useful.
My first reaction is that I quite like it. It's more semantic than dozens of nested divs and spans, and perhaps that's not as useful for machine generated code - for those of us coding html by hand.
Is it really more semantic? Consider the first example, starting "<calendar><month name="January"><day>1</day>...".
It looks reasonable from the start, but then you get into real-world issues: why do you need to specify the days? What do you do if you want a 10 year calender? How do you treat February? What are the odds of everyone getting the calender correct, especially when doing it by hand? How do you specify the first day of the week? Some countries start the week on a Sunday and others on a Monday. Can the month name be localized, so that French readers see it as Janvier while the back-end still knows it's January?
People tried really hard to get semantic namespaces working with XML/XHTML, but it didn't really seem to pan out.
<html:media type...> seems like the wrong path to simplification, namely redundancy.
- The file extension carry the type information (but may be missing)
- The Content-Type MIME too
- The actual data stream also (think $ file some-media)
- And html6 adds an attribute
It seems like there's some conflicting messages in this. At first, the author suggests that getting rid of an attribute and using the tag name is better. But then they immediately suggest the opposite for <img>, <embed>, <video>, <audio> etc.
In an hypothetical future, with XHTML now effectively gone and HTML5 becoming an ever increasing jumbled mess, if I were to _really_ have the chance to reinvent HTML, I would reimplement it in terms of S-expressions. Easier to parse and better on the eyes.
It's a namespace that contains HTML elements. Pretty obvious choice for the name. Presumably there would be "svg:" for SVG.
It seems the author's fatal mistake was not assigning the "html:" URI to the root namespace since everyone here is so caught up on "HUR DUR HTML:HTML THAT'S SO DUMB LOL XML SUCKS".
I'm confused by the <calendar> example near the top: you can already define your own elements in HTML5 (and backport it to older browsers via html5shiv.js).
Care to elaborate? Pretty much every programming language has the concept of "packages", "prefixes", or "namespaces" to logically group components, functions, etc. together. It's only natural to have the same thing in a document format that can contain heterogeneous document types...
There's only one thing I want in my future web client, and that's to not have to use javascript. Dart, or compilation in general is not quite the savior i'm hoping for...
I want to be able to write C#, or Ruby, or python, and reference it on a page, and for it to run. Gosh that would be great. I wouldn't even mind if its a very limited version of the language.
Think what kind of nightmare would that be now that web browsers are on phones, tablets and microwave ovens.
This salvation throws away decades of work of thousands of people that made our web browsers and our standards. Not to mention throwing away these decades spenting getting it right.
But if you really want to go there, go ahead, there's Java applets, Flash, Silverlight, Google's NaCl and probably more.
Or, probably better, get out of the browser land and write a freaking app.
> I want to be able to write C#, or Ruby, or python, and reference it on a page, and for it to run.
Throwing back huge front-end stack fragmentation, insanely increased complexity of the browsers that you want to achieve with this approach? Statements like "I don't understand var scope in JS", "This prototype thing doesn't work", "JS is completely broken because [] == false" doesn't count, ok?
Funnily enough, at a first glance it looked like a real proposal, then I looked again and it appeared as a joke (I mean ... <html:html> and <form:form> are a bit satirical), and then I looked the repo and there's enough issues to think that it is actually real.