Wednesday, November 26, 2008

Mono Accessibility 0.9 Released!

Yesterday, Brad announced the first release of the Mono Accessibility team's work, which started a little less than a year ago. It's pretty exciting for us to put out this developer preview release; I'm interested to see what people make of it.

The goal of the first phase of our project, which will culminate in a 1.0 release early next year, is to make Winforms applications accessible in Linux with traditional at-spi tools like Orca and Accerciser. In 0.9, we offer support for most Winforms controls (Button, Label, ComboBox, ToolStrip, WebBrowser, etc). In 1.0, we will be rounding out this support to include the remaining controls (DataGridView, TreeView, custom controls, etc), in addition to fixing bugs and improving stability.

It may not sound that exciting to enable accessibility for Winforms apps. After all, you probably aren't using very many on your GNOME desktop today. However, there certainly are some cool open source apps out there (Paint.NET, NClass, etc). And the main benefit will be for overall Linux adoption. There are many businesses, large and small, schools, governments, non-profits, etc...that are stuck on Windows because they have custom applications written using APIs like Winforms. One goal of the Mono project is to provide a migration path for these potential Linux users. Accessibility support is often a requirement, so by making these custom Winforms applications fully accessible in Linux, we are enabling Linux adoption scenarios that would have been too expensive before (rewriting your internal tools is not cheap or easy).

If you are not familiar with our project, let me briefly explain what it is we are doing:

We are implementing Microsoft's "User Interface Automation" (UIA) specification on Linux. During the first phase of our project, we are focusing on the "provider side" of this specification, which offers interfaces that are implemented by the accessibility/automation "provider" for a given control. This is similar to implementing ATK interfaces for a GTK+ widget, if you are familiar with that. We have been writing UIA providers for all of the Winforms controls.

The other half of our work this phase has been creating a bridge from UIA to ATK. This bridge translates between UIA interfaces and ATK roles/states/etc. This is the piece that makes a Winforms application look like a GTK+ app (or any other app written in a toolkit that exposes a11y info over at-spi) in a tool like Orca.



It's pretty cool the way this fits together. Next year, after 1.0 is released, we'll begin the second phase of our project. It includes two major efforts:

First, we will be making Moonlight accessible in the same way we have made Winforms applications accessible. We will create UIA providers for Moonlight controls, and they will automatically gain accessibility via the exiting UIA<->ATK bridge.

Second, we will implement the "client side" of the UIA specification. This is a set of interfaces designed to allow an accessibility tool (think Orca) to interact with accessible applications. It is similar to the at-spi interfaces, and we will in fact be implementing it as another bridge, this time translating "client" UIA calls into equivalent at-spi calls. The benefit here is that as Windows developers create accessibility and automation tools using the UIA interfaces, they will be portable to Linux (and vice versa).

Accessibility is a great feature for users and potential customers. Automation support is invaluable to testers, software QA, and even users who just want to streamline common tasks. With the release of Mono Accessibility 0.9, we are growing the landscape of accessible applications. We look forward to your feedback (and bug reports)!

Monday, October 27, 2008

Got a G1, Yay Linux!

So I caved and got a G1. I may write an in-depth review after I've had it longer, or I may not, but here are the highlights:

Rock
  • I can has source!
  • No need to print from Google Maps when I leave the house.
  • Better reception in my house with T-Mobile than I had with AT&T.
  • ConnectBot SSH client works great with my screen+irssi setup.
  • Used ShopSavvy at Sports Authority yesterday to convince Ellery it was worth getting her a shiny new pair of rollerblades. Hold phone up to barcode, see local and online price comparisons.
  • Used Shazam to find out what's playing on the radio. Hold phone up to speaker, wait a few seconds, prompted with all the info you could desire, including a link to download via phone at Amazon MP3 store.
  • Unlock screen shows when my alarm is set to go off.
  • Keyboard surprisingly comfortable to use.
  • Camera image quality decent.
  • Easier than I thought to patch HAL (or just edit .is_audio_player) so that G1 Just Works in Banshee:

G1 in Banshee
Click for larger view, obligatory F-Spot Awesomeness

Suck
  • My thumbs are a bit fat to use on the touch screen (I have somewhat-deformed wide thumbs). So, no one-handed use.
  • No visual voice mail.
  • When interacting with a phone service, like voicemail, and you are prompted to enter digits, I go into freak-out mode, because I look at the screen and it is blank, so I have to unlock, then find the dialer so I can hit a number, which can be kind of tricky depending on how the call started. I can probably flip out the keyboard and use that, but as I said, I'm in a panic.
  • Not sure how to carry this thing. It comes with a sleeve/pouch/thingy, and for now I put it in there and then in my pocket, but now it takes two hands and an extra few seconds to answer my phone. What do people do? I'm used to having a crappy phone that can live in the same pocket as keys and other dangerous items!
  • Camera slow, worthless in low-light situations.

Really looking forward to Tomdroid!

Wednesday, October 22, 2008

