<Glazblog/>

Search

Your search for lack UI G(...) returned 114 results.

Thursday 21 February 2019

ParcoursSup et Informatique en France, consternationnage totalitudineux

Je viens de passer plusieurs heures avec mon fils à brouter du ParcoursSup. Après avoir passé des bons moments à chercher pour lui la formation idoine. J'avais pensé, j'avais cru ne pas avoir engendré deux babasseurs pour fils mais eh, j'ai été rattrapé par la réalité... Le premier écrivait son premier jeu pour Android à 15 ans et le second se passionne pour l'intelligence artificielle et le Machine Learning.

Si l'aîné a plongé dans une MathsSup comme sortie normale de Terminale S (alors qu'il aurait très bien pu présenter SciencesPo), le cadet est moins intéressé par le rythme somme toute totalement délirant des CPGE. Je ne peux pas lui donner tort... On a donc cherché autre chose.

Eh bien le résultat est relativement clair :

  • il y a pas mal de "formations informatiques" en France, qu'elles soient publiques ou privées. Mais ce "pas mal" reste très insuffisant. La France sort par an ce que Bengalore sort à elle seule ; or en Inde, y'a pas que Bengalore, hein...
  • les formations privées me semblent rarement à la hauteur des besoins industriels modernes ; c'est fait pour alimenter les SSII/ESN, pas franchement pour générer de l'innovation de haut niveau
  • les facs proposent des bonnes formations, mais au bout d'un temps certain seulement et avec évidemment une forte orientation Recherche... Il faut avant se coltiner des plombes de matières qu'on avalera pour le partiel, recrachera pendant le partiel et évidemment oubliera juste après le partiel. Toute ressemblance avec la théorie du signal apprise à TélécomParis par les fadas de babasse dans mon genre n'est pas fortuite.
  • l'Ensimag - je suis rentré moi-même en MathSup pour tenter de la décrocher après être tombé sur leur plaquette en Terminale mais j'ai un peu bifurqué ;-) - affiche haut et fort sur leur Home Page qu'ils sont "École d'application de Polytechnique" mais ils n'ont pas de formation intégrée décorrélée des CPGE (et de leur écrase-purée) digne de ce nom. Les babasseurs qui sortent de l'Ensimag ont du auparavant prouver à la face du monde qu'ils connaissent le Lemme de Zermelo, sont capables de causer de diastéréoisomérie moléculaire, et surtout surtout savent que le tire-bouchon du vrai scientifique pur et dur doit être nommé Maxwell. Ce dont 98% des étudiants de l'Ensimag se foutent probablement comme de leur première chaussette et n'utiliseront plus jamais de leur vie. L'Ensimag est une formation magnifique, mais réservée au Concours Commun Polytechnique. Connerie.
  • l'Epita, dont le nom déclenche chez moi un souvenir "ému" (between quotes) pour des raisons qu'il vaut mieux ne pas citer ici, me semble très clairement la seule et unique formation française post-Bac sérieuse en Informatique. Les appellations de InfoSup et InfoSpé données à leurs première et seconde années sont bien vues, et circonstanciées. Les errements des années de jeunesse de l'Epita sont clairement oubliés depuis des lustres, et il est clair qu'ils positionnent l'informatique non pas comme un seul outil des mathématiques ou de la physique, mais bien comme une discipline supérieure (et j'insiste lourdement sur cet adjectif) à part entière. Certes, un bagage minimal dans les sciences "dures" est au programme, c'est bien la moindre des choses ; mais on n'est pas dans le bourrage de crâne, ni dans l'inutile.

Quant à ParcoursSup, mon fils a du répondre à un auto-QCM pour les candidatures Fac/IUT. Il a choisi, ô surprise, Maths/Informatique. Les questions étaient consternantes de nullité, voire de bêtise crasse. Quand je dis auto-QCM, cela signifie donc que le gamin est seul devant son navigateur Web et que l'onglet 1 est ouvert sur le questionnaire ; il va sans dire que le slacker  (mais pas mon fils) aura l'onglet 2 ouvert sur Wikipedia ou tout autre ressource immédiatement utile. Non mais quel est le bachi-bouzouk qui a inventé ce machin ? Pour certaines questions, c'était même pire : une vidéo de quatre minutes (si, si) était à voir/écouter et les réponses à trois questions étaient DIRECTEMENT fournies dans la video... Tout cela fait, le moutard doit fournir n, avec n grand selon la formule consacrée, lettres de motivation voire CVs ! Mais bordel de Zeus, on parle d'un gamin de 17 ans qui sort des jupes de sa mère, n'a rien encore vécu professionnellement puisque justement il espère beaucoup de sa formation post-Bac. Et avec ça on va inonder tous les établissements de France et de Navarre avec près de 700 000 lettres de motivation fois 10 candidatures par moutard, soit près de 7 MILLIONS DE LETTRES DE MOTIVATION. Alors arrêtons d'être faux-culs, la vaste majorité d'entre elles n'est pas lue, le nombre d'hommes-années pour les lire toutes est hallucinant ; elles finissent donc poubellisées sans autre forme de procès et on devrait arrêter les frais pour la prochaine session ParcoursSup avant qu'on n'atteigne la fourniture d'une analyse de matière fécale pour compléter son dossier.

En conclusion, je dirais que la France a besoin d'une vingtaine d'Epita. Elle a également besoin, toujours besoin, d'un grand coup pied dans le cul en ce qui concerne l'Informatique mais là, malheureusement, rien de nouveau sous le soleil. Quant à ParcoursSup, c'est un pansement sur une jambe de bois. Le système éducatif supérieur français a fini d'être mis en place alors que moins de 70% d'une classe d'âge obtenait son Bac. Or en 2018, le Bac général a un taux de réussite de 91.1%, excusez du peu. Notre système est saturé, il n'en peut plus, il craque de toute part. Nous payons des décennies de sous-investissement dans ce qui est l'avenir du pays, son éducation. Il faut arrêter de prendre les gens pour des veaux : ParcourSup, c'est la sélection qu'on n'a pas le droit, pour l'instant, d'appliquer. Ouvrons les yeux, le nouveau prolétariat est prêt, il a le Bac - et rien que le Bac...

PS: il a fallu des décennies pour que l'INRIA quitte récemment les préfabriqués indigents de Rocquencourt. Je me rappellerai longtemps de ce chercheur américain, rencontré à Stanford, me racontant son effarement à son arrivée à Rocquencourt dans un préfab entre la caserne de pompiers et la voie rapide.. Voilà, tout est dit.

Wednesday 23 January 2019

WebExtensions v3 considered harmful

The Open Web Platform is a careful and fragile construction billions of people, including millions of implementors rely on. HTML, CSS, JavaScript, the Document Object Model, the Web API and more are all standardized one way or another; that means vendors and stakeholders gather around a table to discuss all changes and that these changes must pass quality and/or availability criteria to be considered "shippable".

One notable absent from the list of Web Standards is WebExtensions. WebExtensions are the generalized name of Google Chrome Extensions that became mainstream when Google achieved dominance over the desktop browser market and when Mozilla abandoned its own, and much more powerful, addons system based on XUL and privileged scripts.

As a reminder, the WebExtension API allows coders to implement extensions to the browser based on:

  • HTML/CSS/JS for each and every dialog created by the extension, including the ones "integrated" into the browser's UI
  • a dual model with "background scripts" with more privileges than "content scripts" that get added to visited web pages
  • a new API (the WebExtension API) that offers - and rather strictly controls - access to information that is not otherwise reachable from JavaScript
  • a permissions model that declare what part of the aforementioned API the extension uses and which remote URLs the embedded scripts can access
  • a URL model that puts everything in the extension under a chrome-extension:// URL
  • a review process (on the Google Chrome Extension store) supposed to block harmful codes and more

A while ago, at a time Microsoft still had its own rendering engine, it initiated a Community Group on WebExtensions at the World Wide Web Consortium (W3C). With members from most browser vendors plus a few others, this seemed to be a very positive move not only for implementors but also for users.

But unfortunately, that effort went nowhere. Lack of commitment from other browser vendors and in particular Google, Microsoft abandoning its own rendering engine, lax Community Group instead of a formal W3C Working Group, the WebExtension draft specification has been in limbos for a while now and WebExtensions clearly remain the poor parent of Web Standards even if most people have at least one browser extension installed (usually some sort of ad-blocker).

Today, Google is impulsing a deep change in its WebExtension model:

  • Background HTML pages will be deprecated in favor of ServiceWorkers. That change alone will imply a complete rearchitecture of existing extensions and will also impact their ability to create and deal with the dialogs their UX model requires.
  • The webRequest API that billions of users activate on a daily basis to block advertisement, trackers or undesirable content, is at stake and should be replaced by a declarartive new API that will not allow to monitor the requested resources any more. At a time the advertisement model on the Web is harmed by ad blockers, one can only wonder if this change is triggered only by technical considerations or if ad strategy is also behind it... Furthermore, it will be limited to a few dozens of thousands of declarations, which is far below the number of trackers and advertisement scripts available in the wild today.
  • Some heavily used API will be removed, without consideration for usage metrics or change cost to implementors
  • Even the description of the top level of an extension (aka the "browser action" and the "page action") will change and impact extension vendors
  • All of that is for the time being decided on the Google side alone, with little or no visible contact with the other WebExtension host (Mozilla) or the thousands of WebExtension (free or commercial) providers. There is even a "migration plans" document but it's not publicly available, the link being access-restricted

On the webRequest part specifically, all major actors of the ad-blocking and security landscape are screaming (see also the chromium-extensions Google group). Us at Privowny are also deeply concerned by the v3 proposed changes. Even Amnesty International complained in a recent message! To me, the most important message posted in reply to the proposed changes is the following one:

Hi, we are the developer of a child-protection add-on, which strives to make the Internet safer for minors. This change would cripple our efforts on Chrome.

Talk about "don't be evil"...

All of that gives a set of very bad signals to third-party implementors, including us at Privowny:

  1. WebExtensions are not a mature part of the Open Web Platform. It completely lacks stability, and software vendors willing to use it must be ready to life-threatening (for them) changes at any time
  2. WebExtensions are fully in the hands of Google, that can and will change it any time based on its own interests only. It is not a Web Standard.
  3. Google is ready to make WebExtensions diverge from cross-browser interoperability at any time, killing precisely what brought vendors like us at Privowny to WebExtensions.
  4. Google Chrome is not what it seems to be, a browser based on an Open Source project that protects users, promotes openness and can serve as a basis tool for webcitizen's protection.

Reading the above, and given the fact Google is able to impulse changes of such magnitudes with little or no impact study on vendors like us, we consider that WebExtensions are not a safe development platform any more. We will probably study soon an extraction of most of our code into a native desktop application, leaving only the minimum minimorum in the browser extension to communicate with web pages and of course with our native app.

After Mozilla that severely harmed its amazing addons ecosystem (remember it triggered the success of Firefox), after Apple that partly went away from JavaScript-based Safari extensions jeopardizing its addons ecosystem so much it's anemic (I could even say dying), Google is taking a move that is harmful to Chrome extensions vendors. What is striking here is that Google is making the very same mistake Mozilla did: no prior discussion with stakeholders (hear extension implementors), release of a draft spec that was obviously going to trigger strong reactions, unmeasured impact (complexity, time and finances) on implementors, more and more restrictions on what it is possible to do but a too limited set of new features.

On the legal side of things, this unilateral change could probably even qualify as "Abuse of dominant position" under European Union's article 102 TFUE, and could then cost Google a lot, really a lot...

The Open Web Platform is alive and vibrant. The Browser Extension ecosystem is in jail, subject to unpredictable harmful changes decided by one single actor. This must change, it's not viable any more.

Sunday 9 December 2018

Edge and Chromium, a different analysis

I am quite surprised by all the public reactions I read about Microsoft's last browser moving to Chromium. I think most if not all commenters have missed the real point, a real point that seems to me way bigger than Edge. Even Mozilla's CEO Chris Beard has not mentioned it. People at Microsoft must be smiling and letting go loud french « Ahlala...». Let me remind everyone that a browser is, from a corporate point of view,  a center of cost and not a center of revenue; if you're really nitpicking, you can call it a center of indirect revenue. So let's review and analyse the facts:

  • I am surprised by the codename supposedly attached to that future version of Microsoft's browser, Anaheim. That codename is not confirmed by Microsoft but I find it quite surprising for a web browser... First, Anaheim is in California and not in Washington State where most of the browser stuff is supposed to happen; yes, it's a detail but still, it's a surprising one. Secondly, Anaheim is really a weird codename in the history of browser codenames at Microsoft. So what happened in Anaheim, CA? A decisive meeting?
  • The blog article about Edge and Chromium was published by a Corporate Vice President of the Windows division. That's absolutely not normal for a browser-only decision.
  • Edge's and IE's market share are, sorry to my dear Microsoft friends, not enough to care that much about such a change. Yes, the browser ecosystem is like a real ecosystem and the lack of genetic diversity that implies EdgeHTML's retirement (see also immediately below) is a global concern. But from a business point of view, nothing to see here, sorry.
  • The blog article and the Github readme page (most people have not seen that one...) say Edge will switch to Chromium. They don't say that EdgeHTML will die. As a matter of fact, EdgeHTML itself is mentioned in the blog article's title and only there, and not at all in the GH page.
  • Microsoft's CEO is currently impulsing a change that sounds to me like a new Samsung's « Change everything but your wife and children ». The tech debt at Microsoft is immense and Nadella rang the rush bell.

