Aller au contenu | Aller au menu | Aller à la recherche

lundi, mai 2 2016

Release of SlimerJS 0.10

I'm pleased to announce the release of SlimerJS 0.10!

SlimerJS is a scriptable browser. It is a tool like PhantomJS except it is based on Firefox and and it is not (yet) "headless" (if some Mozillians could help me to have a true headless browser ;-)...).

This new release brings new features and compatibility with Firefox 46. Among of them:

  • support of PDF export
  • support of Selenium with a "web driver mode"
  • support of stdout, stderr and stdin streams with the system module
  • support of exit code with phantom.exit() and slimer.exit()
  • support of node_modules with require()
  • support of special files (/dev/* etc) with the fs module

This version fixes also many bugs and conformance issues with PhantomJS 1.9.8 and 2.x. It fixed also some issues to run CasperJS 1.1.

See change details in release notes. As usual, you can download SlimerJS from the download page.

Note that there isn't anymore "standalone edition" (with embedding of XulRunner), because Mozilla ceased to maintain and build XulRunner. Only the "lightweight" edition is available from now, and you must install Firefox to run SlimerJS.

Consider this release as a "1.0pre". I'll try to release in few weeks the next major version, 1.0. It will only fix bugs found in 0.10 (if any), and will implement last few features to match the PhantomJS 2.1 API.

lundi, août 18 2014

Release of SlimerJS 0.9.2

Few days ago, I released a minor version of SlimerJS, my scriptable browser based on XulRunner: SlimerJS 0.9.2.

If you discover my project: this is a browser which is controlled by a script, not by a human. So it has no user interface. In fact this is a browser like PhantomJS, which proposes the same API as PhantomJS. But it is based on Gecko, not on Webkit. See my previous post about the start of the project.

This new version fixes some bugs and is now compatible with Gecko/Firefox/Xulrunner 31.

Next big work on SlimerJS:

  • fix last issues that prevent GhostDriver to work well with SlimerJS
  • support Marionette(
  • try to implement remote debugging, to allow to debug your script from Firefox Dev Tools
  • try to have a true headless browser (so to have a browser without visible windows)

Help is welcomed, See you on Github ;-)

lundi, juillet 15 2013

Tada! Here is SlimerJS!

Once upon a time, on the december 10th, 2012, I discovered CasperJS and PhantomJS and this was the beginning of a great history....

Lire la suite...

dimanche, avril 1 2012

jsDatasource, a component for XUL templates

I just released publicly a new version of a component : jsDatasource.

This component allows to use javascript objects as datasource for XUL templates. You can use it in your own extension or XUL applications. It becomes easy to use XUL templates with js datasources!

I started this component in 2009, for a software, ZoomCreator, when I worked for Zoomorama. Even if it was written under a free licence, I didn't release it at this time (well, I had so much work..). And for a recent customer project, I need it with some improvements, like the support of recursion or the support of sorting. So I improved it, and I just open a public repository :-)

I hope it will help some XUL developers :-)

lundi, janvier 11 2010

What's wrong in Mozilla's plan for Firefox ??

I just read the blog post of Mike Connor, Firefox's lead engineer. And I'm depressed.

Lire la suite...

jeudi, mai 28 2009

Commit access on Mozilla repositories

After 5 years of Mozilla hacking, and some patches accepted and landed into the Mozilla trunk, I finally asked yesterday an access to commit on Mercurial repositories of Mozilla. And this request has been granted ! Youhouuu !

For me, it's a sort of gratefulness from the other contributors :-) Thank you Mozilla !

mardi, septembre 30 2008


This is now official, the successor to Nvu is BlueGriffon™.

Daniel has already done a lot of work on it, but we are not ready yet to release a first public version. However, you can take a look at our svn repository for the source code.

Of course, I will work on this project :

  • I will develop some patches on Gecko to improve the editor. I began with a big revamp of the serializer, so XHTML will be much better serialized
  • I will work on the web front-end : software update, web tools, etc..

samedi, août 2 2008

Thank You Mozilla !

The Summit2008 was a great event for me. I was very enjoyed to meet many contributors. Behind a keyboard, it is not obvious to realize how the Mozilla project has become huge, how it has become very important for the web, and how the community is so big now. This is this kind of event which opens our eyes on the realities of the project.

Thank you Mozilla for this Summit! Thanks to Mitchell Baker to lead the project with so much contagious enthousiasm!

Special thanks too to Dan Portillo and his staff, for the organization of the summit. It was very well organized despite the landslide. All was great!

mardi, juillet 10 2007

New validator progress 20070710

My new prototype of a relaxng parser/validator in javascript is finished :-). It passes all tests !

schema parsing document validation
passed tests 373 (100%) 529 (100%)
failed tests 0 (0) 0 (-110)
total 373 529

(Previous status).

I will make other tests with my own tests suite, and I will begin to develop the C++ version.

lundi, juillet 9 2007

New validator progress 20070709

My new relaxng parser pass now all tests !

schema parsing document validation
passed tests 373 (100%) 419 (79%)
failed tests 0 (-39) 110 (-0)
total 373 529

(Previous status).

I'm going to finish the validation part and will make certainly little optimizations (for the moment, all tests take 27.7 seconds on my PC).

jeudi, juin 28 2007

New validator progress 20070628

My new RelaxNG parser is almost finished. I still have to implement the checking of string sequence restrictions. I didn't really work on the validator it self.

Here is the current status of tests.

schema parsing document validation
passed tests 334 (89%) 419 (79%)
failed tests 39 (-63) 110 (-24)
total 373 529

(Previous status).

mercredi, juin 6 2007

New validator progress 20070606

New improvements on the relaxng parser and on the validator. Here is the current status of tests.

schema parsing document validation
passed tests 271 (72%) 395 (74%)
failed tests 102 (-58) 134 (-150)
total 373 529

(Previous status).

jeudi, mai 31 2007

Bad syntax in Javascript 1.8

Mozilla developers improve day after day Javascript. It's a good thing to improve a language. But I think those who made this improvements in Mozilla should stop smoking the carpet right now.

Improvements in javascript 1.6 (Firefox 1.5) were good, although I'm not a fan to pass a callback function to each array function. I would prefer to have a real support of array with for each statement like the foreach statement in PHP instead of to have this for each statement which return not only elements of the array, but all all the properties of the array object. However E4X was a good improvement in Javascript 1.6.

They began to do crazy things with javascript 1.7 (Firefox 2).

Generators can be useful, but conceptually, it begins to introduce some things that can be disruptive for a "normal" web developer (you know, one of these thousand of thousand web developers who made millions of web site). And it is difficult in a complex function to distinguish a normal function from a generator because the difference is only the use of this small keyword yield.

Iterator is a good thing, but I don't know why we should catch an exception to know when the iterator stops. That sucks. (Interface like PHP iterators is better IMHO).

The goal of array comprehensions is to make easy initialization of array. It would be a good thing if the syntax didn't sucks too.

var ten_squares = [i * i for (i in range(0, 10))];
var evens = [i for (i in range(0, 21)) if (i % 2 == 0)];

Sorry but it is unreadable. Good luck for those who will maintain such code. Look at this example pointed by John that we can do in Javascript 1.8 (Firefox 3):

dict([s, [u for (u in unitlist) if (u.contains(s))]] for (s in squares))

I think this is a good example of unmaintainable code. No specific keywords, no really separators. I'm sure it will be a nightmare for maintainers.

In his post, John Resig shows other things like this horrible "expression closures" feature. I don't see any advantage to write function(x) x * x instead of function(x) { return x * x; }. It is less comprehensive, less readable.

I think only nerds will play with this "features", and "normal" developers and geeks will continue to use javascript 1.5. There is an evidence : in all javascript file of Firefox 3 and other Mozilla products in the trunk, i don't find any use of let, yield or other features of Javascript 1.7.

Glazou gave me only one advantage of this new features : web/XUL developers won't have to use JS obfuscators...

mercredi, mai 30 2007

New validator progress 20070530

I continue to work on my new validator. Here is the current status of tests.

schema parsing document validation
passed tests 213 (57%) 245 (46%)
failed tests 160 284
total 373 529

(Previous status).

vendredi, mai 25 2007

New validator progress 20070525

I worked hard on the prototype of my new validator. The architecture of the RelaxNg parser is nearly finished, and it uses the sax parser of Mozilla. I'm happy of this new architecture because it's cleaner, I don't have to use ugly hacks to do some things since it is less complex...

Here are current results of my "UnitTest'O'Meter" showed in a little app I made to launch James Clark's test suite (little xulrunner application based on the RelaxNG Validator Extension for Etna) :-)

schema parsing document validation
passed tests 168 (45%) 138 (26%)
failed tests 205 391
total 373 529

update: sorry, there aren't 286 documents to test, but 529. I updated the table.

vendredi, mai 18 2007

Etna progress 20070518 : rewriting the validator

Since it is impossible to fix some few bugs in the current RelaxNg validator in Etna, I decided to rewrite it and use an other algorithm. The future algorithm might ask more resources but it will be more robustness and could valid in all cases (in theory :-) ). I began the development of a prototype in javascript. For the moment it passes 15% of tests of James Clark's tests suite, but first results are encouraging. At the end of this development, I will develop a version entirely in C++.

By the same time, as I explained in a previous post, I rewrite the RelaxNG parser and use now the sax parser component which exists in Gecko since 1.8.1 version.

dimanche, mai 13 2007

Why XulRunner as a Mozilla product ?

The web nowadays is not only distant html sites, it is also rich internet applications. We can consider desktop applications as rich internet applications because more and more of this desktop applications are based on web services, are linked intimately to the web, to the internet. And then more and more technologies allow to merge the web and the desktop. So in the future, Firefox will represent only a part of the purpose of the web. So I think the development of a platform for Rich Desktop Application follow the goal of Mozilla Fundation : maintaining the choice and the innovation on the Internet.

And because XulRunner is a great platform for this kind of application, and because the new web shouldn't fall only into the hand of Microsoft (through Silverlight,Xaml...) and Adobe (through Apollo, Flex...), Mozilla should invest more on XulRunner. So, as Daniel said:

Mozilla, please, turn XULRunner into a Mozilla product !

vendredi, mars 23 2007

Etna progress 20070323

  • fixed bug 159 : Script of test suite was too long
  • closed bug 115 : no more segfaults with the trunk version, when parsing CNXML 0.5 schema
  • Worked on bug 162 : impossible to edit elements on which a default blank content is defined in the schema (regression)
  • New public repository. It contains only the source code of the current version i'm working on (future 0.4a). And there isn't any previous change : i didn't migrate the history. But of course, it will contain futur changes :-) This is a subversion repository (i'm tired of CVS). To do a checkout : svn checkout Then follow instructions of the README.txt file, to build Etna.

mardi, mars 13 2007

Etna progress 20070313

Between two customer projects, I'm working on Etna. The future version, Etna 0.4, will be based on Gecko 1.9/Xulrunner 1.9. Each day, I synchronize the source code of Etna with the Mozilla trunk. Here are some bug fixes and improvements since few months:

  • Almost all the regression bugs which appeared during the gecko 1.9 port, are fixed. This port is a hard work because
    1. The source code of Etna 0.3.1 is based on Gecko 1.7. Many things have changed between Gecko 1.7 and 1.9. Last year I produced an experimental version based on Gecko 1.8/XulRunner 1.8, but I decided to migrate to gecko 1.9, because of all big changes in the Mozilla trunk.
    2. the DOM implementation of Gecko 1.9 has improved and it respects now the DOM Level 3 specification. So I had to find and modify all code which use old behaviors of the DOM Level 2 implementation. For example, see bug 140, bug 141..
    3. the build strategy has changed in gecko 1.9 : I tried to build my components as external components, not into the new big library "libxul". But my code uses too many internal API of Gecko, and it seems that the libxul exports less and less internal API. However, I had to change many things (headers, makefile options etc..) to build my components into the libxul (and when you see that the documentation about the build system is closed to nothingness or is deprecated..).
    4. Fortunately, the source code of the mozilla editor (libeditor) have not been improved very much (just bug fixes, improvements about accessibility, or IME), so I didn't have much work on parts related to this libeditor.
  • I fixed other bugs on the RelaxNG parser, the validator and the UI :
    • bug 146 : the validation of time datatype was wrong
    • bug 155 : problem during the namespace setting on a new document
    • bug 151 : there wasn't dialog when we closed the window and the document was modified.

Now the gecko 1.9 port is almost finished, I will try to fix old bugs before doing improvements into the UI or the API. I think the 0.4 version will be only a maintenance release with few improvements and of course a better rendering engine (gecko 1.9). The 0.5 version will have new editing features and a better validator. For example, I plan to use the new sax parser API of gecko to read relaxNG schema, instead of loading a DOM : so the relaxNG parser will be faster and will use less memory. And finally, the 0.6 version will have many improvements on the user interface.

No date for all this release. I will publish a zip of my current source code.

I will try also to publish such post more often :-).

mercredi, mai 24 2006

Gecko 1.8 migration done

I finished the work on the gecko 1.8 version of Etna. There are still few little issues but it works well.

screenshot of Etna 0.4a

I also finished implementing all XMLSchema datatypes. I'm going now to improve the API for extension author, to improve the editor component (support of semantics attribute in schemas, support of the enter key etc..).

Update: of course, this version of Etna is a XulRunner application ;-).

- page 1 de 2