Saturday, February 28, 2004


That's 'away from country'.

Minimal updates for a while: One week in Southern France, for a W3C meeting. Yes, work can be pretty demanding sometimes. -m

Tuesday, February 24, 2004

InfoPath Service Pack 1 

It's beta, but it's here. Will check out soon.

Media coverage with a too-cute headline. The article is pretty blunt in places: "Analysts see InfoPath as part of Microsoft's strategy for locking businesses in to Microsoft enterprise products." Huh. -m

Sunday, February 22, 2004

XForms Validator 

Now online at Powered by Python, libxml2, and libxslt.

Includes a bookmarklet and several clickable examples, both valid and invalid. -m

Friday, February 20, 2004

XForms Essentials Reloaded 

This will be announced Monday. You, my faithful seven blog readers, get early notice.

The official home for the GFDL'd O'Reilly XForms Essentials is moving to XForms Institute. Now in "chunked" pages, so you don't have to take a massive megabyte-hit just to find one quick phrase. The huge version, and all the sources, etc. will of course remain available.

If you notice any problems, especially if they look XSLT-inflicted, please let me know. -m

Wednesday, February 18, 2004

How not to win friends or influence people 

Eric Raymond read Sun's statement that "the open source model is our friend", and seized the opportunity to fire off an open letter to Sun the very next day. He should have run the letter through a few asbestos filters first, though.

Think like a CEO for a minute: How would you react if someone wrote you an open letter that said your strategy is "curiously inconsistent, spotty in ways which suggests that [your company] is confused"? A CEO carefully crafts and values a "strategy" just as much as a hacker carefully crafts and values a favorite piece of code. The key to getting other people to do things is to make them want to do it, not to browbeat them with pompous language. ("Mr. CEO, tear down that wall")

Compared to the ranting, Simon Phipps' (Sun Technology Evangelist) response is positively levelheaded.

Moral: 1. Don't write angry. 2. Get a 2nd opinion before you write a widely-distributed open letter. -m

Tuesday, February 17, 2004

How to always win at Pepsi iTunes 

Described here. Now, to figure out how to always win from a vending machine. -m

Sunday, February 15, 2004

Compile DENG without Flash MX 

Full description here. The source release is up too. Nice. -m

Saturday, February 14, 2004

The Doctype Instruction 

To go with cleaner namespaces, and the bigger issue of multi-namespace documents, one needs a better way to nest XML documents. One proposal uses a "Doctype Instruction", which is technically an XML processing instruction, but fills a similar role to the DOCTYPE declaration.

The Doctype Instruction can appear before the opening tag of the root element, and also at any point where a sub-document is nested inside a document. It is defined as follows:

The target of the PI is the literal "DOCTYPE".