So I think the whole thing is not about Edge. The microcosm reacted, and reacted precisely as expected (again, probable laughters in Redmond), but this is really about Windows and the core of activity of Microsoft. Impulsing a change like a move to Chromium and using it as a public announcement by a Windows CVP, is, beyond technical and business choices, a political signal. It says « expect the unexpected ».

I think Microsoft Windows as we know it is about to change and change drastically. Windows as we know it could even die and Microsoft move to another new, different operating system, Edge+Chromium's announcement being only the top of the iceberg. And it's well known that 9/10th of an iceberg remain below water surface.

The gravity center of the company is then about to change too; Nadella probably knows too well the impact of the Windows division on the rest of the company during the Vista years and he certainly knows too well the inter-division wars at Microsoft. It could be highly time to shake the whole thing. As I told Dean Hachamovitch long ago, « you need a commando and what you have now is a mexican army with a lot of generals and not enough soldiers ». Still valid?

Of course, I could be partially or even totally wrong. But I don't think so. This announcement is weird on too many counts, and it's most certainly on purpose. It seems to be telling us « guys, read between the lines, the big message is right there ».

Thursday 18 January 2018

Announcing WebBook Level 1, a new Web-based format for electronic books

TL;DR: the title says it all, and it's available there.

Eons ago, at a time BlueGriffon was only a Wysiwyg editor for the Web, my friend Mohamed Zergaoui asked why I was not turning BlueGriffon into an EPUB editor... I had been observing the electronic book market since the early days of Cytale and its Cybook but I was not involved into it on a daily basis. That seemed not only an excellent idea, but also a fairly workable one. EPUB is based on flavors of HTML so I would not have to reinvent the wheel.

I started diving into the EPUB specs the very same day, EPUB 2.0.1 (released in 2009) at that time. I immediately discovered a technology that was not far away from the Web but that was also clearly not the Web. In particular, I immediately saw that two crucial features were missing: it was impossible to aggregate a set of Web pages into a EPUB book through a trivial zip, and it was impossible to unzip a EPUB book and make it trivially readable inside a Web browser even with graceful degradation.

When the IDPF started working on EPUB 3.0 (with its 3.0.1 revision) and 3.1, I said this was coming too fast, and that the lack of Test Suites with interoperable implementations as we often have in W3C exit criteria was a critical issue. More importantly, the market was, in my opinion, not ready to absorb so quickly two major and one minor revisions of EPUB given the huge cost on both publishing chains and existing ebook bases. I also thought - and said - the EPUB 3.x specifications were suffering from clear technical issues, including the two missing features quoted above.

Today, times have changed and the Standards Committee that oversaw the future of EPUB, the IDPF, has now merged with the World Wide Web Consortium (W3C). As Jeff Jaffe, CEO of the W3C, said at that time,

Working together, Publishing@W3C will bring exciting new capabilities and features to the future of publishing, authoring and reading using Web technologies

Since the beginning of 2017, and with a steep acceleration during spring 2017, the Publishing@W3C activity has restarted work on the EPUB 3.x line and the future EPUB 4 line, creating a EPUB 3 Community Group (CG) for the former and a Publishing Working Group (WG) for the latter. If I had some reservations about the work division between these two entities, the whole thing seemed to be a very good idea. In fact, I started advocating for the merger between IDPF and W3C back in 2012, at a moment only a handful of people were willing to listen. It seemed to me that Publishing was a underrated first-class user of Web technologies and EPUB's growth was suffering from two critical ailments:

  1. IDPF members were not at W3C so they could not confront their technical choices to browser vendors and the Web industry. It also meant they were inventing new solutions in a silo without bringing them to W3C standardization tables and too often without even knowing if the rendering engine vendors would implement them.
  2. on another hand, W3C members had too little knowledge of the Publishing activity, that was historically quite skeptical about the Web... Working Groups at W3C were lacking ebook expertise and were therefore designing things without having ebooks in mind.

I was then particularly happy when the merger I advocated for was announced.

As I recently wrote on Medium, I am not any more. I am not convinced by the current approach implemented by Publishing@W3C on many counts:

  • the organization of the Publishing@W3C activity, with a Publishing Business Group (BG) formally ruling (see Process section, second paragraph) the EPUB3 CG and a Steering Committee (see Process section, first paragraph) recreated the former IDPF structure inside W3C.  The BG Charter even says that it « advises W3C on the direction of current and future publishing activity work » as if the IDPF and W3C did not merge and as if W3C was still only a Liaison. It also says « the initial members of the Steering Committee shall be the individuals who served on IDPF’s Board of Directors immediately prior to the effective date of the Combination of IDPF with W3C », maintaining the silo we wanted to eliminate.
  • the EPUB3 Community Group faces a major technical challenge, recently highlighted by representatives of the Japanese Publishing Industry: EPUB 3.1 represents too much of a technical change compared to EPUB 3.0.1 and is not implementable at a reasonable cost in a reasonable timeframe for them. Since EPUB 3 is recommended by the Japanese Government as the official ebook format in Japan, that's a bit of a blocker for EPUB 3.1 and its successors. The EPUB3 CG is then actively discussing a potential rescindment of EPUB 3.1, an extraction of the good bits we want to preserve, and the release of a EPUB 3.0.2 specification based on 3.0.1 plus those good bits. In short, the EPUB 3.1 line, that saw important clarifying changes from 3.0.1, is dead.
  • the Publishing Working Group is working on a collection of specifications known as Web Publications (WP), Packaged Web Publications (PWP), and EPUB 4. What these specifications represent is extremely complicated to describe. With a daily observation of the activities of the Working Group, I still can't firmly say what they're up to, even if I am already convinced that some technological choices (for instance JSON-LD for manifests) are highly questionable and do not « lead Publishing to its full Web potential », to paraphrase the famous W3C motto. It must also be said that the EPUB 3.1 hiatus in the EPUB3 CG shakes the EPUB 4 plan to the ground, since it's now extremely clear the ebook market is not ready at all to move to yet another EPUB version, potentially incompatible with EPUB 3.x (for the record, backwards-compatibility in the EPUB world is a myth).
  • the original sins of EPUB quoted above, including the two missing major features quoted in the second paragraph of the present article, are a minor requirement only. Editability of EPUB, one of the greatest flaws of that ecosystem, is still not a first-class requirement if not a requirement at all. Convergence with the Web is severely encumbered by personal agendas and technical choices made by one implementation vendor for its own sake; the whole W3C process based on consensus is worked around not because there is no consensus (the WG minutes show consensus all the time) but mostly beacause the rendering engine vendors are still not in the loop and their potential crucial contributions are sadly missed. And they are not in the loop because they don't understand a strategy that seems decorrelated from the Web; the financial impact of any commitment to the Publishing@W3C is then a understandable no-go.
  • the original design choices of EPUB, using painful-to-edit-or-render XML dialects, were also an original sin. We're about to make the same mistake, again and again, either retaining things that partly block the software ecosystem or imagining new silos that won't be editable nor grokable by a Web Browser. Simplicity, Web-centricity and mainstream implementations are not in sight.

Since the whole organization of Publishing @W3C is governed by the merger agreement between IDPF and W3C, I do not expect to change anyone's mind with the present article. I only felt the need to express my opinion, in both public and private fora. Unsurprisingly, the feedback to my private warnings was fairly negative. In short, it works as expected and I should stop spitting in the soup. Well, if that works as expected, the expectations were pretty low, sorry to say, and were not worth a merger between two Standard Bodies.

I have then decided to work on a different format for electronic books, called WebBook. A format strictly based on Web technologies and when I say "Web technologies", I mean the most basic ones: html, CSS, JavaScript, SVG and friends; the class of specifications all Web authors use and master on a daily basis. Not all details are decided or even ironed, the proposal is still a work in progress at this point, but I know where I want to go to.

I will of course happily accept all feedback. If people like my idea, great! If people disagree with it, too bad for me but fine! At least during the early moments of my proposal, and because my guts tell me my goals are A Good Thing™️, I'm running this as a Benevolent Dictator, not as a consensus-based effort. Convince me and your suggestions will make it in.

I have started from a list of requirements, something that was never done that way in the EPUB world:

  1. one URL is enough to retrieve a remote WebBook instance, there is no need to download every resource composing that instance

  2. the contents of a WebBook instance can be placed inside a Web site’s directory and are directly readable by a Web browser using the URL for that directory

  3. the contents of a WebBook instance can be placed inside a local directory and are directly readable by a Web browser opening its index.html or index.xhtml topmost file

  4. each individual resource in a WebBook instance, on a Web site or on a local disk, is directly readable by a Web browser

  5. any html document can be used as content document inside a WebBook instance, without restriction

  6. any stylesheet, replaced resource (images, audio, video, etc.) or additional resource useable by a html document (JavaScript, manifests, etc.) can be used inside the navigation document or the content documents of a WebBook instance, without restriction

  7. the navigation document and the content documents inside a WebBook instance can be created and edited by any html editor

  8. the metadata, table of contents contained in the navigation document of a WebBook instance can be created and edited by any html editor

  9. the WebBook specification is backwards-compatible

  10. the WebBook specification is forwards-compatible, at the potential cost of graceful degradation of some content

  11. WebBook instances can be recognized without having to detect their MIME type

  12. it’s possible to deliver electronic books in a form that is compatible with both WebBook and EPUB 3.0.1

I also made a strong design choice: the Level 1 of the specification will not be a fit-all-cases document. WebBook will start small, simple and extensible, and each use case will be evaluated individually, sequentially and will result in light extensions at a speed the Publishing industry can bear with. So don't tell me WebBook Level 1 doesn't support a given type of ebook or is not at parity level with EPUB 3.x. It's on purpose.

With that said, the WebBook Level 1 is available here and, again, I am happily accepting Issues and PR on github. You'll find in the spec references to:

  • « Moby Dick » released as a WebBook instance
  • « Moby Dick » released as a EPUB3-compatible WebBook instance
  • a script usable with Node.js to automagically convert a EPUB3 package into a EPUB3-compatible WebBook

My EPUB Editor BlueGriffon is already modified to deal with WebBook. The next public version will allow users to create EPUB3-compatible WebBooks.

I hope this proposal will show stakeholders of the Publishing@W3C activity another path to greater convergence with the Web is possible. Should this proposal be considered by them, I will of course happily contribute to the debate, and hopefully the solution.

Monday 15 May 2017

W3C Advisory Board elections

The W3C Advisory Board (AB) election 2017 just started, and I am not running this time. I have said multiple times the way people are elected is far too conservative, giving a high premium to "big names" or representatives of "big companies" on one hand, tending to preserve a status-quo in terms of AB membership on the other. Newcomers and/or representative of smaller companies have almost zero chance to be elected. Even with the recent voting system changes, the problem remains.

Let me repeat here my proposal for both AB and TAG: two consecutive mandates only; after two consecutive mandates, elected members cannot run again for re-election at least during at least one year.

