<Glazblog/>

Search

Your search for EPUB returned 63 results.

Thursday 1 February 2018

LibreOffice and EPUB

LibeOffice 6.0 is now available. And it's through the inevitable Korben I discovered this morning it has a builtin EPUB export. So let's take a closer look at that new beast and evaluate how it deals with that painful task. Conformant EPUB? And which version of EPUB? Reusable XHTML and CSS? We'll see.

After installation (on a Mac), I created a new trivial text document; it contains a paragraph, a level 1 header, an image, a table, and a unordered list of three items. I did not touch at all fonts, styles, margins, etc.

Trivial text document in LibreOffice 6.0

Then I discovered LibreOffice now has two new menu items: File > Export As... > Export directly as EPUB and File > Export As... > Export as EPUB... .

Export directly as EPUB

It directly opens a filepicker to select a destination *.epub file. Let's unzip the saved package and take a look at its guts:

  • the mimetype file is correctly placed as first file in the package and it's correctly stored without compression
  • other files are correctly stored using Deflate
  • the META-INF/container.xml is stored in last position in the zip, which is probably a mistake
  • the OPF file says it's a EPUB 3.0 package and its metadata are clean ; AFAICT, the OPF file is conformant to the spec
  • XML and XHTML files in the package are serialized without carriage returns (if you except one after the XML prolog) or indentation...
  • a NCX is present
  • the Navigation Document (called toc.xhtml) and the NCX live side by side in a OEBPS folder (sigh)
  • there is a  empty OEBPS/styles/stylesheet.css file
  • the content files are in a OEBPS/sections folder
  • that folder contains 2 files (!) section001.xhtml and section002.xhtml
  • looking at these files, LibreOffice seems to have split the original document at section breaks, hence the two sections found in the EPUB package
  • there is no title element in these files
  • there is clearly a problem with exported CSS styles, the body of each generated document having no margins, paddings. And since there is no CSS-reset either...
  • the set of LibreOffice styles (the leftmost dropdown in the toolbar) are not exported to CSS; the whole export relies on CSS inline styles (style attributes) and not on classes
  • the original document uses the "Liberation Serif" font, that is not registered under that name into the OS X fontbook (old issue well known in the OOXML world...). The final rendition in a browser is then buggy, font-wise. The font-family declarations in the document don't use a fallback to serif.
  • there is a very weird font-effect: outline property serialized on all paragraphs in table cells
  • strangely again, all these paragraphs have text-decoration: overline; text-shadow: 1px 1px 1px #666666; while the original text is not overlined nor shadowed
  • when a paragraph (a p in terms of OOXML) contains one single run of text (a r in OOXML), the output could be optimized getting rid of a span and adding its inline styles to the parent paragraph. The output is too verbose and will trigger issues in html editors, Wysiwyg or not.
  • the margin values in the document use a mix of inches and pixels, which is kind of weird
  • the image in the original document is lost in the EPUB package
  • headers are not generated as h1, h2, ... but as p elements with styles.
  • the EPUB version does not correctly deal with the unordered list and all list items become regular paragraphs. No ol or ul, bullet, no counter, no list-style-type. Semantics is lost.

Firefox Quantum viewing the resulting section002.xhtml file. You can clearly see where the html+CSS export is buggy:

Firefox Quantum viewing the resulting section002.xhtml file

How iBooks sees that EPUB:

how iBooks sees that EPUB

Export as EPUB...

Aaah, that one is quite different since it first opens the following dialog:

Export as EPUB... dialog

The dialog offers the following choices:

  1. export as EPUB2 or EPUB3 (nice!)
  2. Split at Page Breaks or Headings (very nice feature but why not also a "Don't split" option?)

and validating the dialog goes to the aforementioned *.epub filepicker.

Conclusion

This is an excellent start, really, and splitting the document at headers or page breaks is an excellent idea. Unfortunately, there are too many holes in the xhtml+CSS export at this time to make it really usable unless your document has almost unstyled paragraphs only. Some generated styles (overline?!?) are not present in the original document, it generates only paragraphs and tables losing the header or list semantics, the LibreOffice styles are not serialized in a CSS stylesheet (bug?) and more. This will help some individuals but I am not sure it will help EPUB publication chains, at least for now.

Update: Wow. I added an extra test: I compared the result of "Export to XHTML" and the XHTML inside a "Export to EPUB". In the former, styles are correctly exported as a stylesheet, classes are correctly used, h1 and ol/li are correctly used, the image is preserved, and the general rendering is MUCH better. So the Export to EPUB has one of the two following problems: it reuses the "Export to XHTML" code and splitting introduced a lot of bugs, OR it has its own export-to-xhtml code and it's a mistake since the existing one does quite a decent job...

Second update: LibreOffice's trunk does a significantly better job: stylesheet is correctly generated, xhtml files are CR'd and indented correctly, images are preserved.

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.

Thursday 11 January 2018

Web. Period.

Well. I have published something on Medium. #epub #web #future #eprdctn

Monday 25 December 2017

