Improving The Ubuntu Search Experience With libcolumbus

Search is at the heart of Ubuntu. Whether you search for applications or content in the dash, search for functionality in your applications the HUD, or search within applications and your file manager, for Ubuntu to be successful we have to get search right.

As we build search more and more into Ubuntu, it becomes increasingly popular. As an example, the HUD has been a really popular feature, but if there is one piece of feedback we hear more than ever is that it would be nice if the search in the HUD was even smarter.

This is a great way in which Open Source and community can iterate and improve.

One core project being worked on to consolidate search best practice is libcolumbus. libcolumbus is an implementation of the Levenshtein distance algorithm, but with a fast search and custom errors. The library is currently used by the HUD, but it is designed to be used across other parts of the desktop and devices as well as embeddable in applications. As with all search algorithms, iterations help bring better user experiences, and libcolumbus is something we would welcome community involvement in to help bring these improvements.

It is written in C++ and the author, Jussi Pakkanen, is keen to work with our community to grow involvement. Hacking on and improving libcolombus will not just help search in one place, but everywhere.

First, be sure to see Jussi’s blog about libcolombus for more information about the goals and architecture of the library.

Also see the Launchpad project and you can get the code with:

bzr branch lp:libcolumbus

I have asked Michael Hall to work with Jussi to help get a hacking guide, list of bugs, and feature goals online soon, so stay tuned for more information. Also, Jussi is in UTC+2 timezone and is available in #ubuntu-unity on Freenode (his nick is Satoris).

  • Jeremy Bicha

    Why GPL3? Much of GNOME (and the default Ubuntu install) is still GPL2. Would you be willing to relicense so that the library could be used by more apps?

    Is this subject to Canonical’s Copyright License Agreement?

  • Anonymous

    I didn’t choose the license; you should reach out to Jussi about this.

  • Martin Owens

    Why GPLv2? sounds like the religious are taking over at Gnome.

  • Martin Owens

    I am concerned that search has replaced every other method of data organisation. Such that people like myself who are dislexic and those who think in terms of shapes, sounds or position are completely left out in the cold; while language thinkers (and be honest) English majors have a lovely time with computers that wok exactly like they think. And no other way.

    It sounds as bad as the school curriculums of most countries. Junk all the useful arts, sports and science and replace with non-stop English language. They assume everyone is exactly the same, and people just aren’t. not even those mythical non-technical users we keep on trying to target.

  • Jeremy Bicha

    I don’t understand what you’re saying.

    I’m not saying the library should be GPLv2, but as long as it’s GPLv3 it can’t even be considered for most open source projects.

    Similarly, if it’s subject to the CLA, it won’t be seriously considered by many open source developers.

    So the question is whether the developers want the library to be exclusive or to be a standard.

  • Anonymous

    I don’t think search has replaced everything else, I just think it is one shortcut to finding content. I agree that being able to browse and find content in other ways is important too.

  • Martin Owens

    So you’re telling me that libraries that are GPLv3 are rejected by developers. Why do we even bother if people are going to act like that.

  • Jeremy Bicha

    A GPLv2 project cannot use GPLv3 code without relicensing as GPLv3 or higher.

    For an example of this, readline5 is GPLv2 or higher and readline6 is GPLv3 or higher, which is why we have to keep readline5 in the archives. GPLv3 libraries are fairly rare.

  • Anonymous

    I think this library integration is a huge step FWD. Although ultimately this library is pointless if the search is great, but opening the dash to search is still painfully slow. I bring this criticism w/ this suggestion: If a user starts typing b4 the dash is fully loaded, then those characters should be filled in properly. I got this idea from the way gnome-do does things. I had to switch to make finding my apps easy. Gnome-do also adds weight for things that you select often. I believe this was promised from the hud, but where I think really needs it is the dash.

  • Hashem Nasarat

    I don’t think the name is great. It evokes something of a controversy and is evidence of an ethnocentric bias and cultural insensitivity:

  • Hashem Nasarat

    Also, there absolutely exist other examples, in euro-centric culture, of things that connote “searching” without also connoting genocide, slavery, etc; i.e.libsearch, libsherlock, libspyglass, libfinder. I don’t understand why you had to choose the one that led to the decimation of cultures, loss of human history, colonization of the Americas, and enslavement of natives and Africans. (Ironic, too, that ‘Ubuntu’ is an African word). I would heavily recommend renaming the library.

  • Vincent

    Yeah! We should change the name just so we don’t offend anyone, because if we don’t we could insult entire cultures with the name of a search library. People with the last name Columbus should also change their name because someone might get offended. We have to make sure everything in this world is politically correct otherwise someone might feel bad.

  • Hashem Nasarat

    I appreciate your response, but resorting to sarcasm without actually disproving the points I raised is pretty juvenile.

    We have to make sure everything in this world is politically correct otherwise someone might feel bad. False. It’s about what kind of ethos you wish to instill in your culture. One person’s hero is another person’s cultural decimator.

    Quiz: Why is libhitler not a good name?

    Discussion question: Why would some think libhitler is not a good name, but not think libcolombus is a good name?

    Hint: It has to do with the culture in which you’re raised.

    Does ubuntu want to promote inclusivity? If so, this library should not be called libhitler and this library should not be called libcolombus.

  • James

    Search is failure. I can not find half what I loaded because the names are not known.

    But I can see way search is important. It makes money for builders, by stealing the users keystrokes.

  • Michael Hall

    Yes, libcolumbus is subject to the contributor agreement.

    I brought up your license compatibility concerns to the team developing it, and they have re-licensed it under the LGPLv3 so that it can be used by applications of other licenses.