But let's focus on current candidates. Or to be more precise, on their electoral program:

  1. Mike Champion (Microsoft), who has been on the AB for years, has a clear program that takes 2/3rds of his AB nominee statement.
    1. increase speed on standards
    2. bridge the gap existing between "fast" implementors and "slow" standards
    3. better position W3C internally
    4. better position W3C externally
    5. help the Web community
  2. Rick Johnson (VitalSource Technologies | Ingram Content Group) does not have a detailed program. He wants to help the Publishing side of W3C.
  3. Charles McCathie Nevile (Yandex) wants
    1. more pragmatism
    2. to take "into account the broad diversity of its membership both in areas of interest and in size and power" but he has "been on the AB longer than any current participant, including the staff", which does not promote diversity at all
  4. Natasha Rooney (GSMA) has a short statement with no program at all.
  5. Chris Wilson (Google Inc.), who has also been elected to the AB twice already, wants :
    1. to engage better developers and vendors
    2. to focus better W3C resources, with more agility and efficiency
    3. to streamline process and policies to let us increase speed and quality
  6. Zhang Yan (China Mobile Communications Corporation) does not really have a clear program besides "focus on WEB technology for 5G, AI and the Internet of things and so on"
  7. Judy Zhu (Alibaba (China) Co., Ltd.) wants:
    1. to make W3C more globalized (good luck on that one...)
    2. to make W3C Process more usable/effective/efficient
    3. increase W3C/industries collaboration (but isn't it a industrial consortium already?)
    4. increase agility
    5. focus more on security and privacy

If I except the mentions of agility and Process, let me express a gut feeling: this is terribly depressing. Candidacy statements from ten years ago look exactly the same. They quote the same goals. They're even phrased the same way... But in the meantime, we have major topics on the meta-radar (non-exhaustive list):

  • the way the W3C Process is discussed, shaped and amended is so incredibly long it's ridiculous. Every single major topic Members raised in the last ten years took at least 2 years (if not six years) to solve, leaving Groups in a shameful mess. The Process is NOT a Technical Report that requires time, stability and implementations. It's our Law, that impacts our daily life as Members. When an issue is raised, it's because it's a problem right now and people raising the issue expect to see the issue solved in less than "years", far less than years.
  • no mention at all of finances! The finances of the W3C are almost a taboo, that only a few well-known zealots like yours truly discuss, but they feed all W3C activities. After years of instability, and even danger, can the W3C afford keeping its current width without cutting some activities and limiting its scope? Can the W3C avoid new revenue streams? Which ones?
  • similarly, no mention of transparency! I am not speaking of openness of our technical processes here, I am very clearly and specifically speaking of the transparency of the management of the Consortium itself. The way W3C is managed is far too vertical and it starts being a real problem, and a real burden. We need changes there. Now.
  • the role of the Director, another taboo inside W3C, must be discussed. It is time to acknowledge the fact the Director is not at the W3C any more. It's time to stop signing all emails "in the name of the Director', handle all transition conference calls "in the name of the Director" but almost never "with the Director". I'm not even sure we need another Director. It's time to acknowledge the fact Tim should become Honorary Director - with or without veto right - and distribute his duties to others.
  • we need a feedback loop and very serious evaluation of the recent reorganization of the W3C. My opinion is as follows: nobody knows who to contact and it's a mess of epic magnitude. The Functional leaders centralize input and then re-dispatch it to others, de facto resurrecting Activities and adding delays to everything. The reorg is IMHO a failure, and a rather expensive one in terms of effectiveness.
  • W3C is still not a legal entity, and it does not start being a burden... it's been a burden for eons. The whole architecture of W3C, with regional feet and a too powerful MIT, is a scandalous reminiscence of the past.
  • our election system for AB and TAG is too conservative. People stay there for ages, while all our technical world seems to be reshaped every twelve months. My conclusion is simple, and more or less matches what Mike Champion said : the Consortium is not tailored any more to match its technical requirements. Where we diverge: I understand Mike prefers evolution to revolution, I think evolution is not enough any more and revolution is not avoidable any more. We probably need to rethink the W3C from the ground up.
  • Incubation has been added to W3C Process in a way that is perceived by some as a true scandal. I am not opposed at all to Incubation, but W3C has shown a lack of caution, wisdom, consensus and obedience to its own Process that is flabbergasting. W3M acts fast when it need to remind a Member about the Process, but W3M itself seems to work around the Process all the time. The way Charters under review are modified during the Charter Review itself is the blatant example of that situation.

Given how far the candidacy statements are from what I think are the real and urgent issues of the W3C, I'm not even sure I am willing to vote... I will eventually cast a ballot, sure, but I stand by my opinion above: this is depressing.

I am now 50 years old, I have been contributing to W3C for, er, almost 22 years and that's why I will not run any more. We need younger people, we need different perspectives, we need different ways of doing, we need different futures. We need a Consortium of 2017, we still have a Consortium of 2000, we still have the people of 2000. If I was 20 today, born with the Web as a daily fact, how would I react looking at W3C? I think I would say « oh that old-school organization... » and that alone explains this whole article.

Conclusion for all W3C AB candidates: if you want my vote, you'll have to explain better, much better, where you stand in front of these issues. What do you propose, how do you suggest to implement it, what's your vision for W3C 2020. Thanks.

Tuesday 18 October 2016

La Cyberdéfense française

Cash Investigation vient d'interviewer le Vice-Amiral Coustillière. Je passe sur le fait qu'il parle de « blackdoor » pour revenir sur ses propos expliquant son choix. Ce type est totalement à côté de la plaque et a démontré en vingt secondes son incompétence totale en la matière. Il a raconté n'importe quoi et ne mesure absolument pas la portée de ses propos, de ses choix, de ses faiblesses mais surtout des faiblesses qu'il vient d'introduire dans la Défense Nationale française. Monsieur Le Drian, vous êtes là ?

Monday 8 February 2016

Inventory and Strategy

“There’s class warfare, all right, but it’s my class, the native class, that’s making war, and we’re winning.” -- Android and iOS, blatantly stolen from Warren Buffet

Firefox OS tried to bring Web apps to the mobile world and it failed. It has been brain dead - for phones - for three days and the tubes preserving its life will be turned off in May 2016. I don't believe at all myself in the IoT space being a savior for Mozilla. There are better and older competitors in that space, companies or projects that bring smaller, faster, cleaner software architectures to IoT where footprint and performance are an even more important issue than in the mobile space. Yes, this is a very fragmented market; no, I'm not sure FirefoxOS can address it and reach the critical mass. In short, I don't believe in it at all.

Maybe it's time to discuss a little bit a curse word here: strategy. What would be a strategy for the near- and long-term future for Mozilla? Of course, what's below remains entirely my own view and I'm sure some readers will find it pure delirium. I don't really mind.

To do that, let's look a little bit at what Mozilla has in hands, and let's confront that and the conclusion drawn from the previous lines: native apps have won, at least for the time being.

  • Brains! So many hyper-talented brains at Mozilla!
  • Both desktop and mobile knowledge
  • An excellent, but officially unmaintained, runtime
  • Extremely high expertise on Web Standards and implementation of Web Standards
  • Extremely high expertise on JS
  • asm.js
  • Gaia, that implements a partial GUI stack from html but limited to mobile

We also need to take a look at Mozilla's past. This is not an easy nor pleasant inventory to make but I think it must be done here and to do it, we need to go back as far in time as the Netscape era.

Technology Year(s) Result
Anya 2003 AOL (Netscape's parent company) did not want of Anya, a remote browser moving most of the CPU constraints to the server, and it died despite of being open-sourced by its author. At the same time, Opera successfully launched Opera Mini and eventually acquired its SkyFire competitor. Opera Mini has been a very successful product on legacy phones and even smartphones in areas with poor mobile connectivity.
XUL 2003- Netscape - and later Mozilla - did not see any interest in bringing XUL to Standards committees. When competitors eventually moved to XML-based languages for UI, they adopted solutions (XAML, Flex, ...) that were not interoperable with it.
Operating System 2003- A linux+Gecko Operating System is not a new idea. It was already discussed back in 2003 - yes, 2003 - at Netscape and was too often met with laughter. It was mentioned again multiple times between 2003 and 2011, without any apparent success.
Embedding 2004- Embedding has always been a poor parent in Gecko's family. Officially dropped loooong ago, it drove embedders to WebKit and then Blink. At the time embedding should have been improved, the focus was solely on Firefox for desktop. If I completely understand the rationale behind a focus on Firefox for desktop at that time, the consequences of abandoning Embedding have been seriously underestimated.
Editing 2005- Back in 2004/2005, it was clear Gecko had the best in-browser core editor on the market. Former Netscape editor peers working on Dreamweaver compared mozilla/editor and what Macromedia/Adobe had in hands. The comparison was vastly in favor of Mozilla. It was also easy to predict the aging Dreamweaver would soon need a replacement for its editor core. But editing was considered as non-essential at that time, more a burden than an asset, and no workforce was permanently assigned to it.
Developer tools 2005 In 2005, Mozilla was so completely mistaken on Developer Tools, a powerful attractor for early adopters and Web Agencies, that it wanted to get rid of the error console. At the same moment, the community was calling for more developer tools.
Runtime 2003- XULRunner has been quite successful for such a complex technology. Some rather big companies believed enough in it to implement apps that, even if you don't know their name, are still everywhere. As an example, here's at least one very large automotive group in Europe, a world-wide known brand, that uses XULRunner in all its test environments for car engines. That means all garages dealing with that brand use a XULRunner-fueled box...
But unfortunately, XULrunner was never considered as essential, up to the point its name is still a codename. For some time, the focus was instead given to GRE, a shared runtime that was doomed to fail from the very first minute.
Update: XULRunner just died...
Asian market 2005 While the Asian market was exploding, Gecko was missing a major feature: vertical writing. It prevented Asian embedders from considering Gecko as the potential rendering engine to embed in Ebook reading systems. It also closed access to the Asian market for many other usages. But vertical writing did not become an issue to fix for Mozilla until 2015.
Thunderbird 2007 Despite of growing adoption of Thunderbird in governmental organizations and some large companies, Mozilla decided to spin off Thunderbird into a Mail Corporation because it was unable to get a revenue stream from it. MailCo was eventually merged back with Mozilla and Thunderbird is again in 2015/2016 in limbos at Mozilla.
Client Customization Kit 2003- Let's be clear, the CCK has never been seen as a useful or interesting project. Maintained only by the incredible will and talent of a single external contributor, many corporations rely on it to release Firefox to their users. Mozilla had no interest in corporate users. Don't we spend only 60% of our daily time at work?
E4X 2005-2012 Everyone had high expectations about E4X and and many were ready to switch to E4X to replace painful DOM manipulations. Unfortunately, it never allowed to manipulate DOM elements (BMO bug 270553), making it totally useless. E4X support was deprecated in 2012 and removed after Firefox 17.
Prism (WebRunner) 2007-2009 Prism was a webrunner, i.e. a desktop platform to run standalone self-contained web-based apps. Call them widgets if you wish. Prism was abandoned in 2009 and replaced by Mozilla Chromeless that is itself inactive too.
Marketplace 2009 Several people called for an improved marketplace where authors could sell add-ons and standalone apps. That required a licensing mechanism and the possibility to blackbox scripting. It was never implemented that way.
Browser Ballot 2010 The BrowserChoice.eu thing was a useless battle. If it brought some users to Firefox on the Desktop, the real issue was clearly the lack of browser choice on iOS, world-wide. That issue still stands as of today.
Panorama (aka Tab Groups) 2010 When Panorama reached light, some in the mozillian community (including yours truly) said it was bloated, not extensible, not localizable, based on painful code, hard to maintain on the long run and heterogeneous with the rest of Firefox, and it was trying to change the center of gravity of the browser. Mozilla's answer came rather sharply and Panorama was retained. In late 2015, it was announced that Panorama will be retired because it's painful to maintain, is heterogeneous with the rest of Firefox and nobody uses it...
Jetpack 2010 Jetpack was a good step on the path towards HTML-based UI but a jQuery-like framework was not seen by the community as what authors needed and it missed a lot of critical things. It never really gained traction despite of being the "official" add-on way. In 2015, Mozilla announced it will implement the WebExtensions global object promoted by Google Chrome and WebExtensions is just a more modern and better integrated JetPack on steroids. It also means being Google's assistant to reach the two implementations' standardization constraint again...
Firefox OS 2011 The idea of a linux+Gecko Operating System finally touched ground. 4 years later, the project is dead for mobile.
Versioning System 2011 When Mozilla moved to faster releases for Firefox, large corporations having slower deployment processes reacted quite vocally. Mozilla replied it did not care about dinosaurs of the past. More complaints led to ESR releases.
Add-ons 2015 XUL-based add-ons have been one of the largest attractors to Firefox. AdBlock+ alone deserves kudos, but more globally, the power of XUL-based add-ons that could interact with the whole Gecko platform and all of Firefox's UI has been a huge market opener. In 2015/2016, Mozilla plans to ditch XUL-based add-ons without having a real replacement for them, feature-per-feature.
Evangelism 2015 While Google and Microsoft have built first-class tech-evangelism teams, Mozilla made all its team flee in less than 18 months. I don't know (I really don't) the reason behind that intense bleeding but I read it as a very strong warning signal.
Servo 2016 Servo is the new cool kid on the block. With parallel layout and a brand new architecture, it should allow new frontiers in the mobile world, finally unleashing the power of multicores. But instead of officially increasing the focus on Servo and decreasing the focus on Gecko, Gecko is going to benefit from Servo's rust-based components to extend its life. This is the old sustaining/disruptive paradigm from Clayton Christensen.

(I hope I did not make too many mistakes in the table above. At least, that's my personal recollection of the events. If you think I made a mistake, please let me know and I'll update the article.)

Let's be clear then: Mozilla really succeeded only three times. First, with Firefox on the desktop. Second, enabling the Add-ons ecosystem for Firefox. Third, with its deals with large search engine providers. Most of the other projects and products were eventually ditched for lack of interest, misunderstanding, time-to-market and many other reasons. Mozilla is desperately looking for a fourth major opportunity, and that opportunity can only extend the success of the first one or be entirely different.

The market constraints I see are the following:

  • Native apps have won
  • Mozilla's reputation as an embedded solution's provider among manufacturers will probably suffer a bit from Firefox OS for phones' death. BTW, it probably suffers a bit among some employees too...

Given the assets and the skills, I see then only two strategic axes for Moz:

  1. Apple must accept third-party rendering engines even if it's necessary to sue Apple.
  2. If native apps have won, Web technologies remain the most widely adopted technologies by developers of all kinds and guess what, that's exactly Mozilla's core knowledge! Let's make native apps from Web technos then.

I won't discuss item 1. I'm not a US lawyer and I'm not even a lawyer. But for item 2, here's my idea:

  1. If asm.js "provides a model closer to C/C++" (quote from asmjs.org's FAQ), it's still not possible to compile asm.js-based JavaScript into native. I suggest to define a subset of ES2015/2016 that can be compiled to native, for instance through c++, C#, obj-C and Java. I suggest to build the corresponding multi-target compiler. Before telling me it's impossible, please look at Haxe.
  2. I suggest to extend the html "dialect" Gaia implements to cross-platform native UI and submit it immediately to Standard bodies. Think Qt's ubiquity. The idea is not to show native-like (or even native) UI inside a browser window... The idea is to directly generate browser-less native UI from a html-based UI language, CSS and JS that can deal with all platform's UI elements. System menus, dock, icons, windows, popups, notifications, drawers, trees, buttons, whatever. Even if compiled, the UI should be DOM-modifyable just like XUL is today.
  3. WebComponents are ugly, and Google-centric. So many people think that and so few dare saying it... Implementing them in Gecko acknowledges the power of Gmail and other Google tools but WebComponents remain ugly and make Mozilla a follower. I understand why Firefox needs it. But for my purpose, a simpler and certainly cleaner way to componentize and compile (see item 1) the behaviours of these components to native would be better.
  4. Build a cross-platform cross-device html+CSS+JS-based compiler to native apps from the above. Should be dead simple to install and use. A newbie should be able to get a native "Hello World!" native app in minutes from a trivial html document. When a browser's included in the UI, make Gecko (or Servo) the default choice.
  5. Have a build farm where such html+CSS+JS are built for all platforms. Sell that service. Mozilla already knows pretty well how to do build farms.

That plan addresses:

  • Runtime requests
  • Embedding would become almost trivial, and far easier than Chromium Embedded Framework anyway... That will be a huge market opener.
  • XUL-less future for Firefox on Desktop and possibly even Thunderbird
  • XUL-less future for add-ons
  • unique source for web-based app and native app, whatever the platform and the device
  • far greater performance on mobile
  • A more powerful basis for Gaia's future
  • JavaScript is currently always readable through a few tools, from the Console to the JS debugger and app authors don't want that.
  • a very powerful basis for Gaming, from html and script
  • More market share for Gecko and/or Servo
  • New revenue stream.

There are no real competitors here. All other players in that field use a runtime that does not completely compile script to native, or are not based on Web Standards, or they're not really ubiquitous.

I wish the next-generation native source editor, the next-gen native Skype app, the next-gen native text processor, the next-gen native online and offline twitter client, the next native Faecbook app, the next native video or 3D scene editor, etc. could be written in html+CSS+ECMAScript and compiled to native and if they embed a browser, let be it a Mozilla browser if that's allowed by the platform.

As I wrote at the top of this post, you may find the above unfeasible, dead stupid, crazy, arrogant, expensive, whatever. Fine by me. Yes, as a strategy document, that's rather light w/o figures, market studies, cost studies, and so on. Absolutely, totally agreed. Only allow me to think out loud, and please do the same. I do because I care.

Updates:

  • E4X added
  • update on Jetpack, based on feedback from Laurent Jouanneau
  • update on Versioning and ESR, based on feedback from Fabrice Desré (see comments below)
  • XULrunner has died...

Clarification: I'm not proposing to do semi-"compilation" of html à la Apache Cordova. I suggest to turn a well chosen subset of ES2015 into really native app and that's entirely different.

Friday 29 January 2016

Google, BlueGriffon.org and blacklists

Several painful things happened to bluegriffon.org yesterday... In chronological order:

  1. during my morning, two users reported that their browser did not let them reach the downloads section of bluegriffon.org without a security warning. I could not see it myself from here, whatever the browser or the platform.
  2. during the evening, I could see the warning using Chrome on OS X
  3. apparently, and if I believe the "Search Console", Google thought two files in my web repository of releases are infected. I launched a complete verification of the whole web site and ran all the software releases through three anti-virus systems (Sophos, Avast and AVG) and an anti-adware system. Nothing at all to report. No infection, no malware, no adware, nothing.
  4. since this was my only option, I deleted the two reported files from my server. Just for the record, the timestamps were unchanged, and I even verified the files were precisely the ones I uploaded in january and april 2012. Yes, 2012... Yesterday, without being touched/modified in any manner during the last four years, they were erroneously reported infected.
  5. this morning, Firefox also reports a security warning on most large sections of BlueGriffon.org and its Downloads section. I guess Firefox is also using the Google blacklist. Just for the record, both Spamhaus and CBL have nothing to say about bluegriffon.org...
  6. the Google Search Console now reports my site is ok but Firefox still reports it unsecure, ahem.

I need to draw a few conclusions here:

  • Google does not tell you how the reported files are unsecure, which is really lame. The online tool they provide to "analyze" a web site did not help at all.
  • Since all my antivir/antiadware declared all files in my repo clean, I had absolutely no option but to delete the files that are now missing from my repo
  • two reported files in bluegriffon.org/freshmeat/1.4/ and bluegriffon.org/freshmeat/1.5.1/ led to blacklisting of all of bluegriffon.org/freshmeat and that's hundreds of files... Hey guys, we are and you are programmers, right? Sure you can do better than that?
  • during more than one day, customers fled from bluegriffon.org because of these security warnings, security warnings I consider as fake reports. Since no public antimalware app could find anything to say about my files, I am suspecting a fake report of human origin. How such a report can reach the blacklist when files are reported safe by four up-to-date antimalware apps and w/o infection information reported to the webmaster is far beyond my understanding.
  • blacklists are a tool that can be harmful to businesses if they're not well managed.

Update: oh I and forgot one thing: during the evening, Earthlink.net blacklisted one of the Mail Transport Agents of Dreamhost. Not, my email address, that whole SMTP gateway at Dreamhost... So all my emails to one of my customers bounced and I can't even let her know some crucial information. I suppose thousands at Dreamhost are impacted. I reported the issue to both Earthlink and DH, of course.

Tuesday 29 December 2015

Star Wars episode VII

I was ten years old when the first Star Wars movie was released and I still remember my mood when I left the famous Grand Rex movie theater in Paris that 22nd of October 1977. I was thinking to myself « this is going to change forever SciFi movies »... But I was not young, naive or blind enough to miss the fact Star Wars was only the regular princess/prince/felon tale with a stars' and space fighters' background.

  • the first hero is the lost son of the villain
  • the princess is the lost daughter of the villain
  • the princess is the sister of the first hero
  • the villain's army is trying to rule the world and the villain has magical powers
  • the first hero recovers the sword of his father
  • the second hero is a ruffian but he will eventually save the world and marry the princess
  • the villain abducts the princess and keeps her in custody in his space castle
  • the two heroes attack the space castle to deliver the princess
  • the first hero will eventually destroy the space castle, source of power of the villain threatening the world
  • and so on.

It's nothing but a space Grimms' tale.

Spoiler alert: don't read further if you haven't seen Star Wars episode VII and plan to see it in the near future...

I saw Episode VII yesterday with the kids and enjoyed it a lot while I was in the room. But when I left, I started thinking about it:

  • the new princess is clearly from the family of the former villain and the lost first hero
  • the new princess recovers the family's sword
  • the new second hero is a renegade from the new villain's army
  • the new third hero will eventually attack and destroy the new space castle
  • the new villain is the son of the princess and original second hero
  • the new villain's army is trying to rule the world and the new villain has magical powers
  • the new villain abducts the new princess and keeps her in custody in his space castle
  • the new second hero and the original second hero attack the space castle to deliver the princess
  • the space castle, source of power of the villain threatening the world, is eventually destroyed

Ah that sense of déjà-vu. Where are the originality, the darkness, the characters' complexity seen in the Revenge of the Sith, gone?

All in all, The Force Awakens leaves me very mixed feelings. A good show, a bad Star Wars. Even Harrison Ford totally lost his mojo and did not play well at all. And the final scene made me think J.J. Abrams lost it too, the theatrical intensity of the scene being abysmal (should have ended on Luke taking the saber, closer view on his hand pressing the button, glowing light of the saber turning on screen-wide and sudden black with The Force's music). Ten years after the Revenge of the Sith, I was expecting something that would renew the SciFi/space heroic fantasy genre. It's very far from it.

Thursday 13 November 2014

Tech journalists

Long ago, there was Cnet's Paul Festa. When Festa went (finally) away, I thought we could take tech journalism practices back to normal. Seems I was wrong. Here's a summary of things that happened to me in the last months:

The unpolite

  • (someone to me) Hello Daniel, I am forwarding below an interview request from a journalist who says he misses your email to ping you
  • (me to that someone) thanks, will reply.
  • (me to journalist) got your request, expect answer to all questions soon
  • (me to journalist) here are the replies. Best regards.
  • ...
  • ...

No ACK, no thanks, no reply, no notification the article will be published, no notification the article was published. In short, the journalist never said me a single word directly. That person is now blacklisted. Can still leave that black list if there are some sort of apologies.

The impatient

  • (journalist to me at 7pm PST) hello M. Glazman, I'm writing an article about blah, I know you're based in Europe but could I call you on the phone in the next half hour?
  • ...

7pm PST is 4am here. I was of course in front of my computer at 4am waiting for a journalist's email and ready to take a call from the US at 4:30am. Of course.

The painful

  • (journalist to me) so what's your activity/title at W3C?
  • (me to journalist) I am co-chairing the CSS Working Group

Article is published, of course w/o notification. I am listed there as "W3C Chairman". Obviously.

The bastard

  • (me to journalist) hello, you interviewed me a few weeks ago and now that the article is published (you did not notify me, did you?), I discover at least one paragraph with quotes from me completely opposite to what I precisely said. What I precisely said is « blah », and you can see it's totally different from the contents of the article so could you please fix this in your article?
  • (journalist to me) this is not my recollection of the interview
  • (me to journalist) well, you recorded the interview so you can check ; please check.
  • (journalist to me) sorry but I don't have time for that
  • (me to journalist) again, the words put in my mouth by your article are absolutely not the ones I said, will you fix them yes or no?
  • ...

No answer, article unfixed. Journalist permanently blacklisted.

The ghost

  • (very polite journalist to me) hello Daniel, first let me introduce myself blah blah if you have some time to answer some questions, I'd be happy to blah blah and best regards looking forward to blah blah
  • (me to journalist) sure, no problem ! send me your questions and I'll reply immediately !
  • (me to journalist) hello, did you send your questions?
  • (me to journalist) hello, I still haven't received your questions...
  • ...

Strange, to say the least.

The rough

  • (journalist to me, precise words, only translated from french) hello, I am a journalist at blah, here are 5 questions. Please answer.
  • ...

In one word only: no. I was polite enough to reply "No, thanks".

The out-of-scope

  • (journalist to me) hello, would you answer a few questions about the future of PHP?

Do I really need to explain?

Wednesday 28 May 2014

from iPhone 4S to Samsung S5

I switched from an iPhone 4S (and an iPhone 2G before that) to a Samsung S5 a month and a half ago and it's probably time to summarize what that change meant to me from both hardware and software points of view.

Hardware

I loved my iPhone 4S's hardware for the following reasons:

  • metal and glass, feels and is robust
  • side button to mute it or block rotation
  • excellent control of iTunes through the headphones' chord: one click to pause, two clicks to move to next song, three clicks to move to previous song
  • lots and lots of accessories
  • battery charging really fast!

I started disliking my iPhone 4S for the following reasons:

  • screen too small and I thought the iPhone 5S was a too expensive and not interesting enough upgrade
  • rather bad sound quality of the too fragile headphones
  • the buttons on the headphones' chord don't work well when it's very cold outside
  • battery is not removable
  • impossible to add a microSD card
  • rear camera too far behind state of art
  • screen quality too far behind state of art
  • loudspeaker not loud enough
  • rather poor 3G reception and no 4G
  • all covers and case add too much to phone's thickness

I love the S5's hardware for the following reasons:

  • laaaaarger and much higher quality screen
  • removable battery and better battery life than the 4S
  • microSD card slot
  • the View Cover of the S5 is very, very nice
  • the induction-charging View Cover is even nicer...
  • dust- and water-proof
  • very good rear camera
  • loudspeaker is loud
  • micro-USB
  • excellent WiFi, Bluetooth and 4G
  • IR to control my TV and set-top box
  • fingerprint reader

What I don't really like in S5's hardware:

  • plastic... When you come from the iPhone 4S, the S5 feels a bit like a toy
  • less accessories
  • it's easy to scratch the metal-like plastic border of the phone
  • no button to mute or block the rotation; I know this can be done easily with a few clicks but, unlike the 4S, I need to remove the phone from my pocket for that
  • the heartbeat sensor is not precise enough and it's rather hard to make it work properly
  • the + and - volume buttons are not separated
  • apparently, three clicks on the headphone's chord does not move to previous song; or it does not work here.
  • the wonderful temperature sensor of the S4 is gone in the S5

Software

I really appreciated my iPhone 4S for the following reasons:

  • iTunes worked well on my Mac; the UX of iTunes seems to me almost unbeatable despite of a few flaws.
  • simplicity and intuitiveness of the whole iOS UI
  • homogeneous UI/UX of almost all apps in the iOS ecosystem, making them in general very intuitive to use
  • iOS preferences are easy to deal with even if they lack a few things
  • trivial Airplay
  • I used a lot an application called "Notes de Frais" for my expense reports. Superbly done and maintained.
  • new OS releases are announced
  • I loved the keyboard and some of its features like switching back automatically to regulars chars after the insertion of an apostrophe, something important when you write in french
  • kinetic scrolling has always been superb
  • worked beautifully with my car's infotainment system.

I was increasingly fed up with the following things in my 4S:

  • my 4S was having a lot, really a lot of trouble, finding a network provider abroad in less than 15 minutes. I often had to shut it down and reboot it for that. Very annoying. Let me put that in the software section as a bug.
  • not enough options in the floating panel of the home screen.
  • no widgets on the home screen
  • too slow to add new features
  • no other browser than Safari; I should say no other rendering engine

S5 and its Android stack won me with:

  • no more roaming issues
  • widgets on home screen
  • lot of options on the home screen's floating panel
  • still lots of apps
  • Smart Booster to use WiFi and 4G together
  • Eco Mode making the battery last days and days
  • private mode
  • Smart Stay, my phone does not go to standby if it can see my eyes...
  • I can use Firefox...
  • I don't use NFC yet but I'm glad it's in

But there are things I am still not used to:

  • I need a replacement for Kies, that I don't like. Any recommendation?
  • no rotation of the home screen?
  • the home screen's floating panel can contain 10 shortcuts and only ten. WHY ONLY TEN?
  • Google, google, google everywhere
  • Contacts offer by default only one Name field. Not two FirstName and Name fields.
  • Android preferences are just a true PITA. It's a mess of epic magnitude, some prefs being completely impossible to understand or sometimes hidden in an unexpected section of the preferences. Geekiness maxima.
  • why the hell is Calendar named S Planner? Seriously?
  • no native DLNA, I add to install the Samsung Link app
  • rotation is sometimes too slow
  • keyboard is not predictive enough and has too small keys; I too often hit the wrong key
  • I still have not figured how to reproduce the apostrophe behaviour of the iOS keyboard described above. Help!
  • bloatware I never used and will almost certainly never use
  • apps UI is too heterogeneous. Not enough intuitiveness. Some apps offer a back button between screens, some rely on the back hardware button, some allow both.
  • all my attempts to find a decent equivalent to my iOS expense report app, with a very good currency management, failed
  • the weather widget takes 1/3rd of the screen! Seriously? I don't need it to show time, I only want local weather. Could be just an icon. In general, widgets eat far too much screen space.
  • works some times weirdly with my car's infotainment system. From time to time, I can't reach my contacts list from the car.
  • some issues with kinetic scrolling and zooming.

All in all, I am a happy S5/Android user. I am pretty sure the UI issues of Android will fade away with new releases. It feels like I'm back in 2014 again.

Update: comments closed, thanks to trolls.

Wednesday 19 March 2014

A better CSS OM for parsed values

A large part of the current CSS Object Model sucks. More specifically, the CSSValue, CSSPrimitiveValue, CSSValueList, RGBColor, Rect and Counter interfaces are so poorly designed they're not implemented. I just tried to implement them for a project of mine and I must say the model is so weak and incoherent it cannot be implemented as is.

I have then tried to refine what's in the 2000-nov-13 spec of DOM Level 2 Style to reach something workable. I am NOT saying this has to be done or implemented. Call it a mental exercise I did just for fun, w/o caring about performance.

Let's first look at what's wrong:

Interface CSSValue

      interface CSSValue {
      
        // UnitTypes
        const unsigned short      CSS_INHERIT                    = 0;
        const unsigned short      CSS_PRIMITIVE_VALUE            = 1;
        const unsigned short      CSS_VALUE_LIST                 = 2;
        const unsigned short      CSS_CUSTOM                     = 3;
      
                 attribute DOMString        cssText;
                                              // raises(DOMException) on setting
      
        readonly attribute unsigned short   cssValueType;
      };

"inherit" is here considered as a special identifier despite of the fact a CSSPrimitiveValue can be a CSS_IDENT. There is no UnitType for "initial". A CSS_CUSTOM is, according to the spec, a "custom value"; but a custom value still has to be valid per CSS syntax so it should be representable with CSS_VALUE_LISTs and CSS_VALUEs.

Interface CSSValueList

interface CSSValueList : CSSValue {
  readonly attribute unsigned long    length;
  CSSValue           item(in unsigned long index);
};

All in all, this one is simple and should be quite ok. But one thing is missing: a property can accept a comma-separated list of whitespace-separated values. The current CSSValueList cannot express if the serialization of a CSSValueList should be whitespace- or comma-separated.

Interface CSSPrimitiveValue

interface CSSPrimitiveValue : CSSValue {

  // UnitTypes
  const unsigned short      CSS_UNKNOWN                    = 0;
  const unsigned short      CSS_NUMBER                     = 1;
  const unsigned short      CSS_PERCENTAGE                 = 2;
  const unsigned short      CSS_EMS                        = 3;
  const unsigned short      CSS_EXS                        = 4;
  const unsigned short      CSS_PX                         = 5;
  const unsigned short      CSS_CM                         = 6;
  const unsigned short      CSS_MM                         = 7;
  const unsigned short      CSS_IN                         = 8;
  const unsigned short      CSS_PT                         = 9;
  const unsigned short      CSS_PC                         = 10;
  const unsigned short      CSS_DEG                        = 11;
  const unsigned short      CSS_RAD                        = 12;
  const unsigned short      CSS_GRAD                       = 13;
  const unsigned short      CSS_MS                         = 14;
  const unsigned short      CSS_S                          = 15;
  const unsigned short      CSS_HZ                         = 16;
  const unsigned short      CSS_KHZ                        = 17;
  const unsigned short      CSS_DIMENSION                  = 18;
  const unsigned short      CSS_STRING                     = 19;
  const unsigned short      CSS_URI                        = 20;
  const unsigned short      CSS_IDENT                      = 21;
  const unsigned short      CSS_ATTR                       = 22;
  const unsigned short      CSS_COUNTER                    = 23;
  const unsigned short      CSS_RECT                       = 24;
  const unsigned short      CSS_RGBCOLOR                   = 25;

  readonly attribute unsigned short   primitiveType;
  void               setFloatValue(in unsigned short unitType, 
                                   in float floatValue)
                                        raises(DOMException);
  float              getFloatValue(in unsigned short unitType)
                                        raises(DOMException);
  void               setStringValue(in unsigned short stringType, 
                                    in DOMString stringValue)
                                        raises(DOMException);
  DOMString          getStringValue()
                                        raises(DOMException);
  Counter            getCounterValue()
                                        raises(DOMException);
  Rect               getRectValue()
                                        raises(DOMException);
  RGBColor           getRGBColorValue()
                                        raises(DOMException);
};

This is so completely crazy I don't know where to start...

  • CSS_UNKNOWN is supposed to represent a "value that is not a recognized CSS2 value". Then it should be thrown away by the parser as invalid and never reach the OM, right?
  • the list of units is long and not easily extensible
  • attr(), counter(), counters(), rect() and the more recent gradients or var() calls are all functions; adding a new setter and a new getter for each new type is overkill
  • attr() was extended by recent specs and can now take more than one argument. The above does not allow to individually modify those arguments.
  • "initial" and "inherit" are, as I already said above, covered by both CSSValue and CSS_IDENT here
  • let's suppose we have a CSSValue that is a CSSPrimitiveValue. Setting its cssText to "10px 10px" will then trigger an exception since a CSSPrimitiveValue cannot transmute magically into a CSSValueList...
  • I love how the spec prose says setStringValue() has "No Parameters"...

Interface Rect

interface Rect {
  readonly attribute CSSPrimitiveValue  top;
  readonly attribute CSSPrimitiveValue  right;
  readonly attribute CSSPrimitiveValue  bottom;
  readonly attribute CSSPrimitiveValue  left;
};

This looks and smells like a CSSValueList far too much.

Interface RGBColor

interface RGBColor {
  readonly attribute CSSPrimitiveValue  red;
  readonly attribute CSSPrimitiveValue  green;
  readonly attribute CSSPrimitiveValue  blue;
};

This cannot represent rgba(), hsl() and hsla() colors. We also have to use three CSSPrimitiveValue for the three color components because they can be a percentage or an integer...

Interface Counter

interface Counter {
  readonly attribute DOMString        identifier;
  readonly attribute DOMString        listStyle;
  readonly attribute DOMString        separator;
};

Again, something is missing here: nothing says if it's supposed to be a counter() or a counters() value. And no, the separator could not do the trick since it can be the empty string.

Requirements

To have a better OM for Values, i.e. an extensible OM that allows an application to deal with parsed values of all kinds, we need to change of perspective. First, the list of reserved idents, the list of units and the list of functions are not extensible. Secondly, we have cast issues between PrimitiveValues and ValueLists and we need a single interface. We can deal with all the issues with a single CSSValue interface:

New interface CSSValue

interface CSSValue {

  // ValueTypes
  const unsigned short      CSS_SYMBOL                     = 0;
  const unsigned short      CSS_NUMBER                     = 1;
  const unsigned short      CSS_UNIT                       = 2;
  const unsigned short      CSS_STRING                     = 3;
  const unsigned short      CSS_URI                        = 4;
  const unsigned short      CSS_IDENT                      = 5;
const unsigned short CSS_VALUE_LIST = 6; readonly attribute unsigned short type; attribute boolean commaSeparated;
readonly attribute unsigned long length;
CSSValue item(in unsigned long index);
raises(DOMException);

void setFloatValue(in float floatValue) raises(DOMException); float getFloatValue() raises(DOMException);
void setStringValue(in DOMString stringValue) raises(DOMException); DOMString getStringValue() raises(DOMException); };

Definition group ValueTypes

An integer indicating the type of the Value

CSS_SYMBOL
The value is a single character than cannot be interpreted otherwise. For instance the / character in the font shorthand property. The value can be obtained by the getStringValue() and set by the setStringValue() method.
CSS_NUMBER
The value is a simple number. The value can be obtained by using the getFloatValue() method and set through by setFloatValue() method.
CSS_UNIT
The value is a number followed by a unit. The number part of the value can be obtained by using the getFloatValue() method and set through by setFloatValue() method. The unit part of the value can be obtained by using the getUnit() method and set through by setUnit() method
CSS_STRING
The value is a string. The value can be obtained by the getStringValue() and set by the setStringValue() method.
CSS_URI
The value is a URI. The parameter of the url() function can be obtained by the getStringValue() and set by the setStringValue() method.
CSS_IDENT
The value is a CSS identifier. The value can be obtained by the getStringValue() and set by the setStringValue() method.
CSS_VALUE_LIST
The value is a list of values or a function. It is a function if the getStringValue() method does not reply the empty string. The list of values is whitespace-separated if the commaSeparated attribute is false and comma-separated otherwise.

Attributes

type of type unsigned short, readonly
The type of the value as defined by the constants specified above.
commaSeparated of type boolean
The separation type of the list of values. Meaningful only if the type attribute is CSS_VALUE_LIST. The list is whitespace-separated if the attribute is false and comma-separated otherwise.
length of type unsigned long, readonly
The number of CSSValue in the list. The range of valid values of the indices is 0 to length-1 inclusive.
Exceptions
INVALID_ACCESS_ERR: Raised if the CSS value is a not a CSS_VALUE_LIST.

Methods

getFloatValue
Retrieves the value of a CSS_NUMBER or the number part of the value of a CSS_UNIT. If this CSS value is not a CSS_NUMBER or a CSS_UNIT, a DOMException is raised.
Return Value
float The float value of this CSS_NUMBER or CSS_UNIT
Exceptions
INVALID_ACCESS_ERR: Raised if the CSS value isn't a CSS_NUMBER nor a CSS_UNIT.
getStringValue
For a CSS_SYMBOL, retrieves the single character used as a symbol.
For a CSS_STRING, retrieves the string. Enclosing quotes or double-quotes are NOT included.
For a CSS_UNIT, retrieves the unit of the value.
For a CSS_URI, retrieves the argument of the url(...) notation. Enclosing quotes or double-quotes are NOT includedt.
For a CSS_IDENT, retrieves the identifier.
For a CSS_VALUE_LIST and if that list of values is passed as the parameters of a function, retrieves the function name. Retrieves the empty string otherwise.
For a CSS_NUMBER and CSS_UNIT, a DOMException is raised.
No Parameters
Return Value
DOMString The float value of this CSS_NUMBER or CSS_UNIT
Exceptions
INVALID_ACCESS_ERR: Raised if the CSS value is a CSS_NUMBER or a CSS_UNIT.
item
For a CSS_VALUE_LIST, Used to retrieve a CSSValue by ordinal index. The order in this collection represents the order of thevalues in the CSS style property. If index is greater than or equal to the number of values in the list, this returnsnull.
For all other value types, a DOMException is raised.
Parameter
index of type unsigned long: index into the collection.
Return value
CSSValue The CSSValue at the index position in the CSSValueList, or null if that is not a valid index.
Exceptions
INVALID_ACCESS_ERR: Raised if the CSS value is a not a CSS_VALUE_LIST.
setFloatValue
Sets the value of a CSS_NUMBER or the number part of the value of a CSS_UNIT. If this CSS value is not a CSS_NUMBER or a CSS_UNIT, a DOMException is raised.
Parameter
floatValue of type float;
No Return Value
Exceptions
INVALID_ACCESS_ERR: Raised if the CSS value isn't a CSS_NUMBER nor a CSS_UNIT or if the attached property doesn't support the float value or the unit type.
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.
setStringValue
For a CSS_SYMBOL, sets the single character used as a symbol.
For a CSS_STRING, sets the string.
For a CSS_UNIT, sets the unit of the value.
For a CSS_URI, sets the argument of the url(...) notation.
For a CSS_IDENT, sets the identifier.
For a CSS_VALUE_LIST and if the parameter is not the empty string, make the list of values become a function and sets the function name. Make the list become a plain list of values if the parameter is the empty string.
For a CSS_NUMBER and CSS_UNIT, a DOMException is raised.
Parameter
stringValue of type DOMString
No Return Value
Exceptions
INVALID_ACCESS_ERR: Raised if the CSS value is a CSS_NUMBER or a CSS_UNIT, if the type of the value is CSS_SYMBOL and the string can be parsed as an other type of value, if the type of the value is CSS_UNIT and the string is not a valid CSS unit, if the type of the value is CSS_URI and the string is not a valid URI, if the type of the value is CSS_IDENT and the string is not a valid CSS identifier, if the type of the value is CSS_VALUE_LIST and the string is not a valid CSS identifier or the empty string.
NO_MODIFICATION_ALLOWED_ERR: Raised if this property is readonly.

Conclusion

The above should be enough to describe any CSS value, specified or computed. The model will become a bit complex for complex values but it ensures any web application can have access to parsed values, deal with their types and modify them. Let's take an example:

background-image: linear-gradient(to bottom, yellow 0%, blue 100%), url(foo.png);

This will result in the following OM (click on the image to enlarge it):

OM example

Again, I'm not saying the above is the thing to do or implement. It can certainly be improved, for instance for colors. A totally different perspective is also perfectly possible. I am only saying that making a better CSS OM allowing a full representation of parsed values in stylesheets and computed values is feasible. I hope the CSS OM will offer such power in the future.

UPDATE: the new CSSValue interface above lacks one thing, the ubiquitous cssText for parsing and serialization. Sorry for that.

Saturday 25 February 2012

Hoodies in Paris

I was wearing my black Firefox hoodie yesterday, walking in the streets of Paris with my kids and my dad going to a restaurant for my birthday when we had the big surprise to see another black Firefox hoodie walking in front of us ! Opened my jacket to show mine, Ooooh, Aaaaaah :-) Two Mozillians from the B2G team, visiting the Mozilla Paris offices and spending some time in the nice Marais. It was really fun to meet only because we were proudly wearing our Firefox hoodie :-) Small world, after all. Thanks for that, Mozilla !

Friday 10 February 2012

Blaming CSS WG is too easy, Brendan

Brendan, I have the highest respect for you and you do know it. But I cannot let you affirm in public the current situation about prefixes was caused first by the CSS Working Group.

  1. the CSS Working Group gathers you guys, browsers vendors. The Working Group decides nothing "by itself", it's an empty shell where browser vendors discuss, sometimes fight, and reach consensus. If a consensus was reached about introducing vendor prefixes in the past, the MEMBERSHIP of the Group is fully responsible for it and that DOES include Mozilla, or more probably Netscape at that time but eh we were all there at that time.
  2. even the W3C Process is decided by the W3C Members. The CSS WG is totally out of scope here. It's like saying you blame an airport because you don't like showing an ID at the airport, the airport being bound by national and international regulations. Nothing it can do about it. Have someone at the W3C Advisory Board (you used to have Arun) or call for Process changes in a constructive way. But please, tell Mozilla reps to stop asking for Process changes in the CSS WG when the bits to change are NOT in our hands. That too sucks our time.
  3. the CSS Working group kept drafts under its wings too often not because of pains caused by the W3C Process but because of the perfectionism of the WG Members. And they include Mozilla. People who criticize W3C say it lacks pragmatism, but trust me on that please, I too often said "perfectionism on CSS 2.1 sucks our time for CSS 3". CSS 2.1 took too many years to emerge also because you browser vendors wanted the most perfect spec and could never end the loop.
  4. let's take CSS Variables, a top request by the whole CSS Community since 1997. Dave Hyatt and I had a complete, simple, nice, understandable, easily implementable proposal, Dave even implemented it in WebKit and shipped it. Finally removed it because other browser vendors ended up in endless discussions on the feature itself. The CSS WG is not guilty here. The browser vendors are. They argued and argued and argued ad nauseum, for something that could have hit browsers FOUR YEARS AGO and we still don't even have an alternative. Don't blame the CSS WG, blame your representatives to the CSS WG. Where is the lack of pragmatism and the lack of speed?
  5. when the whole mobile Web is full of a feature implemented by WebKit, documented by Apple in two lines only on their developer's web site, protected by IPRs owned by Apple, never submitted by any browser vendor to the Working Group, and when Microsoft, Mozilla and Opera want to implement that super feature because lack of it harms their market share, don't blame the CSS WG. Fight the legal issue about IPR, implement a counter-measure legally feasible we could rapidly standardize or get Apple to submit their feature to the WG. But you just cannot tell the WG is guilty in any way here.
  6. I have said dozens and dozens of times in the CSS WG that prefixes are a terrible burden on Web Authors' shoulders. It's only recently (relatively to the age of the WG) that we adopted a rule allowing us to get rid of prefixes when we think a feature is stable enough. But this rule comes, again, from CONSENSUS AMONG BROWSER VENDORS. The Working Group here is nothing more but a meeting room. Each time a new proposal to simplify (or get rid of) prefixes was submitted in the past, one browser vendor at least objected. So what should we do? Break consensus? On what basis? My chair's hat?!? Playing Heads or Tails? Even with the new rule, discussions about the stabilization of a given feature and removal of prefixes always lead to one browser vendor objecting to the proposal supported by the others. And it's not always the same browser vendor. How can you say here the WG is first guilty?
  7. as far as I know, the list of prefixed (and even sometimes unprefixed while they should be prefixed!) properties implemented by WebKit is the following one:
    -epub-caption-side
    -epub-hyphens
    -epub-text-combine
    -epub-text-emphasis
    -epub-text-emphasis-color
    -epub-text-emphasis-style
    -epub-text-orientation
    -epub-text-transform
    -epub-word-break
    -epub-writing-mode
    -webkit-animation
    -webkit-animation-delay
    -webkit-animation-direction
    -webkit-animation-duration
    -webkit-animation-fill-mode
    -webkit-animation-iteration-count
    -webkit-animation-name
    -webkit-animation-play-state
    -webkit-animation-timing-function
    -webkit-appearance
    -webkit-aspect-ratio
    -webkit-backface-visibility
    -webkit-background-clip
    -webkit-background-composite
    -webkit-background-origin
    -webkit-background-size
    -webkit-border-after
    -webkit-border-after-color
    -webkit-border-after-style
    -webkit-border-after-width
    -webkit-border-before
    -webkit-border-before-color
    -webkit-border-before-style
    -webkit-border-before-width
    -webkit-border-bottom-left-radius
    -webkit-border-bottom-right-radius
    -webkit-border-end
    -webkit-border-end-color
    -webkit-border-end-style
    -webkit-border-end-width
    -webkit-border-fit
    -webkit-border-horizontal-spacing
    -webkit-border-image
    -webkit-border-radius
    -webkit-border-start
    -webkit-border-start-color
    -webkit-border-start-style
    -webkit-border-start-width
    -webkit-border-top-left-radius
    -webkit-border-top-right-radius
    -webkit-border-vertical-spacing
    -webkit-box-align
    -webkit-box-direction
    -webkit-box-flex
    -webkit-box-flex-group
    -webkit-box-lines
    -webkit-box-ordinal-group
    -webkit-box-orient
    -webkit-box-pack
    -webkit-box-reflect
    -webkit-box-shadow
    -webkit-box-sizing
    -webkit-color-correction
    -webkit-column-axis
    -webkit-column-break-after
    -webkit-column-break-before
    -webkit-column-break-inside
    -webkit-column-count
    -webkit-column-gap
    -webkit-column-rule
    -webkit-column-rule-color
    -webkit-column-rule-style
    -webkit-column-rule-width
    -webkit-column-span
    -webkit-column-width
    -webkit-columns
    -webkit-dashboard-region
    -webkit-filter
    -webkit-flex-align
    -webkit-flex-direction
    -webkit-flex-flow
    -webkit-flex-item-align
    -webkit-flex-order
    -webkit-flex-pack
    -webkit-flex-wrap
    -webkit-flow-from
    -webkit-flow-into
    -webkit-font-feature-settings
    -webkit-font-kerning
    -webkit-font-size-delta
    -webkit-font-smoothing
    -webkit-font-variant-ligatures
    -webkit-grid-columns
    -webkit-grid-rows
    -webkit-highlight
    -webkit-hyphenate-character
    -webkit-hyphenate-limit-after
    -webkit-hyphenate-limit-before
    -webkit-hyphenate-limit-lines
    -webkit-line-box-contain
    -webkit-line-break
    -webkit-line-clamp
    -webkit-line-grid
    -webkit-line-grid-snap
    -webkit-locale
    -webkit-logical-height
    -webkit-logical-width
    -webkit-margin-after
    -webkit-margin-after-collapse
    -webkit-margin-before
    -webkit-margin-before-collapse
    -webkit-margin-bottom-collapse
    -webkit-margin-collapse
    -webkit-margin-end
    -webkit-margin-start
    -webkit-margin-top-collapse
    -webkit-marquee
    -webkit-marquee-direction
    -webkit-marquee-increment
    -webkit-marquee-repetition
    -webkit-marquee-speed
    -webkit-marquee-style
    -webkit-mask
    -webkit-mask-attachment
    -webkit-mask-box-image
    -webkit-mask-box-image-outset
    -webkit-mask-box-image-repeat
    -webkit-mask-box-image-slice
    -webkit-mask-box-image-source
    -webkit-mask-box-image-width
    -webkit-mask-clip
    -webkit-mask-composite
    -webkit-mask-image
    -webkit-mask-origin
    -webkit-mask-position
    -webkit-mask-position-x
    -webkit-mask-position-y
    -webkit-mask-repeat
    -webkit-mask-repeat-x
    -webkit-mask-repeat-y
    -webkit-mask-size
    -webkit-match-nearest-mail-blockquote-color
    -webkit-max-logical-height
    -webkit-max-logical-width
    -webkit-min-logical-height
    -webkit-min-logical-width
    -webkit-nbsp-mode
    -webkit-opacity
    -webkit-padding-after
    -webkit-padding-before
    -webkit-padding-end
    -webkit-padding-start
    -webkit-perspective
    -webkit-perspective-origin
    -webkit-perspective-origin-x
    -webkit-perspective-origin-y
    -webkit-print-color-adjust
    -webkit-region-break-after
    -webkit-region-break-before
    -webkit-region-break-inside
    -webkit-region-overflow
    -webkit-rtl-ordering
    -webkit-svg-shadow
    -webkit-tap-highlight-color
    -webkit-text-decorations-in-effect
    -webkit-text-emphasis-position
    -webkit-text-fill-color
    -webkit-text-security
    -webkit-text-size-adjust
    -webkit-text-stroke
    -webkit-text-stroke-color
    -webkit-text-stroke-width
    -webkit-touch-callout
    -webkit-transform
    -webkit-transform-origin
    -webkit-transform-origin-x
    -webkit-transform-origin-y
    -webkit-transform-origin-z
    -webkit-transform-style
    -webkit-transition
    -webkit-transition-delay
    -webkit-transition-duration
    -webkit-transition-property
    -webkit-transition-timing-function
    -webkit-user-drag
    -webkit-user-modify
    -webkit-user-select
    -webkit-wrap
    -webkit-wrap-flow
    -webkit-wrap-margin
    -webkit-wrap-padding
    -webkit-wrap-shape-inside
    -webkit-wrap-shape-outside
    -webkit-wrap-through
    background-position-x
    background-position-y
    border-image-outset
    border-image-repeat
    border-image-slice
    border-image-source
    border-image-width
    overflow-x
    overflow-y
    text-overflow
    word-wrap
    zoom
    

    many of them being "documented" by Apple. Some are well known, come from a CSS WG spec/draft/document, and have their counterparts in Gecko, Presto and Trident. Some are totally unknown to us and were never submitted for standardization. So again, don't blame the CSS WG for prefixed properties that NEVER reached us. They are going to hit the market and spread because of a company, not because of a standards body. For the ones you implement and people don't use, well, Apple has nice editing tools, nice IDEs. I told you a loooong time ago that a browser is only the top of the ecosystem's iceberg and that editing is still a major part of it.

  8. we already have an existing case with extremely ugly de facto standardization coming from WebKit mobile market dominance, and that's the infamous meta viewport tag. I heard myself some Apple engineers acknowledge it was a rather big mistake. We have CSS equivalents for this on our radar, submitted by Opera. We could have moved towards a de jure solution faster here but apparently there is little interest shown by browser vendors if you except of course Opera. Blame again the CSS WG for that? Not you, Brendan, please. You know too well standardization for that.
  9. all of that said, please tell me how you are going to get rid of the -webkit-* prefix (or even implement the prefixed version in Moz) for -webkit-text-size-adjust given the IPRs?

It is too easy to always beat the CSS WG or the W3C. If you recall correctly, I have been one of the first ones to shout at the W3C in the XHTML2 fiasco. It was so early that Netscape still existed. I am still the first one to say it when they mess things up. But here, that's just unfair. I only agree that the CSS Working Group could have done better but hey, the Working Group members - hear YOU BROWSER VENDORS - decided there. So putting that organization at the top of your recriminations just carries a false message and hides an inconvenient truth.

Mozilla and Opera gave hand to Apple to create the WHAT-WG. You guys can speak together, for instance when your high-level representatives had a private secret meeting at Apple while the CSS WG was by pure coincidence in the meeting room on the other side of the corridor, was it november 2010. Meet again and let Apple know it must submit to the corresponding WGs technical proposals for the features that hit the Web and spread too wide to remain proprietary. Apple too must preserve the Open Web. So it says for HTML and APIs, so why not for CSS?

Thursday 9 February 2012

CALL FOR ACTION: THE OPEN WEB NEEDS YOU *NOW*

The CSS Working Group, the W3C, the browser vendors and the Open Web need you, and I really mean you ALL. The following article is written by Daniel Glazman, co-chairman of the CSS Working Group; the part until "This must not happen" represents an official discussion of the CSS Working Group. Members of the Group behind that discussion include Adobe, Apple, Disruptive Innovations, Google, HP, Microsoft, Mozilla, Opera and the World Wide Web Consortium (W3C). The second part of the article is strictly mine.

Not so long ago, IE6 was the over-dominant browser on the Web. Technically, the Web was full of works-only-in-IE6 web sites and the other browsers, the users were crying. IE6 is dead, this time is gone, and all browsers vendors including Microsoft itself rejoice. Gone? Not entirely... IE6 is gone, the problem is back.

WebKit, the rendering engine at the heart of Safari and Chrome, living in iPhones, iPads and Android devices, is now the over-dominant browser on the mobile Web and technically, the mobile Web is full of works-only-in-WebKit web sites while other browsers and their users are crying. Many sites are sniffing the browser's User-Agent string and filtering out non-WebKit browsers. As in the past with IE6, it's not a question of innovation but a question of hardware market dominance and software bundled with hardware. But there is an aspect of the problem we did not have during the IE6 era: these web sites are also WebKit-specific because they use only "experimental" CSS properties prefixed with -webkit-* and not their Mozilla, Microsoft or Opera counterparts. So even if the browser sniffing goes away, web sites will remain broken for non-WebKit browsers...

In many if not most cases, the -webkit-* properties WebKit-specific web sites are using do have -moz-*, -ms-*, -o-* equivalents. Gradients, Transforms, Transitions, Animations, border-radius, all interoperable enough to be browser-agnostic. Their web authors need only a few minutes to make the site compatible with Mozilla, Microsoft or Opera. But they never did it.

Without your help, without a strong reaction, this can lead to one thing only and we're dangerously not far from there: other browsers will start supporting/implementing themselves the -webkit-* prefix, turning one single implementation into a new world-wide standard. It will turn a market share into a de facto standard, a single implementation into a world-wide monopoly. Again. It will kill our standardization process. That's not a question of if, that's a question of when.

Let me be very clear: this is NOT hypothetical and I'm not discussing here something that could happen. All browser vendors let us officially know it WILL happen, and rather sooner than later because they have, I quote,  "no other option". Let me also state very clearly that is NOT a lack of innovation on these browser vendors' side, in particular when they DO support a feature but with their own prefix, following here the Working Group's rules.

THIS MUST NOT HAPPEN.

This situation happened in the past with IE6, when browsers were desktop-only, and it took ten long years to recover. With billions of mobile browsers today, the Web may not recover at all.

Vendor prefixes have not failed. They are a bit suboptimal but they also very clearly preserved Web Authors from chaos. We can certainly make vendor prefixes work better but we can only do that if vendor prefixes remain VENDOR prefixes.

I am asking all the Web Authors community to stop designing web sites for WebKit only, in particular when adding support for other browsers is only a matter of adding a few extra prefixed CSS properties.

I am asking all the Web Authors community to remove immediately and stop implementing WebKit-based browser sniffing in web sites. You own such a web site? Show your support for the Open Web and remove that browser sniffing immediately after you finish reading this call for action.

I am asking the Web Design and Web Users community to stop recommending web sites that require one single browser while they could be open to multiple ones. Don't link them, mention them only to let the community know they fail serving the Open Web. Don't feed the trolls; blacklist them, whatever is the coolness of the service they provide.

I am asking the Web Authors community to update their online services to support the other browsers if these other browsers offer a level of CSS support they did not offer in the past. Do that NOW! Very little effort, big effect.

I am asking the whole Web community, all Users, to ping Web Authors and complain if their web sites work only for one rendering engine while it could work for many. Help us evangelize these Web sites to make sure the Architecture of the Web remains safe for all, remains based on consensual and open Web Standards, because browser vendors implementing the prefix(es) of other browser vendor(s) can only lead to a chaos of the IE6 magnitude. We did it in the past for works-only-in-IE6 web sites and we did it well, now is the time to do it again for works-only-in-WebKit web sites.

I am also asking the browser vendors behind WebKit, namely Apple and Google, to submit as soon as possible to the CSS Working Group complete technical proposals for the proprietary CSS-like properties they have let the whole world use in iOS and Android devices, harming the Open Web. An example of such a property is -webkit-text-size-adjust. Please note the Apple representative to the CSS WG said he'll look at the possibility to have proposals submitted for a list of such properties. If these properties are so well implemented and so useful to the mobile Web, they became de facto standards ; let's turn them as soon as possible into de jure standards through W3C standardization. I am also calling Apple and Google to remove support for the "experimental" versions of a property when the final one is implemented and shipped. We, and that we represents the whole Web Industry, cannot let the architecture of the Web become unsafe and unreliable keeping forever vendor prefixes that should be gone. That is harmful and this is your responsibility, because you could provide mandatory software updates to your users. The Open Web does not have to suffer of such a decision.

So please all express your opinion, help the Open Web and tweet or blog that you don't want to see this happen. Some of you already started, after reading the minutes of the CSS Working Group face-to-face meeting in Paris. Let Microsoft, Mozilla and Opera know this is the wrong way to go even if we understand perfectly both the diagnosis and their proposed solution. If browser vendors standardize the Web, it's really owned by Users and Authors and now is the time to let browser vendors remember it better. YOUR VOICE DOES MATTER.

I am finally asking you to relay that call for help. For that reason, comments are closed on this article. Use your blog, your twitter account, Facebook, Google+, whatever. But do it.

Jeffrey, Eric, Molly, Lea and all our friends of the Web Designers' community and/or Web Standards' community: please help us. Now.

If you're a journalist, I'm immediately open to interviews on this topic (please note I'm based in Europe).

Thank you.

Updates:

Sunday 1 January 2012

Looking back at 2011

2011 just came to an end and it's time to look back and report. For Disruptive Innovations, things are simple:

  • BlueGriffon released; BlueGriffon is our Wysiwyg content editor for the Web, powered by Gecko. It's the only editor of its kind offering support for html5, css3 and svg, all builtin. Version 1.4 to be released in january 2012.
  • many addons to BlueGriffon released. Our best-seller is clearly the CSS Pro Editor. A CSS 3 Animations Editor is on its way.
  • an EPUB version of BlueGriffon is also on its way. It takes more time than previously expected because of interpretation issues in the spec. But stay tuned, it's alive.

On the CSS WG front:

  • many new RECs, including CSS 2.1. The CSS WG is going very well, and we have a lot of new cool stuff on the radar. The Working Group is larger than ever, with an impressive number of active contributors.
  • the CSS Test Suite harness developed by Peter Linss is a major achievement, that helped us managing thousands of CSS 2.1 tests and delivering implementation reports.
  • CSS prefixes are a larger and larger problem every day. Even if we have different opinions on "why" and on "what instead", we almost all agree on part of the diagnosis: prefixes harm the Authoring community.
  • The current CSS OM is a pile of crap we unfortunately all have to rely on; and I do mean it: ALL. Web authors, game implementors, app developers, we all suffer from the weaknesses of the CSS OM. This should become a high priority, it's highly time to make the CSS OM evolve to support the new web apps ecosystem.

On the Mozilla front:

  • Mozilla appears to be in great shape, recruiting more than ever and diving into new market areas. Only stupid journalists and trolls jumped on the Mozilla-Google-deal-is-no-more bandwagon and the figures recently reported are excellent news.
  • this major direction shift did not happen at no cost, and the way Enterprises' needs were dealt with is still one of the largest and hardest hickups in Mozilla's history. From my perspective and reading the Moz Enterprise mailing-list, it's still largely unresolved. While things that many people (including yours truly) were waiting for reach finally the launchpad, some others are still the poor parent in the organization. The ecosystem (third-party Gecko-based apps) for instance is still undervalued and undersupported and a builtin system that would allow a real add-on marketplace is still not in sight. The debugging environment (call it Venkman or Firebug or whatever) focuses more than ever on content and chrome is forgotten, very strongly impacting add-on and apps developers; I just can't believe some of us had to rely on alert() or dump() in 2011... Surprisingly, Mozilla's CEO almost does not communicate at all (outside of MoCo), a drastic change in MoCo's 8 years of existence. Thunderbird came back to the nest after a few years of semi-independent life and it does not appear to be able to fly alone.
  • a few years ago, development tools were officially called "bloat" and the trend was to get rid (hear turn them into add-ons) of all of them to make the browser lighter. We were a few to fight that and it's good to discover now we were right: web development tools distributed with the browser itself and immediately available are a major attractor.
  • XUL's fate is still a matter of concern to many add-on and 3rd-party implementors, and we heard just nothing here. That's unusual in the Mozilla world, and very embarassing because people (our customers) don't bet on a technology if they feel if it could be on the extinction slope.
  • I think Mozilla has to reorganize the way it - as an organization and a community - communicates. Planet.mozilla.org became a good example for "unmanageable logorrhea", sorry to say. If by pure lack of chance you're away from a computer during one day, you may have missed extremely important technical information hidden between flows and flows of blog articles, information that you will NOT find again because you don't even know on which blog they're posted. Leave for a summer break and you're doomed. "Hey, that was posted on a blog entry two weeks ago, you missed it?" Hell, YES, I missed it, I also have a private life, and I missed it because it was on a blog and not on a persistent easy-to-find web site owned by MoCo. That is now a rather severe issue. Most of that information should only be LINKED on blogs and their primary host should be MDN or the wiki, both sites automatically sending to planet a weekly links-only digest of all new documents.

On the Web front:

  • the numberless html is a failure at least from one point of view. There is not a single journalist or commenter not using the "5" digit mentioning the "new" html language. I still remember TimBL looong ago, probably during the Web Conference in Paris, saying something like "unfortunately, human beings need meaningful identifiers". He was speaking of addresses, and the topic was of course URLs vs. URNs. For html version numbers, it's about the same. A "Living Standard" will never be meaningful to people who are not implementors and will always harm third-party vendors or even corporate users who need to match an implementation against a given snapshot of a spec. Don't misunderstand me, I see good bits in the "Living Standards" process. I see also unrecoverable bad bits.
  • that "Living Standard" frenzy is a bit like the soviet revolution - if you can pardon that weird analogy - it tries to expand and reach all standardization areas related to the Web, even the ones that work pretty well with another system. Like the soviet revolution's proselitism, it uses sometimes unexpected ways. And it also suffers epic failures like the Websocket hickup at IETF that triggered extremely harsh words, almost never seen before in that organization. But unlike the soviet revolution that was highly centralized, it's more an organized chaos.
  • html still poses major issues in terms of unified look&feel, localization, internationalization for web-based apps, not even mentioning "standalone" (hear chromeless) web-based apps. It really seems we're reinventing the wheel, as if XUL XAML and other solutions never existed. We're not there yet. Again. In terms of accessibility, I won't even tell you here my gut feeling, I want to remain polite at least the first day of this new year...

On the personal front:

  • 44 and counting :-)

Wishing you a very happy 2012 !

Friday 16 December 2011

Bespin, Skywriter, Ace and BlueGriffon

Exactly two years ago almost to the day, BlueGriffon started using Bespin for its source editor.

Two years and two name changes later, not only the project has drastically changed from its original codebase but the documentation for the project is still almost non-existent; lack of doc is already painful for a project like mine, a wysiwyg standalone editor, but it's awful for an embeddable project like Ace.

The complexity of the code and its architecture, it's monstruous size, the crazyness of themes in CSS themselves contained in JS and more make my every day's life with Ace more and more difficult every day.

I am pondering switching to another source code editor because of:

  1. readability of the code; using Require.js all over the place helps the developer, rarely the user. The other embeddable editor I'm currently looking at is incredibly more readable than Ace. When I want to hack Ace, I'm totally lost and I never know if the code I'm writing will be correctly exposed to the external world. Even worse, I never know if a given function I was planning to use is exposed to me or how.
  2. size of the code; the other embeddable editor I'm currently looking at is 4 times smaller than Ace... Sorry, but yeah, size matters.
  3. theming is too complex for what it's worth in Ace. I want CSS and CSS only, like in any good web page.
  4. speed - and I agree Ace is fast - is not an excuse. The other embeddable editor I'm currently looking at has no problem whatsoever dealing with a 35,000 lines javascript file.
  5. embedding a grammar inside another one, and html documents can contain scripts and css while html file can also contain php, is vital to me. Doing that in Ace is, to say the least, totally cryptic to me.
  6. autocompletion should not be complex to add. With Ace, it is complex. A good autocompletion for html or CSS should not be more than roughly 30 lines of very light JavaScript.

I understand this is not a positive message, but I wanted to share my concerns with you if that can help the project. Even if I may stop using it in the very near future, I wish Ace all the best.

Wednesday 16 November 2011

CSS vendor prefixes, an answer to Henri Sivonen

Disclaimer: I'm one of the two co-chairmen of the CSS Working Group and the opinions below reflect exactly what I think of the CSS process not only as an individual contributor but also with my co-chair hat on.

The ineffable Henri Sivonen has contributed a long, a very long, a probably too long post about CSS Vendor Prefixes. In short, he thinks they are harmful and should be dropped. I tend to totally disagree and will explain why below. In bold, Henri's words. Indented and normal, my responses.

vendor prefixes are hurting the Web
No. Said like that without justification and as a first sentence in Henri's prose, no. They are not. Vendor prefixes allow vendors to implement experimental CSS features without harming the namespace of unprefixed properties.

They are hurting Web authors
Here, I agree. As they are now, vendor prefixes are hurting Web authors because a) the browser market does not evolve that fast, in particular on mobile devices b) some browser vendors never get rid of prefixed properties. As a result, Web authors have to maintain several prefixes properties per feature.