Tomboy Planning Meeting Tomorrow

In case anybody's interested, we're having our planning meeting for this development cycle in #tomboy tomorrow...

Thursday, October 23, 2008 at 1930 UTC
http://www.timeanddate.com/worldclock/fixedtime.html?month=10&day=23&year=2008&hour=12&min=30&sec=0&p1=224

That's 12:30 PM PDT, 8:30 PM BST, etc etc.

Everybody is welcome! We've started a wiki page to gather ideas before
holding the meeting, so check it out here, and add your name if you're
attending, along with any ideas you might have:

http://live.gnome.org/Tomboy/DevMeetingZeroPointFourteen

Topics to dicuss:
* Features for this cycle
* Cross-platform updates
* Plans for bug/patch days to clean up bugzilla

My personal goals for this cycle:
* Solid Windows binaries with every 0.13.x release
* Experimental Mac binaries with every 0.13.x release
* Power through bugzilla, with a major focus on memory/performance
issues and other long-standing embarrassing bugs (like note renaming
problems).
* Better community management on my part, frequent bug/patch days, not
letting patches rot in bugzilla. Basically, enabling our awesome
contributors instead of frustrating them!

Monday, October 20, 2008

Tomboy Preview for Windows and Mac

Please To Try

At the end of August, I told you about my little project to bring Tomboy to Windows users. Well, last week I finally merged that code into trunk. And then Friday, the excellent Mono team released a Mono 2.0 installer for OS X, and I found that my Windows build of Tomboy finally worked pretty well on the Mac, too. Of course, some platform integration there would be nice...





Click for full-screen shots. Notice that I added a menu for tracking open note windows, and attached the classic recent notes menu to the dock icon. This is not the most elegant solution, but I wanted Mac users to play around with it and share their own opinions. I'm very open to changes here. :-)

I didn't have any plans this weekend, so I present to you "preview builds" of Tomboy 0.13.0 for Windows and Mac OS X. I'm distributing them with the disclaimer that they are not widely tested, though in my own testing I have found no bugs that would make me worry about loss of data. Just consider yourself warned, and please back up your notes.

If you find any bugs, or have ideas for better platform integration, or find issues with install, please please PLEASE file bugs!

Click to file a bug for Tomboy on Windows!

Click to file a bug for Tomboy on Mac OS X!

Mac Instructions
  1. Install Mono 2.0 for Mac OS X.
  2. Download and mount the Tomboy disk image.
  3. Drag Tomboy to Applications, run!
  4. (optional) Copy your notes to ~/.config/tomboy

Mac Known Issues
  • Shortcut keys all use Control instead of Command.
  • The Bugzilla add-in doesn't work.
  • In the note window toolbar, notebook names can be ellipsized oddly.
  • Hand cursor doesn't show when hovering over links, but they're still clickable.
  • No keybindings support.
  • No i18n support.

Windows Instructions
  1. Install Medsphere's GTK# SDK installer (the runtime installer should work, but in my testing it did not install a particular registry key needed for Tomboy to recognize its presence).
  2. If you are running Windows Vista, you may need to follow additional instructions to work around an installer bug.
  3. Restart your computer.
  4. Download the Tomboy installer.
  5. Double-click to install!
  6. (optional) Copy your notes to %appdata%\tomboy

Windows Known Issues
  • Menu rendering issues.
  • Two console windows appear briefly when Tomboy starts (fixed in Mono.Addins SVN).
  • No drag and drop from other apps into Tomboy (appears to be unimplemented in GTK+ for Windows).
  • If you try to run Tomboy twice, it should show the Search window instead of launching again, but sometimes it will not show the Search window until you have interacted with Tomboy in some other way (by hovering over a window or clicking the tray icon, for example).
  • No i18n support.

Big Thanks

This was actually a pretty easy job, thanks to these folks:
  • Eoin Hennessey, who pioneered a lot of this work in his banshee-osx git branch, which he and Aaron are merging into Banshee trunk this week. Among other things, he created Mono bindings for Imendio's excellent ige-mac-integration library, and scripts for building app bundles.
  • Andrew Jorgensen, Thomas Wiest, Marc Christensen, and Geoff Norton of the Mono team. These guys have been rocking hard on Mono's Mac story, and it shows. Thanks especially for getting me a build of MonoDevelop in time for my Saturday hack fest!
  • Aaron Bockover, who keeps threatening to do a Mac release before me.
  • Brad Taylor and his old Medsphere cronies, who whipped gtk-sharp on Windows into shape.
  • All GTK+ developers and porters, especially those at Imendio!
  • The entire Tomboy community, especially Dmitry Kostenko, Doug Johnston, and Samuel Vandamme for their patches to help make Tomboy on Windows a reality. You guys are awesome!

Tuesday, September 30, 2008

Touching Banshee, Porting Tasque

Toward a more clickable Banshee

I've written on a patch to make the artist and album text in the Banshee track info display interactive. 95% of the time I am listening to my library on shuffle, and sometimes I hear a song and decide I want to hear more from that artist or album. Well, with my patch, you can click on either to perform a search on your library.



