July 15, 2007

Verbosio: First Look

There's an old saying in the open-source community: "Release early, release often." I confess now that with Verbosio, my prototype for an extensible XML editor, I've done neither. I have put two years into it, and I have little to show for it - just some nice screenshots.

Until today.

A few days ago, I asked for help reducing testcases. Jesse Ruderman pointed out that I hadn't given anybody a real testcase to reduce. Neil Rashbrook pointed out in response that Verbosio was too big for Bugzilla. In essence, both were right.

So I spent the last two days re-arranging the Verbosio repository, in order to provide a "snapshot" of Verbosio which people could reference in Bugzilla. It goes beyond that, however: it's also a snapshot of the Verbosio code base which anyone with a XULRunner build (1.9a6 or trunk) can experiment with. It's not just for filing bugs against Gecko, in other words.

It's a chance to look inside my head, and see a piece of the vision I've been dreaming up for two years. It's a chance to actually play with Verbosio, and see where it's going.

Right now, it sucks, bad enough for me to say on the installation page:

This "snapshot" is specifically for Mozilla developers in order to debug several problems which the author believes are not the fault of his application (NS_ASSERTION failures, weird XUL deck behaviors, etc.). If you are using Verbosio for any other purpose, be aware that it can do nasty things to edited files, computer performance, and your grandparents. Use this snapshot with extreme caution. You have been warned.

However, I suppose that as software projects go with initial source package releases, I'm in pretty good company. Netscape, I remember hearing, had a really ugly package for their Communicator 5.0 initial source release. Lots of other projects put out code that's nowhere near ready for general use, with lots of incomplete features just waiting to shock users.