The remainder of the PI is the cleaner namespace prefix of the document, (Note that unlike a DOCTYPE declaration, it does not have to be, and likely will never be, the same as the root element. Determining the root element is easy enough; that information doesn't need to be duplicated), the literal "NS" followed by a quoted string, containing a space-separate list of cleaner namespaces critical to the processing of the document. The namespace of the root element need not be repeated in the string, which may be empty.

For example, here is a document that uses XHTML+XForms+XML Events+SVG, but the SVG is not critical to processing of the document:

<?DOCTYPE org.w3.html NS "org.w3.xforms org.w3.xml-events"?>
<?ns-import org.w3.html?>
<?ns-import org.w3.svg?>
<?ns-import org.w3.xforms?>
<?ns-import org.w3.xml-events?>

Another example, here is an RDF document representing an RSS 1.0 feed:

<?DOCTYPE org.w3.rdf NS "org.purl.dc1.1"?>
<?ns-import org.w3.rdf?>
<?ns-import org.purl.dc1.1?>
<?ns-import com.xmlns.foaf0.1?>

Unlike a traditional DOCTYPE declaration, the Doctype Instruction can reoccur inside the document.

<p>Refer to figure 1-1 for details</p>
<?DOCTYPE org.w3.svg NS ""?>
<?ns-import org.w3.svg?>
<p>Figure 1-1</p>


Friday, February 13, 2004

Cleaner Namespaces 

This is a variation on Tom Bradford's clean namespaces pattern.

Instead of a there-or-not PI <?ns clean?>, each namespace gets a separate 'import' statement. For example, author-friendly XHTML+SVG+XForms would look like this:

<?using org.w3.html?>
<?using org.w3.svg?>
<?using org.w3.xforms?>
<?using org.w3.xml-events?>
<?using org.w3.xlink?>
<title>Virtual Library</title>
<a href=">a link</a>

The idea is that an application that has foreknowledge of a namespace, say 'org.w3c.html', can notice the unique string and recognize elements accordingly. A 'generic XML' application, not having foreknowledge of a given namespace, would need to access a machine-readable description of what's in the namespace (details not given here). Namespaces are declared once, at the top of a given document, with no arbitrary scoping rules where things can get redefined under your feet.

Instead of declaring a prefix, it can be spelled out on each use, like <org.w3.html:body>. Since prefixes are based on DNS names, they are persistent and unique, but carry none of the URI baggage. This gives two-part names, and avoids the URI vs. QName/three-part name permathread, as well as the battle for 'what goes at the end of the namespace'.

Look at the example again. Does this look like something you could sit down at a blank screen and bang out without peeking at a reference? Computers are getting more and more powerful. The people behind the keyboards aren't. More work needs to be done in leveraging plain-text data formats for mere mortal human authors. -m

Monday, February 09, 2004

DENG Open Sourced 

Announcement - Good job Claus!

We are proud to announce that as of today, DENG is opensource software
distributed under GPL. You can now download all Flash Actionscript sources
from via Anonymous CVS:

cvs login
cvs -z3 co src

DENG is a modular class library written in OOP Actionscript 1, turning the
Macromedia Flash Player 6 into a webbased, zero-install, cross
browser/platform, modular and standards compliant XML/CSS2 Browser.
Supported are subsets of CSS2, CSS3, XHTML, XForms, XFrames and SVG.

Project page on Sourceforge (for a laugh, try /projects/deng and see what has already claimed the more obvious name)

This might be enough to convince me to pick up Flash MX. Are there any open source compilers? I don't care about the GUI (having jEdit), just something to turn a pile of *.as files into a *.swf. Mail me if you know of anything. -m

Saturday, February 07, 2004

Organic Versioning 

A kernel of an idea; I need to develop it more.

'Standard practice' of x.y.z versioning, where x is major, y is minor, and z is sub-minor (often build number) is not best practice. If you look at how systems actually evolve over time, a more 'organic' approach is needed.

For example, look at how browser user agent strings have evolved. Take this, for example:

Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows 98) Opera 7.02 [en]

Wow, if detection code is looking for "Mozilla" or "Mozilla/4.0", or "MSIE" or "MSIE 6.0" or "Opera" it will hit. If you look at the kind of code to determine what version of Windows is running, or the exact make and model of processor, you will see a similar pattern.

Since this is the way of nature, don't fight it with artificial major.minor versioning. Embrace organically growing versions.

The first version of anything should be "1." (letters will work in practice too) All sample code, etc. that checks versions must stop at the first dot character; anything beyond that is on a 'needs-to-know' basis.

Then, whenever revisions come out, the designers need to decide if the revision is compatible or not. A completely incompatible release would then be "2.". However, a compatible release would be "1.1.". All version checking code would continue to look only up to the first dot, unless it has a specific reason to need more details. Then it can go up to the 2nd dot, no more.

Now, even code that is expecting version "1.1." will work fine with "1.1.1." or 1.1.86." or "".

Now, as long as compatible revisions keep coming out, the version string gets longer and longer. This is the key benefit, and why fixed-field version numbers are so inflexible. (and why you get silly things like Samba reporting itself as "Windows 4.9") -m

Thursday, February 05, 2004

Updated deng.swf 

Thanks to Claus, XForms Institute is now running the latest DENG applet, which supports the final XForms namespace. All the example files there have been updated. (Without a hitch, except that jEdit 4.2 beta insisted on writing silly DOS-style newlines, which the view-source program treated as double-spacing). Formal announcement Monday. -m

Sunday, February 01, 2004

GFDL community on Orkut 

I created a GFDL community on Orkut. If you've ever written anything currently released under the GNU Free Documentation License, join up! -m


Terms of use

For external use only. I doubt the enforcability of click-through licenses anyway. Copyright 2003 Micah Dubinko. All rights reserved.