You can also right-click and add the album or all tracks by the artist right to the play queue, which is my favorite Banshee trick now. Have you ever used the Banshee Play Queue? It's really cool...if you're listening on shuffle and you add a bunch of stuff to the play queue, it will play those items in order and then go back to shuffling through your library (or whatever you were listening to before you shoved stuff into the queue).



Click to see low-quality demo on YouTube.

So why is this still just a patch and not in Banshee SVN? Well, really, it's kind of ugly, don't you think? Here's this pretty Banshee UI with some gross hyperlink-looking text in the middle of it. What do you folks think I should do?
  • Use a different color, like "Selected"?

  • Only change the text color on hover?

  • Both?

The only thing I like right now about having it colored all the time is that it makes the feature more discoverable. But is it worth it? Any thoughts on the appearance or behavior of this feature? If you build Banshee from SVN, give it a try and see what you think!

I'm busy lately so if somebody else wants to mess with this bug, be my guest. It won't get into SVN until after Banshee 1.4 is released, anyway. ;-)


Tasque Goes Cross-Platform

I couldn't sleep Thursday night, so I yanked some of my code from tomboy-portable2 and got Tasque going on Windows. Then I decided Tasque is simple enough to play with that I'd better get it going on Mac OS X, too. This weekend I even put together I nice little disk image for Mac users. Big thanks to Eoin Hennessy for creating Mono bindings to Immendio's Mac/GTK+ integration library. The next Tasque release will be equally supported on Linux, Windows, and Mac, so feel free to start filing bugs.





Really this is just an excuse to try stuff out for Tomboy.

Tuesday, September 23, 2008

Tomboy 0.12.0 Released

Yesterday I unleashed the latest stable Tomboy release. This has been a less active cycle than usual, but in 0.12.0 you can experience the wonder of:

  • New Tasque add-in

  • Add "New notebook..." menu item to Notebook toolbar button

  • Many fixes to note synchronization

  • Improvements to Bugzilla and HTML Export add-ins

  • Tray icon ported to Gtk.StatusIcon

  • Support for --debug, --trace, and --profile when running Tomboy
The following contributors were especially helpful in making Tomboy 0.12.0 happen: Boyd Timothy, Alex Graveley, Alexey Nedilko, John Anderson, John Carr, Jon Lund Steffensen, Łukasz Jernaś, Romain Tartiere, Sebastian Dröge, Stefan Cosma, and Stefan Schweizer. A big thank you to them, and to our hard-working translators, too!

The lack of activity during the 0.11.x cycle has disturbed me (especially because it's mostly my fault!), and I've written to our mailing list about how I think we can do better this cycle. One easy way you can help is by voting for your "favorite" Tomboy bugs.

I'll write more about plans for our next stable release after we have our dev meeting, but you can be sure that I haven't forgotten our proprietary compatriots. I'll be merging the tomboy-portable2 branch into trunk Real Soon Now.

Thursday, August 28, 2008

Hack Week III: Tomboy Joins The Dark Side

Tomboy on Windows Where It Belongs

As you all know, my job here at Novell is to migrate all worthwhile desktop Linux applications off of that ridiculous platform and onto Windows so that we can do away with this nasty open source stuff. Unfortunately I haven't yet gotten the paper work to close up my code for the latest victim of this effort, so for now dirty open source hippies can get it here:

http://svn.gnome.org/svn/tomboy/branches/tomboy-portable2/

Somebody even impersonated me and posted instructions and current limitations on our mailing list (soon to be replaced with a 1-900 number offering support for a reasonable fee).

And here's an image of what it looks like. Windows has a really awesome feature where you can press your "Print Screen" button, and then you dig around in the menus to find the excellent Microsoft Paint application, at which point you recall that you can produce a "screen shot" by "pasting". Then you save in one of a myriad of excellent file formats, and you have an image of what you were doing on your computer! You can then share it with your friends like so:



What do you think? Excited to end the Linux charade and switch to a solid and hip platform like Vista? Woo!

I feel very silly today.

Utah Open Source Conference

I was fortunate enough to get to join my friends and coworkers in Provo for this Hack Week. I normally work from my home office, so I'm having a blast seeing everybody. Today we're working at Salt Lake Community College as part of the Utah Open Source Conference. I'm actually talking with my buddy Brian Merrell about the efforts of the Mono a11y team (you know, my actual job). It should be fun, we've got some neat slides and we are both cool people so I don't really see what could go wrong. The UTOSC team has done a ridiculously awesome job setting up this conference, so I'm really excited to see everything come to fruition. We had a sweet speaker dinner last night but moron that I am I forgot my camera so you just have to take my word for it!

This Tomboy stuff still needs a bit of work so off I go. Hopefully having Tomboy run on more platforms will help us attract more users and developers. I know it's a popular request so I'm pretty serious about getting it supported in trunk. Later guys!