Labs/Ubiquity/Ubiquity 0.5 Release Notes
Changes to Web Content
- The 'tabs' at the top of the about:ubiquity pages have been reorganized. The new list is "tutorial", "settings", "your commands", "get new commands", "support", and "hack ubiquity".
- Tutorial page has rewritten contents aimed at brand-new users: explanation of what ubiquity is, etc. Video has been removed.
- Tutorial page has new interactive tutorial which walks user through the basic concepts of using Ubiquity and introduces several of the most useful commands.
- All the developer-related stuff is off the front page and is now on the "hack ubiquity" page along with the command editor.
- UI to change keyboard settings moved to same page with skin-list, and that page renamed from skin-list to settings. The new language settings are also on that page.
- New support page has links to bug reporter, to reset settings, and links to many places to get help.
- Commands list has been combined with subscribed feeds list into a new unified interface on the "your commands" page.
- Links are updated, some slogans are changed, etc.
- New parser implementation (parser 2), with new parsing algorithm; the design is documented here. Parser 2 is now the default; there is a switch on the Settings page which you can use to get back to the old parser if you want it.
- Parser 2 identifies arguments by semantic roles for easier localization. (e.g. the recipient of the email command is a "goal" role, which means it is identified by the word "to" in English, by the particle "ni" in Japanese, etc.)
- Language-specific grammar files for Parser2 are a new format, which is all declarative -- essentially, just a bunch of strings, so that non-programmers can help with localizing the parser grammar. See theParser 2 Localization Tutorial.
- Parser 2 uses a more sophisticated ranking mechanism, which among other things allows nountypes to contribute weightings that affect how their verbs are ranked in the suggestion list.
- Spaces are now allowed in command names, a feature of which we take full advantage -- see the section on changes in standard feed commands.
- Parser language settings can set a preference for verb-final or verb-initial parses. #771
Localization and Internationalization
- We are using gettext() and bilingual PO files for localization. That means that human-readable strings appering in commands' preview() and execute() functions should now be wrapped with _(). (See the 0.5 command development tutorial for details.)
- We have mostly-complete localizations of standard feeds to Japanese and Danish as well as English. (We do not, however, yet have localizations of the noun types or the static web content such as the tutorial.)
- We have the parser grammar plugins for several other languages, including French, Swedish, Italian, Portugese, and Chinese, so we will soon be ready to start localizing to these languages as well.
- See the Localization Tutorial for how to make the Ubiquity parser grammar work in your language, and the Command Localization Tutorial for how you can help with the translation of strings in order to get more commands localized to more languages.
Changes in Command API
- The API for writing Ubiquity commands has changed for Parser 2. Parser 1 is forward-compatible to use commands written for Parser2, but Parser 2 is not backwards compatible to use commands written for Parser1, so commands written for Parser 1 need to be rewritten.
- We know that changing the API is a pain for command developers, so we will try not to do it often. We tried to make the new API future-proof and flexible enough to support our plans for the forseeable future, so we don't think we'll have to change the API again after this.
- Here is the Ubiquity 0.5 command development tutorial that documents the new API.
- Here is the command conversion tutorial that documents how to take a command written for the old version and make it work in the new version.
Changes to Built-in and Standard Feed Commands
- Built-in and Standard Feed commands have all been updated to work in Parser 2.
- New commands include "enable command", "disable command", "get support", "run selector-selector", "command history", "undo closed tabs", "run bookmarklet", and "check livemark". See the command list page for documentation on these new commands.
- The "map these", "sparkline", "convert (to format)", and all image-manipulation commands have been moved out of the standard feeds into the experimental-command feed, because their interfaces and implementation need to be redesigned in order to bring them in line with the standards set by the other commands. You can still run them if you go to the "hack ubiquity" page and click on the "experimental feeds" link (at the bottom left).
- Most commands have been renamed to bring them in line with our new naming standards. All commands with hyphens in their names now have spaces instead. Command names should all start with action verbs now (e.g. 'check weather' instead of 'weather', 'list commands' instead of 'command list'). Many synonyms have been added. Wherever possible, we tried to make it so that using the old command name would still complete to the new name (e.g. typing 'weather' still completes to 'check weather').
Asynchronous Queries and Noun Recognition
- Parser queries are now objects which can be created and run asynchronously, which means that multiple queries can in principle be run at the same time and canceled individually (though we don't currently use this feature for anything).
- Nountypes can produce suggestions asynchronously by doing network calls to identify input; if these noun suggestions result in new command suggestions entering the top rankings, the new architecture allows the suggestion list to be visually updated in real time as the new suggestions come in. If the user changes their input, all outstanding nountype network calls get canceled.
- Setup should handle errors more gracefully #469
For Skin Developers
- The DOM structure of the command window has been updated, so the CSS for skins will need to be updated. Skins written for prior versions of Ubiquity may not work correctly in 0.5. The Skinning Tutorial v.0.5 reflects these changes.