They are hurting competition in the Web browser space
I totally fail understand why, maybe the rest of Henri's article will explain why.

It would also make sense for browsers to implement other browsers’ prefixed features to the extent existing content uses prefixed features
This is non-sense. There are only two cases : first case, the prefixed property was proposed for standardization and then all browser vendors will probably implement it ; second case, it was not proposed, probably because it's too proprietary or badly spec'd, and no other browser vendor will implement it because it lacks a good definition or use case.

Why do we have vendor prefixes?
Henri says the discussion is Member-confidential. It is only because that discussion is super old, long before the CSS WG decided to go public. There is nothing secret here : we have vendor prefixes because vendors needed a way to start implementing new features w/o saying their implementation was the official final CSS property.

there is no clear rule for using vendor prefixes in the DOM
That's correct and that is hurting the Web. Mozilla does it right: when it implements a new API these days, everything is prefixed with moz. That way, if the final standardized API differs from the experimental implementation, it's easy to get rid of the moz-prefixed version, tell authors hey guys this was experimenal anyway, and finally switch to the stable standardized version.

Vendor Prefixes are “Hell” for Web Authors and Authoring Tool Vendors
That is 100% true, as I detailed above for Web authors. For Authoring tool vendors, it's a nightmare. But let me tell you one thing: the "HTML live standard" of the WHAT-WG is a nightmare of a MUCH greater magnitude than this one. In comparison with the fact what the whole world has now to call "HTML" can change overnight, CSS vendor prefixes are a sweet, predictable, simple candy.

