philipp's weblog header image

Using the the Sun/Oracle Multi-Schema XML Validator (MSV)

April 18th, 2012 · English, other stuff

I regularly work with more or less complex XML Schemas, and debugging those requires some tools with command lines I usually forget after a while. So I decided to write down some of my frequently used command lines for MSV, the Sun/Oracle Multi-Schema XML Validator. Maybe you find some of those helpful as well (since the MSV documentation is not exactly perfect).

Note: While I only use MSV for XML Schema validation, it can be used for RelaxNG and other schema languages as well.

Get MSV

That’s the easy part: download a binary build from http://java.net/downloads/msv/releases/ and unzip it (you only need the msv.YYYYMMDD.zip).

Validate a XML document

$> cd msv-20090415
$> java -jar msv.jar schema.xsd document.xml
start parsing a grammar.
validating document.xml
the document is valid.

Dump the post-schema-validation infoset (PSVI)

Often it is useful to see which type the XML Schema parser attached to a node in a document. To do this, get the post-schema-validation infoset (PSVI) from the schema validator. With MSV comes a sample application that can be used for this purpose.
$> cd msv-20090415/examples
$> java -cp .:../msv.jar psvi.PSVIDump schema.xsd document.xml

→ 2 CommentsTags:

See you at FOSDEM

January 23rd, 2012 · other stuff

If you want to know more how to use XForms and XULRunner for application development and how the Mozilla Rapid Release Cycle has affected the development of such applications, join me for my talk as FOSDEM this year. More information is available at the FOSDEM website! See you there!

→ No CommentsTags:

The Future of Mozilla XForms

July 13th, 2011 · English, XForms

I received a couple mails and comments lately about Mozilla XForms not being available for Firefox 5 (or on addons.mozilla.org for Firefox 4). I also have been thinking about the future direction the Mozilla XForms extension could and should take. This post tries to outline some of those thoughts.

Let’s start with the facts. On the development side, I have been the only person doing coding work on XForms for almost a year now (with great support from Aaron, Alex and Olli, who did all the reviews). Unfortunately, I’m very limited on time and it has not been much work at all (at least by the results; the various platform changes required me to dig much deeper into platform code than I every thought I would, and it took me quite some time to get used those very different areas of code). This makes development extremely slow and puts the focus mainly on “keep the thing working” rather than implementing new features.

On the user’s side, according to the feedback I get via mail and on the mailing list, and according to the download stats, there are still some users of the XForms extension. (The 0.8.8b1 XPI for Firefox 4 has around 300 downloads a month from my site.)

Finally, the environment side. The XForms extension is a binary component that uses many internal interfaces of the Mozilla platform. This makes it, as the past has shown, highly affected by platform changes. It has always been the case that some changes were required on every major platform release (formerly every .x release, e.g. 3.5, 3.6 etc., now every release, e.g. 5, 6, 7).

Since the 3.x-days, three things changed:

  1. No more stable APIs. This has been outlined in [1] and implemented with Firefox 4 (Gecko 2.0). This means we cannot rely on any API to stay stable for more than one major release.
  2. With the Rapid Release Process [2], the new development model since Firefox 5, a major release is released every 6 weeks and users are auto-updated to that release.
  3. Extensions with binary components must be at least recompiled for the new major version, even if no changes to the codebase are necessary. [3]

These three points put together mean that not only a new XForms release every 6 weeks is necessary, but also that a growing number of fixes for platform changes is needed.

You probably see the problem now. One developer that’s short on time has absolutely no chance to do a release every six weeks, and without that the Mozilla XForms extension becomes unusable every six weeks (as said before, users are auto-updated to the new major release).

So, what’s the conclusion? With the current situation, I will not be able to keep up the speed. If no other developers pop up, I don’t see a future for the Mozilla XForms extension. I personally will continue to use it in the project I’m working on (and that will stay on the platform Firefox 3.6 is based on probably), but I will not invest much time into the further development to make it compatible with the latest Firefox release.

Put the other way around, this means: if you are a user of the Mozilla XForms extension and need it to be supported on newer Firefox versions, you might consider joining the development (I will help where ever I can, and I am sure that Aaron, Alex and Olli do the same) or pay someone to do so.

