Disclaimer: This is a personal web page. Contents written here do not represent the position of my employer.

Tuesday, March 11, 2008


Cambridge hacking

I'm excited to be joining Novell, to work on some .NET 3.x libraries implementation on the Mono stack.

I started to get things up and running for my new role in Calvin's A11Y Team last week in the Boston/Cambridge office, where the Microsoft+Novell interoperability lab is located, and had a great time meeting the other members of the team.

After all the planning and organizative meetings, we started on the hacking phase (look ma, no UML! ;) ), which I will be tracking in blog entries like this. So let's start:

As I will have to use Windows OS to test things from time to time, I firstly decided to set up virtualization. I decided to switch from VMWare to VirtualBox this time (given that the latter is open source) and it's happenning to be tricky because:
- Drag'n'drop doesn't work yet.
- Copy/paste doesn't work yet.
- You have to add your user to the group vboxusers.
- You have to launch the vbox kernel module (I don't know why the RPM didn't prepare this on the installation phase):
sudo /etc/init.d/vboxdrv setup
- For sharing data between the guest and the host (given that DnD doesn't work), you can share resources with this command:
VBoxManage sharedfolder add Vista11y -name VmShare -hostpath /home/knocte/Desktop/VmShare
But trying to access it via the path \\vboxsvr\VmShare wasn't working! I wondered if it was related to the network interfaces so I looked at it and:
- Network interface was not working in the first place (NAT type). I then added a new network interface (internal type) and Vista recognized it but couldn't install the drivers itself.
- It seems I can find the drivers on some place on the internet, but what's first? the egg or the hen? Because I need to pass those files to the OS guest... oh dear, it seems that I can convert a ZIP file to an ISO file but... this is becoming...
- Let's do this stuff later... maybe it's worth reconsidering Qemu again.

I've also studied the UIA API:

- http://en.wikipedia.org/wiki/Microsoft_UI_Automation
- http://msdn2.microsoft.com/en-us/library/ms747327(printer).aspx
- http://msdn2.microsoft.com/en-us/library/ms788733(printer).aspx
- http://accessinteropalliance.org/docs/Introducing_IAccessibleEx.doc
- http://download.microsoft.com/download/5/e/1/5e168e97-91dd-4ca3-ac7e-2131aec8cd1b/Overview_UIA.pdf

And Gnome A11Y:

- http://library.gnome.org/users/gnome-access-guide/2.20/
- http://live.gnome.org/Accessibility/Developers
- http://live.gnome.org/Accessibility/GetInvolved
- http://live.gnome.org/GAP/AtkGuide

Things that surprised me?

a) Neither GAIL (Gnome Accessibility Implementation Library) nor ATK (Accessibility ToolKit) where named here: http://www.gnome.org/projects/ . But suddendly discovered that:
b) GAIL is now part of Gtk+ (which could explain statement [a]) and ATK is toolkit independent, however:
c) GAIL still resides in its separate SVN path (which contradicts statement [b1])
d) Suddendly wondered about ATK+KDE (given the independence mentioned in statement [b2]) and came out with this: http://accessibility.kde.org/developer/atk.php), however:
e) ATK is GObject based (which makes [b2] difficult)
f) ATK seems to be considered a part of GTK+ (which contradicts [b2]), as said here: http://live.gnome.org/GAP/AtkGuide

Thus, this set of statements surrounds a big WTF.