Web authors have to say the same thing in a different way to each browser
Only because browser vendors are shipping "experimental features" in non-experimental versions! Experimental features should be available only in "technology previews" of the browsers, not in stable versions. That way, everyone could still test the experimental features according to the W3C rules BUT Web authors would not use prefixed versions in production. Since almost all browser vendors switched to a fast release process, I don't see the problem here. A feature would move from prefixed to unprefixed as soon as the spec reaches stability, ie CR status.

pure hell
I have the feeling Henri is using my opinion here to tell the world a "Live CSS Standard" would be better. I have the gut feeling he's advocating for a WHATWG way of doing in the CSS Working Group. I think this is totally wrong. I think this would make CSS collapse and trigger the hatred of CSS Authors because they will be totally unable to say what is CSS at a given point.

When the possibility of using engine-specific prefixes exists, engine-specific Web content follows.
This is just false. CSS stylesheets are full of CSS hacks because the different browsers don't evolve at the same speed, because they don't all offer the same feature set at the same time. Even if prefixes are removed, that will persist and therefore engine-specific Web content will persist.

Thus, a Web author who does not want to poison the standard namespace will only use the prefixed CSS keywords or DOM APIs
NO. Henri just doesn't understand Web authoring here. The only way to stop harming a stylesheet with different prefixes for the same property is to stop using prefixed properties. EXPERIMENTAL features are experimental, and Web authors are using them because browser vendors are shipping these features as if they could be used in production. They cannot. They're subject to change or even disappear at any time.