As a final comment, I personally came to the conclusion that XForms as a browser plugin is dead. XForms as technology is still very much relevant, but not for all use cases thought of when initially standardizing XForms 1.0. One of them, replacing the “old” HTML4 forms, will probably never happen. HTML5 and its surrounding technologies make the browser much more powerful in a generic way. This makes it possible to provide a much greater user experience with server-side solutions than it was possible a couple years ago. The web and with it the browser market changed drastically over the last couple years, with more competitors and innovations happening at a much faster pace than ever before. By acknowledging this we can use the new opportunities the HTML5-Cloud-Buzzword-Web brings to provide an even better experience for the users of XForms — unfortunately, the Mozilla XForms extension will not be part of that experience.

 

PS: There is much discussion going on in the community right now about
add-on compatibility, including ideas like porting binary addons to
js-ctypes or using the Addon SDK (JetPack). Both options are not really
applicable to XForms, as it is probably unique in the way how deep it
integrates with the platform. Even if they were, a lot of engineering effort would be necessary to utilize those technologies. [4], [5]

 

[1] http://groups.google.com/group/mozilla.dev.platform/browse_thread/thread/18f49e75338e4ce0/f42915417230e621?pli=1
[2] https://wiki.mozilla.org/RapidRelease
[3] “We have and we will break add-on API compatibility with every release, certainly binary add-on compat. We will be adding major new features or doing serious re-architecuring with every release.” — Asa Dotzler at http://weblogs.mozillazine.org/gerv/archives/2011/07/firefox_version_numbers_cognitive_disson.html
[4] http://xulforge.com/blog/2011/07/version-numbers-add-on-breakage/
[5] http://adblockplus.org/blog/binary-xpcom-components-are-dead-js-ctypes-is-the-way-to-go
This is a cross-post from the mozilla.dev.tech.xforms news group, please follow up there for the further discussion.

→ 7 CommentsTags:

Make VirtualBox USB Support Work in openSUSE 11.4

March 23rd, 2011 · English, other stuff

VirtualBox and its USB support always have caused some trouble. Since VirtualBox 4, the USB support is not part of a different binary any more (PUEL vs. OSE), but lives inside an extension pack, which you can download from the VirtualBox download site.

On openSUSE, this means you can install the VirtualBox package using Yast (or zypper, or whatever you’d like to use) and then open VirtualBox, go to File > Preferences > Extensions, click the top “Add package” button, select the downloaded file and you’re done.

Well, almost done. After you add a USB device filter to your VM and boot it, you’ll notice that all entries in the Devices > USB menu are grayed out.

Reason for this is a permission problem. Usually, VirtualBox installs a udev rule that gives all users in the vboxusers group permission to access all USB files. openSUSE chose to disable this udev rule by default for security reasons without visible notice to the users.
So, to cut a long story short, open /etc/udev/rules.d/60-vboxdrv.rules, and replace the lines that are commented out with the ones below (these are almost like the commented-out lines, but replace NAME with SYMLINK+):

KERNEL=="vboxdrv", NAME="vboxdrv", OWNER="root", GROUP="root", MODE="0600"
#these two lines give access permission to vboxusers to properly work with usb nodes, this could be security risk (bnc#664520) !!
SUBSYSTEM=="usb_device", ATTR{devnum}=="?*", ATTR{busnum}=="?*",SYMLINK+="vboxusb/$attr{busnum}/$attr{devnum}", GROUP="vboxusers"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{devnum}=="?*", ATTR{busnum}=="?*",SYMLINK+="vboxusb/$attr{busnum}/$attr{devnum}", GROUP="vboxusers"

Now reboot and you should have all USB devices available (at least if you’re in the vboxusers group, check this with the id command in a terminal window).

And while you’re at it, please ignore forum posts that modify usbfs or anything like that, newer VirtualBox versions don’t need these things any more.

If you only have a 10-vboxdrv.rules file, then you most likely installed VirtualBox not from the openSUSE repositories, but from the VirtualBox download site. Remove this version first and install the openSUSE version if you want to use this guide (and save you from recompiling the kernel module with every update).

(Post updated on 2011-08-15 to incorporate some user comments. Thanks guys!)

→ 21 CommentsTags:

Skype, KDE4, OpenSUSE 11.3 and PulseAudio

January 25th, 2011 · English, other stuff

