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.
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.
- Get a XULRunner package (trunk or 1.9a6).
- 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.)
- Unzip and untar the tarball (after a virus and spyware scan – you don’t trust me that much, do you?)
- Run the application. Use the “default” application, not the “testing” application.
- 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.)
- 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:
- WYSIWYG view with partial editing support
- Support for editing DTD entities inside the XML document, and having those entities update in the original DTD
- Source code view
- DOM Inspector-like tree views
- A chrome registry viewer
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.