If a site uses CSS with the -webkit- prefix, users of Firefox, Opera or IE get a worse experience even if they implemented the same feature with their own prefix or without a prefix
It's only because browser vendors are dumb. And I do mean it. The rule should be this one: if the CSS parser encounters a prefixed property for another browser, honour that property as if it were prefixed for us UNLESS an unprefixed or prefixed for us valid declaration for that property was already set. That would drastically reduce the problems on the Web. Of course, if -webkit-foo and -moz-foo are not based on the same version of the spec - and that happens all the time - that will be helpless.

Back in the old days when Internet Explorer introduced a feature that they just made up, they did not make their mark on it by baking their name into the identifier
Totally false for CSS. Microsoft Word is full of totally proprietary -ms-* properties since the first version of Word based on XML and CSS, in the "old days".

Last week, insertAdjacentHTML finally shipped to the Firefox release channel.
Unprefixed, yes. But that's normal, we have here a de facto standard, IE and its online doc, where we usually have a de jure standard, a W3C specification. That IE feature is more than ten years old and the IE-specific Web is full of it. It is totally out of question to do something even lightly different from what IE does. So prefixes are not needed. We already have the standard!

The situation is harmful for Firefox for mobile, Opera Mobile and IE on Windows Phone.
That's possible and I don't care. What I see is that your proposal to get rid of prefixes will be even more harmful to non-browsing tool vendors, Web authors who will never know if a feature is experimental (and then subject to changes) or not, and finally Web users.