This combination seems to be a bit hard for openSUSE. While PulseAudio solves many problems Linux users have with audio (and creates others), openSUSE seems to make it even harder for users to make use of it. That’s usually not a problem, until Skype comes into the game. As soon as it detects PulseAudio being present on the system, it uses it. For me, this lead to no sound on my headset, and the common suggestions in forums seems to be uninstall PulseAudio, reinstall your system, install Ubuntu and other useless suggestions.

But actually there is a way to get it all work together nicely and it’s not hard at all:

  1. Enable PulseAudio (#> is a root console)
    #> setup-pulseaudio --enable
  2. Install the missing PulseAudio mixer (without it it’s like sitting in a car without driving wheel)
    #> zypper install pavucontrol
  3. Reboot (just to make sure …)
  4. Start pavucontrol. You’ll see your sound devices (e.g. the sound card and your headset), the per-application volume controls as soon as an application uses an input or output and everything else you dreamed of.

Now you can start Skype and do a test call, and you’ll be able to use pavucontrol to route its output and input to the right device (e.g. to your headset).

Enjoy!

PS: It seems that there has been some progress on KDE4 integration with PulseAudio, and I hope in openSUSE 11.4 everything will work out of the box.

→ 10 CommentsTags:

Preview version of Mozilla XForms for Firefox 4 available

January 4th, 2011 · English, XForms

A lot of improvements went into Firefox 4 that also affected compatibility with the Mozilla XForms extension. We have been trying to keep up with the developments and with Beta 8 of Firefox 4 there should be no more breaking changes. To make sure we didn’t miss any important regressions over the previous versions, I put together a preview release of Mozilla XForms for Firefox 4, which is available for download now:

http://philipp.wagner.name/mozilla-xforms/xforms-0.8.8b1.xpi

It requires at least Firefox 4 Beta 8 and works on Windows (x86) and Linux (x86 and x86_64).

Please test this version with your forms and report any problems you find! It helps us to deliver a great version of the extension for Firefox 4!

An (incomplete) list of changes is available.

Looking forward to your feedback!

→ 6 CommentsTags:

TUM, eduroam und Nokia N900

November 2nd, 2010 · German, Uni

An der TU München steht (wie an allen Hochschulen in München, die vom LRZ versorgt werden), das WLAN-Netz “eduroam” zur Verfügung. Das LRZ scheint jedoch Spaß daran zu haben, mindestens einmal pro Semester die Verschlüsselungseinstellungen zu verändern. Damit Nokias N900 auch in diesem Semester wieder eine Netzverbindung bekommt, hier eine Anleitung in Screenshots.

Update 20.06.2011: Der  Benutzername hat sich geändert, jetzt lrzkennung@eduroam.mwn.de verwenden (ist in der Anleitung korrigiert)!

[Read more →]

→ 6 CommentsTags:

Mozilla XForms for Firefox 4 – we’re coming!

October 7th, 2010 · English, XForms

Firefox 4 will come with a lot of under-the-hood changes that affected XForms as well. Fixing those issues wasn’t trivial and took quite some time (the first bug is from February), but as of today I’m happy to announce that xforms and schema-validation build with the current Mozilla trunk code again. The upcoming Beta 7 is feature freeze, meaning we (hopefully) don’t have to worry about breaking changes any more and can focus on getting some long-awaited bug fixes and features done in time for a release of Mozilla XForms together with Firefox 4.

→ 3 CommentsTags:

Cool!

August 25th, 2010 · XForms

Sent out my Mozilla Committer’s Agreement today!

→ No CommentsTags:

Majordomo Web API

July 8th, 2010 · other stuff

Did you ever want to sync your Majordomo mailing list with another address database? Or make it easy for users to unsubscribe using a web interface? Then you will have noticed that Majordomo only offers you a mail interface or an admin tool that you have install on your mailserver. So what if you don’t have access to the mailserver?

Then I got the solution for you: introducing Majordomo Web API

I needed to sync an address database in eGroupware with different Majordomo mailing lists (every night). I did this by building a small API that looks like a normal asynchronous API – just with the difference that in be background a mail request to Majordomo is sent and the results are retrieved from an IMAP or POP3 account.

Get the code, or look at egroupware_update_mailinglists.php script for an example. It should be easy to build a modern AJAX web interface on top of the JSON-based RPC interface.

As it always is, our mailing list provider switched from Majordomo to Mailman only a couple weeks after I finished the scripts. So the work didn’t really pay off, but I hope it’s useful to somebody out there.

→ 1 CommentTags: