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.

2 thoughts on “Verbosio: First Look”

  1. 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.)

Comments are closed.