In a word: No.
No only because at the time a standard is published, the Web is already full of prefixed properties. And the Web is full of prefixed properties because browser vendors ship experimental features to all final users, allowing Web Authors to use these experimental features in production Web sites. Even telling them "go ahead, it's tagged experimental but it's shipped to everyone anyway".

Lea Verou's prefix free...
...is in my opinion dangerous. It tells Web authors that a prefixed version of a property equals another prefixed version of the same property. And that is just false. Lea's prefix-free tool is FAR from enough. Trust me on that please, I had to implement a few thousand lines to start working around the problem and I only have a partial solution... This is MUCH MORE complex than what Lea's tool lets Web Authors think it is.

In practice, vendor prefixes don’t prevent legacy from accumulating ahead of CR. It’s not useful to pretend that they do.
Again, only because of browser vendors themselves. They wanted CSS prefixes but don't use them according to their original wishes. Experimental is experimental, ie "should not be used in production". Since whatever you ship will ALWAYS be used and abused, shipping experimental features to the masses could only lead to legacy prefixes accumulating in the wild. This is browser vendors' fault.

If -webkit-CSS meets the client requirement within budget today, -webkit-CSS is used.
Exactly what I said above. So don't make -webkit-CSS available to the masses. Make it available in tech previews, beta channels, etc. But not stable versions.

