Ideas: Packages, Locales

This year I’m going to try to get back to writing a bit more.  One of my ideas of how to do that is to dump random ideas I have from time to time.

Today here are two ideas that seem good in theory, but will probably require a bit of work to make real, and both can use a bit more design and polish before I’d consider moving forward with them.

Package System Hooks

This idea comes from my experience with both Ruby and Python on Debian systems, but could certainly apply to other languages as well (Perl comes to mind as an obvious one, but there are likely others).

Background

Debian (and most GNU/Linux and other free operating systems) has a package manager (apt in the case of Debian), and it works great.  Most users can and should use their package manager as the gatekeeper to their system.  Even servers get a lot of benefit here, and most system administrators should be rolling their own packages for the meat of their servers just to make their lives easier.

The disconnect comes when you use HLLs like Ruby and Python, which have their own repository/package systems (eg, gems in the case of Ruby). Some of the libraries available via the languages’ systems are also available as packages, but many are not.

The Idea

The idea is that the operating system’s package system can provide a way to include the information from the other package systems.  This would make it much easier to manage all the packages from one source, and it would ease the pain when there’s a system package for a language’s library.

Further, this could even be leveraged for web browser extensions, locales for specific applications, etc.

Ideally, in the case of the browser, the OS package system would need additional functionality for managing per-user packages (so that extensions could still be registered even if they only belong to the current user).

Having this additional functionality available would probably lead to even better interoperability.  For example, a Chromium extension could be registered, and if the user opened Firefox, Firefox could talk to the package manager and then prompt the user to install the same extension for Firefox.

Additionally, data could eventually see the same sort of management available.  Bookmarks could be considered a “data package” that could be decoupled from the browser.

Locales like Google Does Translation

This idea comes from my experience with reading websites with translation tools and localization with my Firefox extension.

Background

One of the triumphs of free software is the ubiquity of localization.  Community-driven software means that users can readily assist in getting high quality translations to their own language out to the rest of the world.

The web itself follows a different model, where third parties like Google offer translation tools.  One of the benefits of the web’s approach is that translation services can provide JavaScript that lets users give translation feedback.  If you visit a page translated by Google, you can click on a translated sentence and offer an improved translation.

The software model pulls the strings out from the code, and these are translated into other languages.  This approach is usually higher quality than the web translations, but it requires volunteers, and it can be cumbersome for people that don’t want to spend too much time.  (My assumption is that the easier you make it for others to help you, the more likely they will do so).

The Idea

The idea is to let the applications themselves have the same kind of “click and write” translation facilities that Google and other translation services inject into the web.  It’s a bit trickier in applications, as the user would have to more explicitly select and translate, but I believe it is technically feasible.  It’s most definitely feasible for Gecko-based applications, and GTK+ applications can probably handle it as well.

The process would be in two parts: suggesting translations, which get spooled by a server, and validation by trusted reviewers.  The fact that validation would only require reading two strings and affirming means that it should be easier to enlist helpers there, and the fact that translators would be drawn from the users without the need for volunteering or signing up means that they would be more likely to send word.

I really like this idea, because it seems (to my mind anyway) to be based on a strong separation of duties that will elegantly allow a solution to a problem.

Bonus Idea

This is an offshoot of the same idea, though it actually occurred to me before this idea.  Transcripts for videos, based on the same sort of behavior.  A user is given a short clip of video and types what they hear, and then later other users are given the same to review.

Prior Art

Obviously these ideas have some precedents in the real world.  I pointed to the Google translation services, but ReCAPTCHA is another example, as is Wikipedia.  Over time I expect to see more examples emerge that use this same pattern, and it will eventually penetrate the governmental models, with better separation of powers and improved checks and balances.

Thanks for taking time to look at these ideas, and I’ll be happy to hear any criticisms you may have.