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

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

BlueGriffon™

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 !

UnitTest'O'Meter
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 !

UnitTest'O'Meter
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.

UnitTest'O'Meter
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.

UnitTest'O'Meter
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.

UnitTest'O'Meter
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) :-)

UnitTest'O'Meter
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 http://sources.disruptive-innovations.com/etna/trunk. 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 ;-).

vendredi, mai 5 2006

First launch of Etna with gecko 1.8

This is a very first version of Etna, based on Xulrunner 1.8.0.1 sources. For the moment, only the chrome works. I haven' t built the validator or others of my components, and my patch on the libeditor, to add the xml version of nsEditor, is not applied. But i hacked some file of the mozilla build system (configure.in, allmakefiles.sh etc.) and i think i have done a clean job on it now (compared to my previous work with gecko 1.7 sources). So now i can set in my mozconfig file :

mk_add_options MOZ_CO_PROJECT=etna
ac_add_options --enable-application=etna

(well, etna is not in the mozilla repository, so perhaps the first line is useless, i'm not sure..). And there is now this flag :

 ac_add_options --enable-xml-editor

So the build will contain the xml version of the libeditor. It is enabled by default for Etna, and this could be used for other projects :-)

jeudi, avril 27 2006

Etna 0.3.1

I released a new version of Etna, our wysiwyg XML editor. This 0.3.1 version fixes tons of bugs on the RelaxNG parser and on the validator. In fact, i rewrote my test case engine, to use the Jame Clark's RelaxNG test suite. With this test suite, included in a new version of my RelaxNG validator extension, i discovered many bugs and fixed them. Another consequence, is that i finished to implement all the Relax NG patterns, so the support of RelaxNG is complete. However, there are still few minor bugs, but Etna 0.3.1 is more stable than 0.3...

There isn't any new feature, except that you can provide now your own datatype library. I will write a documentation on that.

I'm working now on the UI, on the editor API (for the extensions). I will work also on a new web site with a forum, and i will perhaps begin a migration to Gecko 1.8.

lundi, février 27 2006

Docbook files

In order to test the internal validator of Etna with the docbook schema, i would like to find many docbook files (normal or huge, but not some little examples). Please tell me if you have got such files or if you know where to find some :-) Thanks.

- page 1 de 2