En vrac de Noël

  • le monde du livre électronique basé sur EPUB est au bord de l'implosion. EPUB, sous les auspices de l'IDPF qui a depuis fusionné avec le W3C, a réussi à lister à peu près tout ce qu'il ne fallait pas faire dans un Standard de ce type :
    • références normatives vers des documents non stables
    • extensions propriétaires non implémentées par les navigateurs
    • mécanismes presque impossibles à implémenter dans des éditeurs de contenu (dans le monde du Livre Électronique, une erreur stratégique gravissime)
    • des versions sorties trop vite, trop rapprochées les unes des autres et surtout sans rapports d'implémentation obligatoires
    • des versions successives cassant à chaque fois la compatibilité ascendante
    • j'en passe et des meilleures

    et c'est en train de pêter : l'industrie japonaise de l'édition a des tonnes et des tonnes d'EPUB 3.0.1 qu'ils ne peuvent ni ne souhaitent faire migrer vers EPUB 3.1. Tout d'abord, 3.0.1 est le format de livre électronique officiellement recommandé par le fameux MITI, le ministère de la technologie du gouvernement japonais. Ensuite, toute migration a un coût et l'absence de rétro-compatibilité fait exploser ce coût. Enfin, les liseuses ne sont pas (encore) conformes à 3.1 et cela ne présente donc aucun intérêt. Certains, dont votre serviteur, avaient pourtant prévenu que « trop tôt, trop vite, trop mal, sans implémentations validantes » risquait d'aboutir à un fiasco industriel. Nous y sommes désormais. Les Japonais demandent un 3.0.2 et jetteraient 3.1 à la poubelle si cela était possible. Bien évidemment, on avait pour construire 3.1 viré de 3.0.1 toutes les horreurs qu'on n'aurait jamais du y mettre. Relancer EPUB sur une 3.0.2 nous ramènerait à des emmerdes quasi-insolubles.

    Je crois qu'EPUB est désormais une impasse. Il faut tuer EPUB pour revenir à des fondamentaux intégralement basés sur les Standards du Web : un zip, un fichier index.html et des documents html voire tout format restitué en natif par un navigateur. Du CSS, du JS. Aucune autre contrainte.

  • Depuis un mois, le nombre de spams me proposant d'investir dans du bitcoin a explosé. Ma patience avec. Le bitcoin, c'est un « ratio "cours sur bénéfices " (...) supérieur à celui des actions de la crise de 1929 et de la bulle internet ». De toute manière, « en dix ans, personne n'a encore trouvé d'usage pour la blockchain ».
  • Hier, j'ai craqué. Au 117ème site Web me proposant de m'abonner à ses notifications, et donc au 117ème popup "This Web site wants to send you notifications" dans Firefox, j'ai ouvert l'URL about:config et changé la préférence dom.webnotifications.enabled de true à false. Vous devriez faire pareil... Il y a des Standards du Web qui partent d'une bonne intention, d'une bonne idée générale mais qui finissent par être une vraie PITA pour les usagers.
  • Je suis en train de lutter dans le CSS WG contre un changement de fonctionnement de la shorthand border. Avant le passage de border-image en Candidate Recommandation, border permettait d'assigner les propriétés border-*-style, border-*-width et border-*-color et celles-là seulement. Depuis ce passage, elle assigne également à leurs valeurs initiales les sous-propriétés de border-image. En clair et en décodé : avant le changement, si vous fixiez le cadre d'un élément à red solid thin côté par côté, vous aboutissiez à border: thin solid red dans votre feuille de styles. C'est fini. Pour obtenir cela, il vous faudrait aussi mettre les propriétés border-image-* à leur valeur initiale, ce que personne ne fait puisque border-image est quasiment inutilisé sur le Web. On a cassé la bijection en permettant à border de remettre à zéro des propriétés qu'elle ne peut assigner, et on a par là changé un comportement du Web vieux de plus de vingt ans...
  • Je suis passé dans l'émission SuperFail de Guillaume Erner sur France Culture, à propos de SAIP.
  • Je suis également passé dans son émission Les Matins de France Culture à propos de la panne logicielle de la SNCF.
  • L'attitude du Gouvernement vis-à-vis du Conseil National du Numérique ne cesse, depuis le 11 décembre, de me scotcher. C'est un fiasco phénoménal et je me demande franchement qui va désormais oser prendre le risque de diriger une telle instance depuis son "rappel à l'ordre"... Soyons clairs, je n'apprécie pas Rokhaya Diallo ; mais elle avait été choisie par Marie Ekeland et validée par le Gouvernement. Le revirement sur l'aile de ce dernier est donc lamentable et surtout contre-productif. Même la "vieille politique" n'aurait pas osé agir aussi stupidement. Quant aux arguments exposés par Mounir, le ci-devant Secrétaire d’État au Numérique, ils ont été pour le moins laborieux. Comment se saborder en deux temps et trois mouvements... Je ne suis pas certain que le Secrétariat d'État au Numérique ne soit pas l'heureux gagnant d'un passage de témoin lors du prochain remaniement.
  • Star Wars 8, c'est quand même assez mauvais. Le scénario est indigne, Adam Driver est mauvais, Marc Hamill a raison de critiquer le rôle de Luke, la poursuite spatiale est risible, il y a bien trop de choses qui in fine laissent un sentiment soit de déjà-vu, soit de mauvais, soit d'inachevé, soit de carrément pas démarré.
  • Apple qui bride ses vieux iPhones quand leur batterie vieillit sans avertir les usagers. Mais comment est-il encore possible de faire des erreurs pareilles...

Thursday 16 November 2017

BlueGriffon 3.0

I am insanely happy (and a bit proud too, ahem) to let you know that BlueGriffon 3.0 is now available. As I wrote earlier on this blog, implementing Responsive Design in a Wysiwyg editor supposed to handle all html documents whatever their original source has been a tremendous amount of work and something really painful to implement. Responsive Design in BlueGriffon is a commercial feature available to holders of a Basic or a EPUB license.

BlueGriffon Responsive Design

/* Enjoy! */

Friday 3 November 2017

Responsive Design in BlueGriffon

After nearly two years of failed attempts and revamped algos, it's finally time to shout that Wysiwyg Responsive Design in BlueGriffon is ready to ship, and that deserves a major version number for BlueGriffon :-) It was really, really painful and hard to implement given the fact BlueGriffon is and must remain a Wysiwyg editor able to edit any arbitrary document, whatever its source. It means being always able to add styles as requested by the user : « I want this element to be bold when the viewport's width is between 400 and 500px and I don't care if it's simple or hard because the Media Queries in that document are a real mess, just do it ». Most editors can't do that. They let you create and edit only "Mobile First" or only "Desktop First" media queries, or they're a source editor. With BlueGriffon, even a site that is pure Media Queries' hell like http://cnn.com can be modified...

Responsive Design will be available soon at no extra cost to Basic and EPUB license holders.

/* Enjoy! */

Tuesday 17 January 2017

E0

Long looooong ago, I wrote a deep review of the XHTML 2.0 spec that was one of the elements that led to the resuming of the HTML activity at the W3C and the final dismissal of XHTML 2.0. 

Long ago, I started a similar effort on EPUB that led to Dave Cramer's EPUB Zero. It's time (fr-FR) to draw some conclusions.

This document is maintained on GitHub and accepting contributions.

Daniel Glazman