So, to get you started in Verbosio (if you're daring enough), try the following steps.

  1. Get a XULRunner package (trunk or 1.9a6).
  2. Download the gzipped tarball (approx. 1 MB) from Verbosio's installation page. (Note: it may not be on all the mirrors yet - it should be there in less than 24 hours.)
  3. Unzip and untar the tarball (after a virus and spyware scan - you don't trust me that much, do you?)
  4. Run the application. Use the "default" application, not the "testing" application.
  5. When it's running, go to Verbosio -> Open testing verbosio.xul. Watch Verbosio load a copy of itself (from the "testing" subdirectory) into its tabbed editing space. (Note: There's a bug I haven't figured out yet with Verbosio on the Mac platform, involving symlinks, which prevents you from doing this. Sorry.)
  6. Play with it to your heart's content. As long as you don't try to edit (opening up is okay) any other XULRunner applications or Firefox/Gecko-based XUL extensions with Verbosio, you should be pretty safe. The "testing" subdirectory application is disposable - you can get a fresh copy from the tarball at any time.

Several of the features:

These are just what's visible to the user. There's a lot of infrastructure too (ECMAScript design by contract, automated tests, support for extensions without conflicts of variable names, virtual files, a markup language for XML templates, DTD and entity management, undo/redo support including DOM operations, base URI mappings for starters).

Finally, the snapshot you see is on a branch (0.1a1pre.0.*), while the trunk is on a different line (0.1a1pre.1.* right now). That way, the branch itself can remain relatively static, and be a good reference for others. Also, the branch will work with any XULRunner build 1.9a6 or later (meaning 1.9a7, 1.9b1, 1.9, 1.9.1, etc.), while the trunk will remain based on a single milestone at a time (1.9a6 currently), so that I can work with an unchanging XR base. (In other words, the stable branch will tie to an evolving XULRunner, and the evolving trunk will tie to a stable XULRunner.)

This tarball and its contents are available under MPL 1.1 / GPL 2.0+ / LGPL 2.1+. Change log in the extended entry.

2007-07-15 23:10  ajvincent

	* verbosio/src/core/content/appOverlay.js: Merge from
	  SNAPSHOT_20070713_BRANCH: The app.* fields in
	  chrome://verbosio/content/app.properties has been removed; update
	  chrome://verbosio/content/appOverlay.js to cope.

2007-07-15 21:56  ajvincent

	* verbosio/www/installation.html: Point users to 0.1a1pre.0.6
	  tarball.

2007-07-15 19:35  ajvincent

	* verbosio/: README,
	  downloads/snapshots/branch_20070713_tag_006.tar.gz: Add
	  SNAPSHOT_20070713_TAG_006 object directory tarball to Verbosio
	  downloads.

2007-07-15 19:33  ajvincent

	* verbosio/src/core/VER_LAST: Bump version for
	  SNAPSHOT_20070713_BRANCH to 0.1a1pre.0.7.

2007-07-15 19:31  ajvincent

	* verbosio/src/core/VER_LAST: Move Verbosio version to 0.1a1pre.0.6
	  for SNAPSHOT_20070713_TAG_006 tag.  Branch will leap ahead to
	  0.1a1pre.0.7.  This will keep future tags in synch with their
	  version numbers.

2007-07-15 19:25  ajvincent

	* verbosio/src/core/content/templateFrame.xul: Simplify
	  templateFrame.xul in order to show deck layout bug more clearly.

2007-07-15 18:20  ajvincent

	* verbosio/README: Fix version numbers inside README for the
	  Verbosio project.

2007-07-15 18:19  ajvincent

	* verbosio/README: Update README file for the Verbosio project to
	  reflect the SNAPSHOT_20070713_TAG_005 tag.

2007-07-15 18:14  ajvincent

	* verbosio/src/core/VER_LAST: Bump version for
	  SNAPSHOT_20070713_BRANCH to 0.1a1pre.0.5.

2007-07-15 18:12  ajvincent

	* verbosio/downloads/snapshots/branch_20070713_tag_005.tar.gz: Add
	  SNAPSHOT_20070713_TAG_005 object directory tarball to Verbosio
	  downloads.

2007-07-15 18:01  ajvincent

	* verbosio/src/core/content/appOverlay.js: The app.* fields in
	  chrome://verbosio/content/app.properties has been removed; update
	  chrome://verbosio/content/appOverlay.js to cope.

2007-07-15 17:28  ajvincent

	* verbosio/src/: make-project.pl, core/components/xeTestEngine.js:
	  Landing from SNAPSHOT_20070713_BRANCH branch:  Remove the need
	  for filesystem-specific directories in
	  chrome://verbosio/content/app.properties bundle.  (Dated Mon Jul
	  16 00:08:26 2007 UTC.)

2007-07-15 17:22  ajvincent

	* verbosio/README: Fix the date on the README file.

2007-07-15 17:19  ajvincent

	* verbosio/README: Update README file for the Verbosio project to
	  reflect the SNAPSHOT_20070713_TAG_004 tag.

2007-07-15 17:16  ajvincent

	* verbosio/downloads/snapshots/branch_20070713_tag_004.tar.gz: Add
	  SNAPSHOT_20070713_TAG_004 object directory tarball to Verbosio
	  downloads.

2007-07-15 17:14  ajvincent

	* verbosio/src/core/VER_LAST: Bump version for
	  SNAPSHOT_20070713_BRANCH to 0.1a1pre.0.4.

2007-07-15 17:08  ajvincent

	* verbosio/src/: make-project.pl, core/components/xeTestEngine.js:
	  Remove the need for filesystem-specific directories in
	  chrome://verbosio/content/app.properties bundle.

2007-07-13 20:50  ajvincent

	* verbosio/www/installation.html: Emphasize in installation page
	  that currently XULRunner is not packaged with the snapshot
	  tarball.

2007-07-13 20:36  ajvincent

	* verbosio/README: Update README file for the Verbosio project to
	  reflect the actual SNAPSHOT_20070713_BRANCH,
	  SNAPSHOT_20070713_TAG_003 tags.

2007-07-13 20:35  ajvincent

	* verbosio/www/installation.html: Post a link to
	  SNAPSHOT_20070713_TAG_003 gzipped tarball on installation page.

2007-07-13 20:25  ajvincent

	* verbosio/src/core/VER_LAST: Bump version for
	  SNAPSHOT_20070713_BRANCH to 0.1a1pre.0.3.

2007-07-13 20:19  ajvincent

	* verbosio/downloads/snapshots/branch_20070713_tag_003.tar.gz: Add
	  SNAPSHOT_20070713_TAG_003 object directory tarball to Verbosio
	  downloads.

2007-07-13 20:06  ajvincent

	* verbosio/src/make-project.pl: Another change to 20070713 snapshot
	  branch:  Remove compileIDL.pl, backport.pl, run_verbosio.sh from
	  the build process.

2007-07-13 19:49  ajvincent

	* verbosio/src/core/VER_LAST: Bump version for
	  SNAPSHOT_20070713_BRANCH to 0.1a1pre.0.2.

2007-07-13 19:40  ajvincent

	* verbosio/src/core/application.ini.in: Bump MaxVersion for
	  applicatio.ini.in to 1.9.*, so that others on trunk XULRunner can
	  examine the branch.

2007-07-13 19:38  ajvincent

	* verbosio/src/core/VER_LAST: Bump VER_LAST for Verbosio
	  application to 0.1a1pre.1.0.

2007-07-13 19:14  ajvincent

	* verbosio/src/core/VER_LAST: Bump version for
	  SNAPSHOT_20070713_BRANCH to 0.1a1pre.0.1.

2007-07-13 18:34  ajvincent

	* verbosio/: README, src/code-languages/css/install.rdf.in,
	  src/code-languages/javascript/install.rdf.in,
	  src/document-packs/xul-application/install.rdf.in,
	  src/generic-viewers/inspector/install.rdf.in,
	  src/generic-viewers/preview-edit/install.rdf.in,
	  src/generic-viewers/source-edit/install.rdf.in,
	  src/markup-languages/xul/install.rdf.in,
	  src/pack-viewers/chrome-contents/install.rdf.in,
	  src/pack-viewers/dir-contents/install.rdf.in,
	  src/xpathgen/install.rdf.in, src/core/VER_LAST: Move Verbosio
	  executable to version 0.1a1pre.0.0, in preparation for snapshot
	  branch.

2007-07-10 07:48  ajvincent

	* verbosio/src/core/application.ini.in: Move Verbosio's required
	  XULRunner to version 1.9a6.

2007-07-10 07:48  ajvincent

	* verbosio/src/core/content/verbosio.js: Fix error with closing
	  Verbosio and not having opened a document pack.

2007-07-10 07:47  ajvincent

	* verbosio/src/core/: components/documentFile.js,
	  components/entityManager.js, components/nodePositionService.js,
	  components/templateXTF.js, components/textDocumentWrapper.js,
	  components/verbosio-utils.js, components/virtualProtocol.js,
	  components/xeBaseURIMap.js, components/xeFileSearch.js,
	  components/xeTestEngine.js, content/templateWizard.js: Gecko
	  1.9a6 prep:  load components from resource://app/modules/,
	  resource://gre/modules/.  Update calls on XPCOMUtils.

2007-07-10 07:43  ajvincent

	* verbosio/src/core/modules/ArrayConverter.jsm: Gecko 1.9a6 prep:
	  Update ArrayConverter.jsm docs to reflect the new world order.

2007-07-10 07:42  ajvincent

	* verbosio/src/core/modules/XPCOMUtils.jsm: Gecko 1.9a6 prep:  Add
	  modification for XPCOMUtils.jsm module, which will wrap a
	  singleton component object for XPCOMUtils.

2007-07-10 07:41  ajvincent

	* verbosio/src/make-project.pl: Gecko 1.9a6 prep:  Stop copying
	  modules into the components directory.

2007-06-17 20:00  ajvincent

	* verbosio/src/core/: content/templateWizard.js,
	  content/templateWizard.xul,
	  locale/en-US/verbosio/templateWizard.dtd: Not part of the build
	  (yet) for template creation wizard.  Add user-interface for
	  disabling text inputs, setting markup:xpath attributes as needed,
	  and keeping everything synchronized.	Note this check-in requires
	  mozilla.org bug 209555 be patched.

2007-06-17 19:52  ajvincent

	* verbosio/src/core/: components/verbosio-utils.js,
	  idl/xeIVerbosioUtilsService.idl: Break up
	  xeIVerbosioUtilsService.getSupportingTemplates() into two
	  functions; the first becomes
	  xeIVerbosioUtilsService.getTemplateDocument().

2007-06-17 19:48  ajvincent

	* verbosio/src/core/: components/templateXTF.js,
	  idl/xeIMarkupLanguage.idl: Add method for 
	  elements to publicly match a UI node to the corresponding output
	  node.

2007-06-17 01:31  ajvincent

	* verbosio/src/core/: content/template.css,
	  content/templateFrame.css, content/templateWizard.js,
	  content/templateWizard.xul, content/bindings/template.xml,
	  locale/en-US/verbosio/templateWizard.dtd,
	  skin/verbosio/templateFrame.css: Check in mockup of template
	  builder wizard UI.  Note this is not yet functional, and not part
	  of the app.  It also needs a lot more comments and a thorough
	  code review.
Posted by WeirdAl at July 15, 2007 10:15 PM
Comments

I was wondering... couldn't you join efforts with people doing etna ? http://rhaptos.org/downloads/editing/etna

(From Alex: At some point in the future, merging with them is a possibility - but I'm undertaking some efforts that I believe are just as disruptive. :-) More to the point, the ETNA code base is Gecko 1.7, per the ETNA page. That is not where I'm going.)

Posted by: glandium at July 16, 2007 12:35 AM

They do have something working with gecko 1.9
http://ljouanneau.com/blog/2007/03/13/649-etna-progress-20070313

Posted by: glandium at July 16, 2007 7:44 AM