browser vendors should stop adding more prefixed CSS features and DOM APIs
Basically, it says CSS should become a Live Standard. I totally disagree and will do all I can to avoid that.

For CSS, features like this include at least Transitions, Animations, 2D Transforms and 3D Transforms
That opinion would be hilarious if it was not tragic... These features are almost similarly implemented but there are still stuff discussed in the spec itself. The standardization is NOT done yet, and the features are complex enough a new painful hole could emerge in the coming weeks.

I also think that it would make sense to unprefix single-vendor features
Ah, that I could agree with IF there is some sort of formal environment here : a) the vendor must consider its implementation is frozen b) it was shipped for the first time more than a year ago, so this implementation is now a de facto standard because Web sites are using it.

In these cases (flexbox, gradients), I think it would make sense to stop changing the spec, to unprefix the features in browsers that are closest to the current drafts and then prioritize work to match the spec in other browsers
Clearly no. That's what the WHATWG does, only implementations matter and specs don't, as Hixie told me during TPAC. I don't want to see that happen in CSS, ever. Furthermore, it would trigger an absolute nightmare for Web Authors and Web Authoring Tool vendors.

I think when browser vendors implement a feature experimentally, the feature should stay in experimental builds (nightly builds, “labs” builds or similar) until it is close enough to a “final” design that it can be taken as a constraint for future changes to the feature.
AAAAAH FINALLY. Here we agree entirely. Just what I said above.

I think the system where a WG can change anything until Candidate Recommendation (...) is fundamentally broken. I think decisions whether a feature can be changed should be depend on deployment.
I totally disagree. It's broken because browser vendors break it shipping experimental features in non-experimental versions. Basing prefix removal strictly on deployment is the most harmful decision to Web Authors and Web Authoring Tools that you could take. Only stability matters, not deployment.

Update: now it's clearer. One of Henri's goal is to make CSS adopt the Living Standards way of doing things. My opinion is that it would kill CSS or at least be incredibly harmful to it. So I will fight that. And to reply to Rik in that IRC log, no, I don't always mention my co-chair role when I discuss CSS. I even mention "hat on" or "hat off" when I do.

Tuesday 11 October 2011

How I got involved with Mozilla

This is a response to David Boswell’s post.

Back in 1998, I was already a member of the W3C CSS Working Group (on behalf of EDF, Électricité de France) and Peter Linss, my current co-chair in the same Group, was an employee of Netscape. Peter wanted to hire me at Netscape but it was unsuccessful at that time because of a hire freeze... Two years later, I had left EDF to become the CTO of Amazon France and later Halogen and Netscape employee (and good friend) Pierre Saslawsky pinged me during a CSS WG meeting (was it in May in Sophia or August in Oslo...) and asked me if I was available. I answered positively. Back in Mountain View, he made a referral about me and Netscape's HR called me a few weeks later. Netscape paid me a trip to Mountain View for an interview. But because I said multiple teams looked interesting to me (if I recall correctly: Layout, Editor, Mail and IM), I ended up spending 3 whole days in interviews with all these teams. Layout because I loved it, Editor because I had a lot of experience about that, Mail because I implemented one of the very first MIME-compliant Mail User Agents, and IM because I found it really interesting. Met Vidur, Waldemar, Beppe, Scott, Jst, and many others. My interview with Beth Epperson (aka Beppe) went really well; she was managing the editor team and told me later she left the room telling everyone "I want him, period" :-)

The last day, the CTO Clayton Lewis told me the interviews were positive. He asked me then "Do you want to relocate to the Bay Area or stay in Paris?". I replied "Stay in Paris if possible". He answered "Well, I usually prefer having my teams around me but if we cannot do it, who can do it... So let's do that: six months in Paris in Netscape offices and if working remotely with us does not work, you relocate to MV". I accepted with true joy.

I started working for Netscape the 1st of november 2000, starting with... a CSS WG meeting hosted by Pierre Saslawsky in San Francisco. I will always remember the "Too close to call" messages during election night, spent at Pierre's place. Arrived in MV right after the meeting. Welcomed by Carrie Friedberg to learn a Netscape 6 barbecue party was on its way :-) Got my lizard badge (a pride you can't imagine!), my computer, my cubicle in less than an hour and spent the whole month in building 21, learning a lot, really a lot from Joe Francis, Kin Blas, Akkana Peck, Beth, Michael Judge, Charles Manske and few others. I left building 21 the first day with a load of new mostly black t-shirts, a Netscape 6 jacket and an enormous smile on my face.

I fixed my first bug after a few days only. Something in the Style Engine IIRC. Then lots of bugs in the editor and a few in the Style Engine. Kin Blas vouched for me for CVS write access. And I flew back to Paris at the end of november to work from Netscape offices until 02-aug-2003, after the final 15-jul-2003 layoffs. Formally left the Netscape payroll 02-nov-2003 but launched Disruptive Innovations 13-oct-2003 and we're still here 8 years later, still working full time on Mozilla and Web Standards. Yay !

And you?

Monday 19 September 2011

HTML UI

I had an interesting online chat with a friend in the US this morning (well, this night for him...). The topic was HTML and the recent Microsoft announcements. While we see HTML reach a next level with desktop apps, the lingua franca of the web is still far, really far away from having all what's needed for desktop apps or even web-based desktop-alike apps. If form controls improved a lot between html4 and html5, a wide range of UI elements are still out of reach. Well. Let me explain before shouting : they are codable but each and every site has to reinvent the wheel with lots of UI theming and JavaScript-based controls. That's bad because that's incoherent and expensive. HTML+CSS still lacks major, really major stuff like:

  • real menus
  • tabboxes
  • pop-ins and more powerful tooltips
  • trees (and when I mean trees, I mean tree-like widgets like the XUL <tree> able to render tens of thousands of lines w/o making the user experience awful)
  • better integration with the OS/WindowManager
  • etc.

While we're (the Standards Community) now focusing on super-mega-hyper-useful stuff like an API to get the battery status (sic...), we're still unable to include in a web- or desktop app such widgets with a native look&feel. There are zillions of frameworks to ease the pain, but none of them is ready for desktop apps, and HTML+CSS+JS desktop apps need them to become mainstream AND cross-platform.

I think then a new standardization effort between HTML and CSS is needed to make HTML UI appear. Let's look back at XUL and XAML a bit... Thoughts?

- page 1 of 6