OCF

  1. EPUB publications are not "just a zip". They are zips with special constraints. I question the "mimetype file in first uncompressed position" constraint since I think the vast majority of reading systems don't care (and can't care) because most of the people creating EPUB at least partially by hand don't know/care. The three last contraints (zip container fields) on the ZIP package described in section 4.2 of the spec are usually not implemented by Reading Systems.
  2. the container element of the META-INF/container.xml file has a version attribute that is always "1.0", whatever the EPUB version. That forces editors, filters and reading systems to dive into the default rendition to know the EPUB version and that's clearly one useless expensive step too much.
  3. having multiple renditions per publication reminds me of MIME multipart/alternative. When Borenstein and Freed added it to the draft of RFC 1341 some 25 years ago, Mail User Agents developers (yours truly counted) envisioned and experimented far more than alternatives between text/html and text/plain only. I am under the impression multiple renditions start from the same good will but fail to meet the goals for various reasons:
    1. each additional rendition drastically increases the size of the publication...
    2. most authoring systems, filters and converters on the market don't deal very well with multiple renditions
    3. EPUB 2 defined the default rendition as the first rendition with a application/oebps-package+xml  mimetype while the EPUB 3 family of specs defines it as the first rendition in the container
    4. while a MIME-compliant Mail User Agent will let you compose a message in text/html and output for you the multipart/alternative between that text/html and its text/plain serialization, each Publication rendition must be edited separately.
    5. in the case of multiple renditions, each rendition has its own metadata and it's then legitimate to think the publication needs its own metadata too. But the META-INF/metadata.xml file has always been quoted as "This version of the OCF specification does not define metadata for use in the metadata.xml file. Container-level metadata may be defined in future versions of this specification and in IDPF-defined EPUB extension specifications." by all EPUB specifications. The META-INF/metadata.xml should be dropped.
    6. encryption, rights and signatures are per-publication resources while they should be per-rendition resources.
  4. the full-path attribute on rootfile elements is the only path in a publication that is relative to the publication's directory. All other URIs (for instance in href attributes) are relative to the current document instance. I think full-path should be deprecated in favor of href here, and finally superseded by href for the next major version of EPUB.
  5. we don't need the mimetype attribute on rootfile elements since the prose of EPUB 3.1 says the target of a rootfile must be a Package Document, i.e. an OPF file... If EPUB 2 OCF could directly target for instance a PDF file, it's not the case any more for OCF 3.
  6. absolute URIs (for instance /files/xhtml/index.html with a leading slash, cf. path-absolute construct in RFC 3986) are harmful to EPUB+Web convergence
  7. if multiple renditions are dropped, the META-INF/container.xml file becomes useless and it can be dropped.
  8. the prose for the META-INF/manifest.xml makes me wonder why this still exists: "does not mandate a format", "MUST NOT be used". Don't even mention it! Just say that extra unspecified files inside META-INF directory must be ignored (Cf. OCF section 3.5.1) , and possibly reserve the metadata.xml file name, period. Oh, and a ZIP is also a manifest of files...
  9. I am not an expert of encryption, signatures, XML-ENC Core or XML DSIG Core, so I won't discuss encryption.xml and signatures.xml files
  10. the rights.xml file still has no specified format. Strange. Cf. item 8 above.
  11. Resource obfuscation is so weak and useless it's hilarious. Drop it. It is also painful in EPUB+Web convergence.
  12. RNG schemas are not enough in the OCF spec. Section 3.5.2.1 about container.xml file for instance shouls have models and attribute lists for each element, similarly to the Packages spec.
  13. not sure I have ever seen links and link elements in a container.xml file... (Cf. issue #374). The way these links are processed is unspecified anyway. Why are these elements normatively specified since extra elements are allowed - and explicitely ignored by spec - in the container?

Packages

  1. a Package consists of one rendition only.
  2. I have never understood the need for a manifest of resources inside the package, probably because my own publications don't use Media Overlays or media fallbacks.
  3. fallbacks are an inner mechanism also similar to multipart/alternative for renditions. I would drop it.
  4. I think the whole package should have properties identifying the required technologies for the rendition of the Package (e.g. script), and avoid these properties on a per-item basis that makes no real sense. The feature is either present in the UA for all content documents or for none.
  5. the spine element represent the default reading order of the package. Basically, it's a list. We have lists in html, don't we? Why do we need a painful and complex proprietary xml format here?
  6. the name of the linear attribute, that discriminates between primary and supplementary content, is extremely badly chosen. I always forget what really is linear because of that.
  7. Reading Systems are free, per spec, to completely ignore the linear attribute, making it pointless from an author's point of view.
  8. I have never seen the collection element used and I don't really understand why it contains link elements and not itemref elements
  9. metadata fun, as always with every EPUB spec. Implementing refines in 3.0 was a bit of a hell (despite warnings to the EPUB WG...), and it's gone from 3.1, replaced by new attributes. So no forwards compatbility, no backwards compatibility. Yet another parser and serializer for EPUB-compliant user agents.
  10. the old OPF guide element is now a html landmarks list, proving it's feasible to move OPF features to html
  11. the Navigation Document, an html document, is mandatory... So all the logics mentioned above could be there.
  12. Fixed Layout delenda est. Let's use CSS Fragmentation to make sure there's no orphaned content in the document post-pagination, and if CSS Fragmentation is not enough, make extension contributions to the CSS WG.
  13. without 3.0 refines, there is absolutely nothing any more in 3.1 preventing Package's metadata to be expressed in html; in 3.0, the refines attribute was a blocker, implying an extension of the model of the meta html element or another ugly IDREF mechanism in html.
  14. the prefix attribute on the package element is a good thing and should be preserved
  15. the rendition-flow property is weird, its values being paginated, scrolled-continuous, scrolled-doc and auto. Where is paginated-doc, the simplest paginated mode to implement?
  16. no more NCX, finally...
  17. the Navigation Document is already a html document with nav elements having a special epub:type/role (see issue #941), that's easy to make it contain an equivalent to the spine or more.

Content Documents

  1. let's get rid of the epub namespace, please...

Media Overlays

  1. SMIL support across rendering engines is in very bad shape and the SMIL polyfill does not totally help. Drop Media Overlays for the time being and let's focus on visual content.

Alternate Style Tags

  1. terrible spec... Needed because of Reading Systems' limitations but still absolutely terrible spec...
  2. If we get rid of backwards compatibility, we can drop it. Submit extensions to Media Queries if needed.

On the fly conclusions

  1. backwards compatibility is an enormous burden on the EPUB ecosystem
  2. build a new generation of EPUB that is not backwards-compatible
  3. the mimetype file is useless
  4. file extension of the publication MUST be well-defined
  5. one rendition only per publication and no more links/link elements
  6. in that case, we don't need the container.xml file any more
  7. metadata.xml and manifest.xml files removed
  8. we may still need encryption.xml, signatures.xml and rights.xml inside a META-INF directory (or directly in the package's root after all) to please the industry.
  9. application/oebps-package+xml mimetype is not necessary
  10. the EPUB spec evolution model is/was "we must deal with all cases in the world, we move very fast and we fix the mistakes afterwards". I respectfully suggest a drastic change for a next generation: "let's start from a low-level common ground only and expand slowly but cleanly"
  11. the OPF file is not needed any more. The root of the unique rendition in a package should be the html Navigation Document.
  12. the metadata of the package should be inside the body element of the Navigation Document
  13. the spine of the package can be a new nav element inside the body of the Navigation Document
  14. intermediary summary: let's get rid of both META-INF/container.xml and the OPF file... Let's have the Navigation Document mandatorily named index.xhtml so a directory browsing of the uncompressed publication through http will render the Navigation Document.
  15. let's drop the Alternate Style Tags spec for now. Submission of new Media Queries to CSS WG if needed.
  16. let's drop Media Overlays spec for now.

CONCLUSION

EPUB is a monster, made to address very diverse markets and ecosystems, too many markets and ecosystems. It's weak, complex, a bit messy, disconnected from the reality of the Web it's supposed to be built upon and some claim (link in fr-FR) it's too close to real books to be disruptive and innovative.

I am then suggesting to severe backwards compatibility ties and restart almost from scratch, and entirely and purely from W3C Standards. Here's the proposed result:


1. E0 Publication

A E0 Publication is a ZIP container. Files in the ZIP must be stored as is (no compression) or use the Deflate algorithm. File and directory names must be encoded in UTF-8 and follow some restrictions (see EPUB 3.1 filename restrictions).

The file name of a E0 Publication MUST use the e0 file extension.

A E0 Publication MUST contain a Navigation Document. It MAY contain files encryption.xml, signatures.xml and rights.xml (see OCF 3.1 for more information). All these files must be placed directly inside the root of the E0 Publication.

A E0 Publication can also contain Content Documents and their resources.

Inside a E0 Publication, all internal references (links, anchors, references to replaced elements, etc) MUST be strictly relative. With respect to section 4.2 of RFC 3986, only path-noscheme and path-empty are allowed for IRIs' relative-part. External references are not restricted.

2. E0 Navigation Document

A E0 Navigation Document is a html document. Its file name MUST be index.xhtml if the document is a XML document and index.html if it it is not a XML document. A E0 Publication cannot contain both index.html and index.xhtml files.

A E0 Navigation Document contains at least one header element (for metadata) and at least two nav html elements (for spine and table of contents) in its body element.

2.1. E0 Metadata in the Navigation Document

E0 metadata are designed to be editable in any Wysiwyg html editor, and potentially rendered as regular html content by any Web browser.

E0 metadata are expressed inside a mandatory header html element inside the Navigation Document. That element must carry the "metadata" ID and the vocab attribute with value "http://www.idpf.org/2007/opf". All metadata inside that header element are then expressed using html+RDFa Lite 1.1. E0 metadata reuse EPUB 3.1 metadata and corresponding unicity rules, expressed in a different way.

Refinements of metadata are expressed through nesting of elements.

Example:

<header id="metadata"
        vocab="http://www.idpf.org/2007/opf">
<h1>Reading Order</h1> <ul> <li>Author: <span property="dc:creator">glazou
(<span property="file-as">Glazman, Daniel</span>)</span></li> <li>Title: <span property="dc:title">E0 Publications</span></li> </ul> </header>

The mandatory title element of the Navigation Document, contained in its head element, should have the same text contents than the first "dc:title" metadata inside that header element.

2.2. E0 Spine

The spine of a E0 Publication is expressed in its Navigation Document as a new nav element holding the "spine" ID. The spine nav element is mandatory.

See EPUB 3.1 Navigation Document.

2.3. E0 Table of Contents

The Table of Contents of a E0 Publication is expressed in its Navigation Document as a nav element carrying the "toc" ID. The Table of Contents nav element is mandatory.

See EPUB 3.1 Navigation Document.

2.4. E0 Landmarks

The Landmarks of a E0 Publication is expressed in its Navigation Document as a nav element carrying the "landmarks" ID. The Landmarks nav element is optional.

See EPUB 3.1 Navigation Document.

2.5. Other nav elements

The Navigation Document may include one or more nav elements. These additional nav elements should have an role attribute to provide a machine-readable semantic, and must have a human-readable heading as their first child.

IDs "metadata", "spine" , 'landmarks" and "toc" are reserved in the Navigation Document and must not be used by these extra nav elements.

2.6. Example of a Navigation Document

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="content-type">
    <title>Moby-Dick</title>
  </head>
  <body>
    <header id="metadata"
            vocab="http://www.idpf.org/2007/opf">
      <ul>
        <li>Author:
          <span property="dc:creator">Herman Melville
(<span property="file-as">Melville Herman</span>)</span></li> <li>Title: <span property="dc:title">Moby-Dick</span></li> <li>Identifier: <span property="dc:identifier">glazou.e0.samples.moby-dick</span></li> <li>Language: <span property="dc:language">en-US</span></li> <li>Last modification: <span property="dcterms:modified">2017-01-17T11:16:41Z</span></li> <li>Publisher: <span property="dc:publisher">Harper & Brothers, Publishers</span></li> <li>Contributor: <span property="dc:contributor">Daniel Glazman</span></li> </ul> </header> <nav id="spine"> <h1>Default reading order</h1> <ul> <li><a href="cover.html">Cover</a></li> <li><a href="titlepage.html">Title</a></li> <li><a href="toc-short.html">Brief Table of Contents</a></li> ... </ul> </nav> <nav id="toc" role="doc-toc"> <h1>Table of Contents</h1> <ol> <li><a href="titlepage.html">Moby-Dick</a></li> <li><a href="preface_001.html">Original Transcriber’s Notes:</a></li> <li><a href="introduction_001.html">ETYMOLOGY.</a></li> ... </ol> </nav> </body> </html>

3. Directories

A E0 Publication may contain any number of directories and nested directories.

4. E0 Content Documents

E0 Content Documents are referenced from the Navigation Document. E0 Content Documents are html documents.

E0 Content Documents should contain <link rel="prev"...> and <link rel="next"...> elements in their head element conformant to the reading order of the spine present in the Navigation Document. Content Documents not present in that spine don't need such elements.

The epub:type attribute is superseded by the role attribute and must not be used.

5. E0 Resources

E0 Publications can contain any number of extra resources (CSS stylesheets, images, videos, etc.) referenced from either the Navigation Document or Content Documents.

Monday 16 January 2017

Livre électronique, qu'est-ce qu'on a raté ?

Studio Walrus vient de poser une EXCELLENTE question sur twitter :

Je livre ci-dessous ma réponse, uniquement valable de mon point de vue, en quelques points :

  1. côté marché, le livre électronique est en général beaucoup, vraiment beaucoup, trop cher. Quand un livre papier est à 18€ et que sa version électronique, que l'on ne peut ni prêter, ni donner, ni léguer, ni partager, est à 14€, le client potentiel a l'impression (pun intended) qu'on se fout se sa gueule et il a totalement raison.
  2. côté technique, l'investissement R&D est bien trop maigre. Je pense en particulier à ce groupe majeur d'édition dont la page d'accueil Web est invisitable sans Flash... Comment espérer dans ces conditions que le Web et EPUB soient bien compris.
  3. EPUB est trop compliqué et les chaînes logicielles éditoriales sont du coup trop compliquées et surtout trop rares.
  4. je visite régulièrement des librairies où je flâne entre les rayons pour trouver mon bonheur. De temps en temps, j'aimerais pouvoir instantanément acheter en version ebook le livre que je tiens entre les mains mais c'est impossible... Les librairies sont faites pour vendre le papier, les sites Web et les devices le livre électronique. L'intégration n'est pas réalisée.
  5. je le répète, l'incapacité à gérer ses livres électroniques comme on gère ses livres papier (prêt, don, leg, partage) est un point bloquant majeur. Et je ne parle même pas de la sauvegarde définitive en local de ses livres électroniques...
  6. les liseuses de qualité restent très, très chères. Prenons l'exemple d'une Kindle Paperwhite. Entre 130 et 200€ si mes souvenirs sont bons. La Kindle Oasis commence à près de 300€ !!! C'est trop cher pour des livres électroniques dont le prix n'est pas très éloigné du prix papier. Il faudrait que les vendeurs de devices adoptent, par exemple, le modèle des imprimantes et de l'encre : machine très peu chère et consommables chers. Mais même comme cela, je crois que des ebooks non spécialisés au-delà de 10€ sont un modèle qui ne peut atteindre le plein succès.
  7. c'est aussi le vieux conflit entre le sustaining market et la disruptive innovation
  8. la lecture sur téléphone mobile est insupportable sur le long terme à cause du format d'écran, la lecture sur tablette est insupportable sur le long terme à cause du poids de la tablette d'une part et de l'autonomie batterie de la machine d'autre part. Seules les liseuses à encre électronique sont praticables.
  9. de nombreux ebooks ne se servent d'EPUB que comme packaging d'un formatage quasi-fixe, sans utiliser toute la puissance du Web. C'est parfois parce que les moteurs de restitution des liseuses sont mauvais, parfois parce que les éditeurs n'ont toujours pas compris comment réellement tirer parti de la technologie, parfois encore parce qu'ils ne veulent surtout pas tirer entièrement parti de la technologie...
  10. la qualité des ebooks n'atteint pas celle du papier. Sans parler des limites de la technologie, j'ai trop souvent vu des images de qualité réduite, des index manquants ou sans hyperliens (connerie sans nom !), j'en passe et des meilleures.
  11. et je n'oublie pas une espèce d'arrogance qui met une majuscule à « culture » quand elle est couchée sur papier

Tuesday 3 January 2017

One BlueGriffon

There are - there were - two BlueGriffons: the Web Editor (aka BlueGriffon) and the EPUB2/EPUB3 editor (aka BlueGriffon EPUB Edition). With forthcoming v2.2, these are going to merge into a single product so they will never be out of sync again. Technically, the merge is already achieved and the next days will be spent on testing/ironing. Licenses for each product will work with that v2.2. BlueGriffon licenses will, as before, enable the commercial features of the product while licenses of the EPUB Edition will enable the commercial features AND EPUB2/EPUB3 editing. We'll also add an upgrade at special cost from the former to the latter. Stay tuned!

BlueGriffon 2.2

Thursday 29 December 2016

Fillon

  • les options politiques de Fillon commencent à foutre la trouille à son propre camp. Avec une telle rupture ultra-libérale, il risque fort de ne pas faire le plein de voix dans son propre camp, Les Républicains. Son considérable score de la primaire, c'est tout d'abord des CSP+ et retraités cathos et ensuite de l'anti-sarkozisme. C'est inextrapolable à l'élection générale.
  • l'aréopage de cathos plutôt réacs (anti-mariage pour tous, anti-avortement, anti-contraception, mais tout ça "à titre personnel" hein...) me fait penser à l'emprise du Tea Party sur les Republicans américains. On se croirait en 1955.
  • cela me fait également penser à la catastrophe induite par le même Tea Party... Décomposition des Republicans, attaques contre la Science, virage religieux et extrême-droitier, et finalement sélection et élection de Trump qui avait dit que s'il devait se présenter, il le ferait sous les couleurs Républicaines car les électeurs de ce parti sont les plus bêtes
  • je pense donc que faute de rassemblement, Fillon est assez loin d'être élu et il a raison de tempérer l'enthousiasme de ses troupes.
  • si Fillon perd, sa carrière sera terminée et les Républicains seront explosés. Ils seront mûrs pour une offensive des derniers Buissonistes, Wauquiez et autres djeunz à la limite de l'extrême-droite. Comme le Tea Party. Les Républicains se rendront également compte, trop tard, que Juppé était mieux placé pour le rassemblement. La Primaire aura du plomb dans l'aile.
  • en 2022, on aura alors deux extrême-droites présentes à l'élection présidentielle. L'une officielle, l'autre cachée.

Friday 25 March 2016

Pub et presse en ligne

Depuis une semaine environ, de nombreux éditeurs de contenus français ont conjointement lancé une campagne anti-bloqueurs-de-pub. Après observation de ses méthodes et de ses effets de bords, je crois pouvoir affirmer que c'est absolument catastrophique. Autour de moi, ceux qui n'utilisaient pas encore un bloqueur de pubs sont en train d'en chercher un ; ceux qui en utilisaient un sont souvent suffisamment avancés pour contourner facilement et rapidement les blocages. Mais revenons un peu sur les sites en question :

TF1 News (LCI)
Soyons très clairs, le site de LCI est une telle daube que je ne suis pas totalement certain que cela soit volontaire et pas un bug : quand AdBlock ou uBlock est actif, pas de feuille de style sur LCI dans Firefox, c'est tellement hideux qu'on n'essaye même pas de désactiver le bloqueur, on se casse direct. Mise à jour: c'était bien ce que je pensais, un bug :-)
Le Monde
Au Monde, on fait dans Ma-Trombine-Partout même si ce n'est pas trop intrusif. Ils ont mis en place une page de relance, que l'on peut bypasser en un click fourni par eux, et que donc tout le monde bypasse en un click... Le choquant, c'est la photo du patron. C'est assez lamentable, ça rappelle les plus belles pratiques de CloudWatt et Numergy, deux épisodes de la grandeur française qu'il vaudrait mieux oublier. Rappelons que Le Monde c'est le site qui veut vous faire payer son mode Zen alors que tout navigateur moderne qui se respecte à un Reader intégré.
Le Figaro
Au Figaro, on fait dans le sournois mais surtout dans l'inutile. Plus aucun article n'est officiellement lisible si on n'a pas payé. C'est tellement stupide que même l'article annonçant pourquoi ils font ça est bloqué !!! Sauf qu'il suffit d'une petite bookmarklet extrêmement simple pour contourner le problème. Allez, je suis généreux, je vous donne la mienne:
javascript:function%20foo(){blurElement(".fig-article-body",0);document.querySelector("a[href*='bloqueur']").style.display="none";};foo()
Le Parisien
Au Parisien, on est vachement plus vicelard car le contenu de l'article est supprimé du document par l'anti-bloqueur de pub. Certes, il suffit d'utiliser l'arme ultime, la désactivation de JavaScript dans les préférences du brouteur, pour accéder à la totalité du contenu normalement. Mais il reste que leur technique est très con : on ne voit plus rien, on n'a pas envie de revenir et finalement on va ailleurs.
Libération
S'il y a un quotidien national qui a depuis des lustres des soucis de pognon, c'est Libé. Et bien je n'ai pas trouvé d'anti-bloqueur de pub sur Libé. Rien pour l'instant. Bravo, ils méritaient d'être cités.
L'Équipe
L'Équipe a choisi un format intermédiaire entre Le Monde et Le Parisien. C'est une page qui s'affiche en permanence tant que vous n'avez pas déclaré votre abonnement ou désactivé le bloqueur. Comme pour Le Parisien, la désactivation de JavaScript casse tout ça en deux coups de cuiller à pôt.

Bon, je pourrais continuer comme ça longtemps, de nombreux autre sites participant peu ou prou à cette campagne complètement stupide et contre-productive qui n'est prévue pour  durer que quelques semaines (si, si...). Je me marre doucement à lecture de phrases comme « nous devons pouvoir compter sur les revenus de la publicité ». Rappelons quelques chiffres intéressants... Source : tout simplement la Cour des Comptes...

Titre de presse

Montant annuel de subventions (moyenne sur la période 2009-2011) - En €

Diffusion totale France + Etranger (moyenne annuelle sur la période 2009- 2011)

Montant subvention / exemplaire diffusé (moyenne sur la période 2009-2011) - En centimes

MONDE (LE)

18 465 277

97 809 817

19

FIGARO (LE)

17 217 154

101 343 030

17

OUEST FRANCE

15 784 440

258 956 732

6

CROIX (LA)

9 988 388

31 656 889

32

LIBERATION

9 908 617

36 533 590

27

TELERAMA

9 411 822

31 935 825

29

AUJOURD'HUI EN FRANCE

9 331 562

61 786 183

15

NOUVEL OBSERVATEUR (LE)

7 800 161

27 071 314

29

TELE 7 JOURS

7 279 547

76 126 212

10

HUMANITE (L')

6 761 434

14 219 917

48

SUD OUEST

6 260 812

106 720 006

6

EXPRESS (L')

6 232 242

27 395 244

23

NOUVELLE REPUBLIQUE DU CENTRE

5 645 242

61 530 368

9

VOIX DU NORD (LA)

5 445 430

95 019 897

6

PARIS MATCH

5 151 418

35 760 764

14

DEPECHE DU MIDI (LA)

5 014 820

68 764 053

7

ECHOS (LES)

4 513 559

30 785 702

15

POINT (LE)

4 501 245

22 151 130

20

DAUPHINE LIBERE (LE)

4 464 330

90 178 748

5

TELE STAR

4 451 357

60 578 404

7

TELE LOISIRS

4 390 415

56 121 753

8

DERNIERES NOUVELLES D'ALSACE (LES)

4 035 733

60 618 655

7

PROGRES (LE)

3 868 585

81 019 183

5

PETIT QUOTIDIEN (LE)

3 800 067

ND

ND

PARISIEN (LE)

3 681 247

102 203 217

4

TELE Z

3 669 232

81 667 765

4

TÉLÉGRAMME

3 555 598

73 217 679

5

ELLE

3 413 233

21 290 708

16

TELECABLE SATELLITE HEBDO

3 390 880

32 635 825

10

MONTAGNE (LA)

3 216 097

67 572 258

5

MON QUOTIDIEN

3 139 538

ND

ND

EST REPUBLICAIN (L')

2 999 986

56 860 210

5

PELERIN

2 849 399

12 037 997

24

PROVENCE (LA)

2 783 573

50 424 722

6

FEMME ACTUELLE

2 749 581

49 857 491

6

NICE-MATIN

2 727 086

38 638 289

7

CHALLENGES - LE NEWS DE L'ÉCONOMIE

2 384 145

10 810 088

22

MIDI LIBRE

2 247 553

53 377 189

4

TELE POCHE

1 881 812

28 912 604

7

COURRIER DE L'OUEST

1 853 381

35 940 335

5

La presse ne va donc pas réussir à me faire chialer avec sa pub en ligne ! On n'attire pas le chaland avec des vitrines opaques ! Et tant que la presse française se contentera d'être à 80% de la recopie de dépêches d'agence, typos et fautes de grammaire et orthographes comprises, le public ne lira pas ses contenus plus que ça. 83% des français, selon Le Figaro lui-même dans son édition du 10 Mars 2016, ne supportent pas la pub en ligne. Quelle cohérence avec la campagne en cours...

Pendant ce temps, la pub en ligne, ça salit les sites web, c'est intrusif, ça prend de la mémoire, de la bande passante, du temps, de l'espace d'écran. Elles tombent presque toujours à plat, ne me concernent pas, ne m'intéressent pas, me gênent. Et le pire c'est que je paye pour les recevoir.

Monday 9 March 2015

e-junkie's mega FAIL on EU VAT

I have been using e-junkie for my sales of BlueGriffon add-ons and BlueGriffon EPUB Edition for years. Quite happily until recently. But this changed and I am now extremely upset by the way e-junkie dealt with the recent changes in VAT in the European Union.

Until the 31st of december 2014, using them to sell a downloadable product world-wide from a business inside the EU was easy. You only had to set your price without VAT and check a checkbox to apply VAT to your sales to european customers. One single price, one single sales button and shopping basket, e-junkie handled your VAT rate based on your business's country.

Since the 1st of january 2015, the EU rules have changed. A bit painful but certainly not unbearable: the VAT rate to apply to european customers is not based on the business's location any more but based now on the customer's location.

In short, it means that in 2014 e-junkie was determining the VAT rate to apply from an array of 27 values looking for the business's country. In 2015, the value should be retrieved from the customer's value, something that is perfectly doable for e-junkie since it can, at the shopping basket level, require the user to enter his/her country of residence and even the zipcode.

But no, e-junkie declined to do so and completely changed its behaviour overnight. Starting 01-jan-2015, the unique price you set in e-junkie for a product INCLUDES VAT for european customers...

E-junkie leaves a few ugly options to european businesses: have one sales button for EU customers and one for others (urgghhh...), offer a discount code to non-EU customers and other ugly solutions of that kind. E-junkie say they must validate the address and that can be done only after the bank/paypal has accepted the sale or something like that. That argument is not acceptable, since all european users of e-junkie perfectly know some european users cheat and give for instance a US address for downloadable purchases, to avoid paying VAT. It cannot be worse. And the argument that e-junkie had to do this or that does not stand, e-junkie is not a european company and does not have to comply with European Directives, they're outside of the European jurisdiction.

E-junkie has left all its european customers in limbos with respect to EU VAT. It really looks like they did not want to touch their code and UI - that have not changed in years. They already had the array of 27 VAT rates in the EU, and the VAT was  added only after the shopping basket had verified both the customer and the business were in the EU. Their refusal to tweak their code - and as a programmer I cannot believe the change was complex - is a true shame.

Let me state it clearly: this is a failure of a rarely seen magnitude and I am now looking for an alternative to e-junkie dealing better - dealing at all should I say - with EU VAT rates. I have recommended e-junkie to a gazillion of EU businesses. I am now recommending them to flee and find another shopping basket manager.

If you have a suggestion for an alternative to e-junkie, please leave a comment? Thanks!

Monday 10 November 2014

Announcing Quaxe, native desktop and mobile apps from html5 and Haxe

My technical world changed a bit recently with a few events that directly impacted me or the activities of my company, Disruptive Innovations:

  1. Mozilla shows increasing signals that the future of XUL as a platform for embedders like my company is not bright. XULRunner has many users around the world but it's not part of the roadmap any more, unfortunately. I won't discuss here their corporate strategy. My applications BlueGriffon and BlueGriffon EPUB Edition being based on XULRunner and my business being largely based on them, it would be a bit foolish to avoid looking for an alternative...
  2. I have not found a single solution allowing me the flexibility of XUL+JavaScript in native desktop and/or mobile cross-platform apps; there are hybrid solutions for mobile, almost nothing for desktop in a cross-platform fashion.
  3. the two only potential solutions, Qt on one hand and AdobeAir on the other, do not satisfy me for the following reasons:
    1. Adobe Air is nothing near native,
    2. Qt is a big and powerful beast, hard to learn and master.
  4. Apple's Swift looks nice and powerful but cross-platform is not a word available in the Apple ecosystem.
  5. I have discovered Haxe. Haxe is an open source toolkit based on a modern, high level, strictly typed programming language, a cross-compiler, a complete cross-platform standard library and ways to access each platform's native capabilities. If you know ECMAScript and/or Java, you'll find Haxe fun and easy to master. I started playing with it and fell in love with its beauty, simplicity, and the large numbers of packages available.

In such cases, I take a few sheets of paper and start writing ideas. I have put a lot of ink on a dozen of originally blank pages and tested a few designs. I want, I need a very simple, flat learning curve way of writing standalone cross-platform native apps. And if the existing ecosystem can't give me such a tool, well, I do what I always do in such cases: I write my own... So I started writing my own environment for native desktop and mobile applications.

My requirements were the following ones:

  • all UI specified in html5, of course, with the help of role attributes... Maybe I'll add a XUL-like language too just for migration purposes.
  • UI styled by CSS, eh what did you expect? :-)
  • resulting native UI
  • code in Haxe of course compiled to native!!! Assets not trivially readable like with JS...
  • trivial embedding of Haxe-based gaming frameworks
  • trivial embedding of a browser instance (Blink, Servo, etc...). When I say trivial, I really mean it. If you've played with CEF, you probably understand that this is not what I mean.
  • no ugly hacks to deal with OSX menus or Windows icons.
  • dynamic UI changes based on DOM manipulation just like in XUL
  • very simple localization
  • a "Hello world" button in a native window should be a one-minute thing. No big environment to install, no complex setup, no new IDE to learn. You know html5? Just put a <button> inside a new document's <body> in your favorite code editor, open a terminal and type "quaxebuild". Done, you have a native app in hands, ready for distribution.

The result will be Quaxe. Native desktop and mobile applications with native UI from html5 and Haxe.

I am glad to share with you the first demo screenshot below. The app was launched through a open bin/mac/MyFirstTest.app command line on OSX. Just to be very clear, there is NO BROWSER WINDOW in the screenshot below. The app is only a native resizable main frame containing a native button. It's specified in html5, you can access and modify its DOM but it's not your regular browser, there is no Blink, Gecko, Servo or any Web rendering engine inside. There is no common runtime either, à la Adobe Air. It's very, very lightweight despite of having to implement a xml parser, DOM4, a CSS parser, the whole CSS cascade and an OM for the widgetry.

First test screenshot

As you can see above, it's already taking shape. If you're an investor and you're interested, please do not hesitate to contact me at your convenience. Writing native apps is going to be way cooler and simpler than it is now, that's a promise.

Monday 15 July 2013

Yay!

Spend three years working like crazy on a project. Slowly start selling and making a revenue stream. Be on the front line almost 365 days per year, provide people all around the globe with support, tirelessly. And then the following tweet appears:

BlueGriffon EPUB Edition mentioned as one of the 3 EPUB editing environments recommended during the American Association of Physics Teachers' conference

BlueGriffon EPUB Edition mentioned as one of the three EPUB editing environments recommended during the American Association of Physics Teachers' summer meeting, along with OpenOffice and Microsoft Word... And in second position :-) Wow. Wow :-)

Saturday 20 April 2013

Boston

I just heard journalists on TV say the arrest of Tsarnaev was a big success for the FBI. Sorry, no. This is a big failure for the FBI. I also heard President Obama say the question is why he did that. Sorry, no, this is not what is important for the future. Why two american citizens (correction: one American citizen and one permanent resident) became terrorists without the FBI detecting and arresting them before they act is the important question. A similar problem occurred here in France with terrorist Mohamed Merah. French press reports their mother was questioned at least once in the past about one of the brothers visiting djihadist web sites... If this is true, they were already flagged and FBI failed stopping them; some heads are going to fall at the FBI and a deep reorg will follow.

It has to be noted too that a city lockdown for hunting one single wounded 19 years old man is a quite drastic situation almost nobody complained about. I understand the circumstances. But 9,000 policemen and soldiers who found their suspect only because a citizen found him in his boat also seems a rather pathetic result for the police/FBI/SWAT/army.

I also heard Carmen Ortiz is now in charge of the Tsarnaev case. Wait. Oritz? The Carmen Ortiz mentioned for pursuing the case against Aaron Swartz, right? Urgh.

Update: Republican US Senator Lindsay Graham calls for extreme measures in this case. I find this lame, anti-democratic, catastrophic, a true shame.

(Comments closed, I have no time to moderate blog trolls today)

Thursday 4 April 2013

15 years of Mozilla, my Webstory

  • started working with SGML in 1991 at Grif, implementing the first CALS tables (that eventually gave HTML tables) wysiwyg editor. Worked with Jean Paoli and Vincent Quint. Met Tim Berners-Lee. Started working on stylesheets (the P language in Grif).
  • 1994: working at Électricité de France, one of the first european customers of the recently released Netscape's browser. We bought thousands of licences, Netscape was not even incorporated here yet.
  • 1998: noticed the Mozilla source code release while working for Électricité de France; was already a CSS WG member. Downloaded code to look at it but too much work to really do it well. Met Vidur, Peter Linss, Angus Davis, Troy Chevalier
  • 1998: Peter Linss makes a referral about me at Netscape but a hiring freeze blocks the process
  • june 2000: I am available for hire and Pierre Saslawsky makes another referral about me at Netscape
  • september 2000: interviews in Mountain View with the Layout, Email, AIM and Editor teams. Moments with Vidur, Beth, Clayton and a few others I will never forget.
  • november 2000: hired by Netscape in the editor team, spending a month in Mountain View, starting diving into editor's code with invaluable help from jfrancis, kin, brade, cmanske, beppe, sfraser and mjudge. First bug fix in the style engine code, memory footprint-related. The day I arrive in MV, there's a barbecue party for the release of Netscape 6.0; everyone including me has a NS6 jacket and a trophy, some have a bonus envelop. I discover, to my greatest pleasure, that Netscape is a company that knows how to say thank you. Hixie is an intern at Netscape doing QA, Hamerly and I turn on the lights at 8am, Scott Collins sleeps every night in the cubicle next to mine, I am almost the only one using the espresso machine, there are baby clothes at the Netscape store for my first son and when I refused to eat at Denny's cmanske replied « I knew you had "class" ».
  • december 2000: peterv and I are the only developers at Netscape France. We send a mail to the whole team to introduce ourselves. Only two persons come to say hello, Tristan Nitot and an HR person. We're in a windowless corner of the offices, with sales people shouting on the telephone all the time.
  • 2001: representing Netscape in the CSS WG, helping Beth in the HTML WG but XHTML2 seems to me a gigantic strategic error and I say it in public. When asked why I work from France for Netscape US, I reply « because they do beautiful things ». During a crepes dinner with Tantek in SF, he challenged me to implement :not() in Gecko; flying to San Diego the next day and spending the night on it, showing working implementation to Attinasi the next day. Adding CSS to the editor. Showing Syd Logan how to greatly simplify the IM conversation view with just a dash of CSS.
  • 2002: all of AOL-TimeWarner France including Netscape moves to a new building in Neuilly sur Seine. Cool times, superb corporate restaurant. Many good and sometimes hilarious memories.
  • october 2002: wrote the Small Screen Rendering stylesheet that will be used in Minimo. AOL wants to patent it even if I warn them there is prior art from Opera.
  • december 2002: reorg at Netscape. Many good friends are gone. I'm myself in complete limbos, spending a few awful days and nights.
  • Q1 and Q2 2003: working on the Anvil project, a new editor at AOL will never release. I also start Composer++, a standalone revamp of the Netscape editor that will eventually become Nvu.
  • february 2003: at FOSDEM in Brussels; meet Mozdev's Brian King (of zibble fame) and Pete Collins.
  • 15-jul-2003: laid off by AOL with the remains of Netscape. Leaving Netscape offices only the 2nd of august. My collection of Netscape t-shirts is orphan.
  • september 2003: meeting with Tristan Nitot and Peter van der Beken in Peter's flat, my two Netscape colleagues from the Paris office. I suggest we start together a company making products based on the open source Mozilla. I suggest "Disruptive Innovators" as a company name. Tristan and Peter skeptical, Tristan would prefer launching a european Mozilla foot.
  • 13-oct-2003: Disruptive Innovations is incorporated... Pete Collins and Brian King gave my name to Lindows' CTO who was looking for someone to work on a Gecko-based editor. I start contracting for Lindows immediately, the result will become Nvu.
  • from 2003 to now: promoting Mozilla and Gecko all over the place. Contracted for many companies and academia around the globe, doing xulrunner-based apps or add-ons to Firefox, some public and some proprietary on intranets.
  • august 2006: Disruptive Innovations joins W3C.
  • so many conferences, seminars with other Mozillians I can't count them all. Wonderful time in Barcelona with Chofmann, epic dinner with Rey Bango and Pike in Berlin, cool week-end in Berlin with Robert Nyman. Gave one of my contracts to Paul Rouget.
  • 2008: inviting Mitchell Baker as a KeyNote speaker to the Netexplo Forum under the golden ceilings of the French Senate.
  • 2010: started working on my next-gen wysiwyg Mozilla-based editor. Rewritten from scratch. First investor in april.
  • 10-may-2011: release of BlueGriffon 1.0.
  • 2013: Disruptive Innovations is almost ten years old, what a ride. I'm still spending most of my time on Mozilla code and technologies, editors and Web Standards. I released the only Wysiwyg cross-platform native EPUB editor on the market, and it's of course Mozilla-based.

More details on how got I involved with Mozilla and Why I work for^H^H^Hon Mozilla. I'm still here, and I just contributed a patch to the editor to fix a regression in the table editor. Wishing a long life to a community that changed mine!

Thursday 28 March 2013

Software

Retired software section...

  • NVu, once the leading Open-Source Wysiwyg cross-platform Web editor based on Gecko
  • CSSize, a batch tool to transform (think XSLT) HTML documents based on CSS-like syntax.
  • Meuf, one of the very first (right after Nathanael Borenstein's ANDREW, AFAIK...) Mail User Agents to fully implement MIME, multiple charsets, inline audio and video, X-Faces and more.
  • HTTPtool, a file transfer app (ftp-alike) over HTTP GET and PUT
  • a unofficial patch for the CERN v3.0 httpd server adding User Defined Error Messages

Tuesday 26 February 2013

EPUB NG

Following the W3C Workshop on electronic books in NYC two weeks ago, Dave Cramer (Hachette), Hadrien Gardeur (Feedbooks) and myself (Disruptive Innovations) have started a new Google Group called EPUB NG. Don't misunderstand us, it's called EPUB New Generation only because we needed a name and we start from what's available on the market right now, EPUB3. We're not forking, we're not doing a secret thing, we only needed a space where we could start discussions about the largest issues I found in current specs and what Dave recently called EPUB Zero.

So if you're interested in throwing ideas about a new, simpler, lighter format for electronic books more in line with W3C standards and Web habits, start reading us and ping one of us to request an invite. Please detail your affiliation and background in the electronic books' space? Thanks!

Monday 21 January 2013

BlueGriffon 1.6 ETA

Tomorrow, european time, if all goes well. Next monday for BlueGriffon EPUB Edition v1.6.

Tuesday 30 October 2012

EPUB3 fun #12

The EPUB 3 Content Documents spec reads:

The EPUB 3 CSS Profile includes @media and @import rules with media queries as defined in the Media Queries [MediaQueries] specification.

But it says nothing about stylesheets linked through a <link> element and Media Queries ! So, normatively per EPUB 3.0, <link> elements with Media Queries are currently forbidden...

- page 1 of 4