Computers

Prefab makes all software open source

Prefab makes all software open source
View 5 Images
Prefab highlights the nearest cursor target so that a user can activate a control without necessarily accurately clicking on the exact icon
1/5
Prefab highlights the nearest cursor target so that a user can activate a control without necessarily accurately clicking on the exact icon
2/5
3/5
Prefab using the Phosphor tool to show a recently unchecked box and a manipulated slider in iTunes
4/5
Prefab using the Phosphor tool to show a recently unchecked box and a manipulated slider in iTunes
Prefab used to create a parameter spectrum for an Adobe Photoshop filter running on Microsoft Windows Vista
5/5
Prefab used to create a parameter spectrum for an Adobe Photoshop filter running on Microsoft Windows Vista
View gallery - 5 images

Researchers from the University of Washington have managed to add customization and accessibility options to proprietary software without even touching the source code. Rather than alter program code, Prefab looks for the pixels associated with the blocks of code used to paint applications to a screen, grabs hold of them and then alters them according to whatever enhancements the user has chosen to apply. Any user input is then fed back to the original software, still running behind the enhanced interface.

Although open source software is playing an increasingly important part in our digital lives, most of still use commercial applications where the code running them is locked down tight and rarely caters for too much uncontrolled tinkering. But what if you want to control an MP3 player from within Microsoft Word or view lots of different possible Photoshop renderings all at the same time? Proprietary code will undoubtedly prevent you from doing such things.

Rather than trying to break into the program code and have to deal with ensuing legal challenges, James A Fogarty and Morgan Dixon from the University of Washington have come up with a way of manipulating just about any software application at the pixel level and effectively redrawing it together with any user interface enhancements or controls added in. "Microsoft and Apple aren't going to open up all their stuff. But they all create programs that put pixels on the screen. And if we can modify those pixels, then we can change the program's apparent behavior," said Fogarty.

Almost everything that appears on a display is made up of prefabricated blocks of code (such as buttons, dialog boxes, scroll bars and so on). The Prefab tool looks for such code blocks as many as 20 times per second and alters the way they behave. So adding elements from one program into another is made possible without so much as touching the code that runs either.

More accessibility options

As well as the potential for creating unified user interfaces or customized application layers, Prefab also holds the potential for splicing in custom or unsupported accessibility tools such as Grossman and Balakrishnan’s Bubble Cursor (which dynamically resizes the cursor so that it always captures the target nearest to it) or Baudisch et al’s Phosphor (which shows user interface changes by means of highlight or afterglow) or Worden et al’s Sticky Icons (which adjusts mouse gain to identify a target).

The beauty of Prefab is that it is application and operating system independent, meaning that all it really needs to work is the presence of the blocks of code created by common program development frameworks to paint the many and varied program user interfaces onto the display. This obviously offers great potential for users to reclaim their workspace and do exactly what they want with just about any program they might have.

Fogarty and Dixon will be demonstrating Prefab at the Computer Human Interface conference in Atlanta on April 14. The following video shows much of what will feature.

Prefab: What if We Could Modify Any Interface?

View gallery - 5 images
2 comments
2 comments
Richard Raszka
This looks cool, I wonder if this can be used for scripting...it looks like it has the potential
Gregg Eshelman
Can this be used to un-do the stupid changes major companies keep making to the UIs of their big-name programs?
Or how about fixing Firefox 5 to be normal instead of a poor clone of Google Chrome?