I installed also some tools that are going to be needed for my work:
- Orca (already installed).
- LSR (didn't found any RPM package named this way, so I downloaded from SVN), which stands for Linux Screen Reader.
- Accerciser (didn't find a package in normal repositories, but found one OpenSUSE extra repository that contained it, thanks OBS community!). I could say this application is the analogy to DOM Inspector in the Mozilla environment, but oriented to accessibility. Surprisingly you can discover that still many native Gnome applications are not accessible when running it (like NetworkManager, the new OpenSUSE updater, or Accerciser itself; or maybe the latter was disabled by default in order to not cause strange recursive behaviours...). You can read more about it in this LinuxJournal article or in its Gnome page.

I'm still in the HelloWorld hunting phase, dealing with Atk# and stuff related. On the way, I've been using MonoDevelop a bit and just filed 5 bugs:
- Wrong location of caret in the new managed editor
- Special output from mcs not parsed correctly.
- References dialog on a C project should not show managed libs
- Protected constructor is shown on autocompletion list
- Issues with paths in a C project

(Don't get me wrong, MonoDevelop team is doing an unbeatable work, but I usually find cosmetic errors and cannot avoid saving them in Bugzilla to enable them to polish it more and more.)

Better than start coding blindly I'm still finding examples on which I can base my first steps. For example:
- the file ea-combo-button.c file from Evolution, mentioned on a11y-dev mailing list.
- an unfinished patch made by my teammate Mike Gorse, that implements Atk accessibility on some Abiword bits (hosted on Abiwords Bugzilla).
- the Mozilla module Accessible where resides either MSAA and ATK interface layers (thanks Calvin for the guidance).
- GAIL source code that I just mentioned.

- Play more with Accerciser
- Play more with ORCA
- Finish reading this huge doc about GAIL and ATK.
- After finishing getting some ATK examples running, convert them to manage code using Atk# (BTW thanks mkestner for all the help I'm getting from you to start ).
- Read WindowCatcher source code (thanks for the link Calvin) in order to get some UIA examples running.

Non-hacking TODOLIST:
- Figure out how to change my Bugzilla's account email (already done it, but I keep getting emails to my old account).
- Get a new keyboard from my laptop: I don't want to loose my beloved Spanish keys :)

Another TODOLIST that is not related to a11y but is not non-hacking either is:
- Figure out why the hell OpenSUSE 10.3 won't wake up after hibernating in my new T61P (I guess it's related with the NVidia proprietary drivers... :( ). But it seems I'm not the only one.
- Figure out how to make the fingerprint reader work with OpenSUSE (anyone with a driver out there??).

But the one I wish more is to pass this first phase (in which you seem to test and read many things but don't get any useful code at all) as quickly as I can, in order to feel more productive.

UPDATE 11-MAR-2008: This clarifies part (c) of my WTF.

UPDATE 06-APR-2008: It turns out that GuestAdditions is not an addon for your VirtualBox software (that's what I understood when I saw an RPM on my OpenSUSE that had this name), but a software that you have to install on the Operating System you're emulating with VirtualBox. Now the clipboard is working, but not the DragNDrop or the network (although I found the driver and installed it, it seems that it can't contact the router or the DHCP server).

UPDATE 07-APR-2008: Installing again the guest OS in a new VM, install the Guest additions as the very first step, and then configuring the network connection with the driver provided in the GuestAdditions ISO image (letting the default settings for Networks: just one NAT-based), fixed all the problems! (The only feature I miss is DragNDrop.)

UPDATE 14-APR-2008: Finally fixed the SharedFolders issue! You have to do this (apart from adding the shared folder with the VBox command line or GUI):

- Share the folder on the host via SMB (Yast -> Network Services -> Samba Server => enable user shares; reboot; right-click on a folder -> Sharing options).
- Install the *last version of GuestAdditions* (the one that comes with your version of VirtualBox; beware: reinstall it when you upgrade your VirtualBox). Install it via menu Devices -> Install Guest Additions... in your virtual machine window. Beware: guest additions neads a clean restart, if you reboot it and get an error on boot, you will need to reinstall it.
- In the virtual machine window, go to menu Devices -> Shared Folders and set up the same folder you just shared in SMB.
- Disable UAC in VISTA through msconfig.
- Not try to explore \\vboxsvr\ or something like that, because name resolution doesn't work. This only works through the virtual drive mapping opening a command line (Start Menu > All Programs > Accessories > Right click on Command-Prompt, and run it as an administrator) : net use x: \\vboxsvr\vmshare (it's not case sensitive, but spell it correctly! it's vboxsvr, not vboxsrv).

For the record, I'm not SURE if all of these three steps are required (maybe the key is just one of them) because I have just tried to disable Samba sharing and it seems to be working too (maybe it will no longer work when I restart the session??? I hate being a sysadmin, this should be made easier...). And it seems that the UAC stuff is only needed if you don't launch the command-prompt as and admin (I don't want to be sure about this, I don't want to test it, I don't want to loose more time on this).

Labels: , , , ,

Felicitaciones por unirte a Novell!

Enhorabuena mostruo. Me alegro mucho.
Hola Andrés.

Para que puedas solucionar muchos de los problemas que tienes con VirtualBox (sinceramente, creo que se debe a un mal empaquetado porque en Ubuntu la vida es más fácil):

* Para el Copy & Paste, compartir ficheros de forma sencilla, etc. necesitas instalar esto:
VirtualBox Guest Additions

* Para la red en windows vista, puedes hacer esto:
Habilitar soporte de red en Windows Vista con VirtualBox

¡Un saludo!
kraptor, gracias por tu comentario. Pero he probado a instalar las Guest Additions y sigue sin funcionar el Copy&Paste y el Drag&Drop. :?

Gracias al resto por los animos.
Felicidades :)
Post a Comment

<< Home

This page is powered by Blogger. Isn't yours?


RSS of the category Gnome
RSS of the category Mono
RSS of the category C#
RSS of the category Programming
RSS of the category Mozilla
RSS of the category Web Development
RSS of the category Security
RSS of the category Open Source
RSS of the category Engineering
RSS of the category Misc
RSS of the category Politics

Contact with me:

My Photo
Location: Hong Kong, Hong Kong
Follow me on Twitter