Skip to content

Things I have been up to…

I have been absent from blogging a bit :(
So here are the highlights of the past month:

  • GNOME Clocks is shaping up nicely, a nice example of prototype becoming product. It is a very nice experience for me in developer <-> designer communication. Something that I have been working on with Allan Day, Jakub Steiner, Garret LeSage and Hylke Bons. (I will wrap up the code and push it up somewhere tomorrow). I will be giving a talk about this experience along with Allan Day (including prototyping) at FOSDEM.
  • The prototyping spirit within the GNOME design team is growing. After playing with  Jakub Steiner’s HTML/JS prototype I got inspired to play with HTML/JS too.
  • The Zeitgeist team set up a nice TODO list for the next release and beyond (blog post coming soon). Some awesome commit by Michal Hruby managed to reduce the memory consumption by a big chunk by “optimizing allocations of variants”. Our bug list for the next release has only 4 more bugs open so take a stab if you dare…
  • Thanks to Collabora, I got a N9. After ruining my SIM card trying to build a Micro-SIM I ended up running to O2 getting myself one from there that got activated after 30 minutes. Now I am playing around with QML again.
  • I started playing with Plasma Active and have very mixed feelings about it. Tech wise its pretty good, but I don’t find it intuitive enough like GNOME 3 or Unity on a tablet. I seem to be missing the concept of activities really.
  • I started getting into XBMC and now Ubuntu TV is announced… will be trying it out soon.
  • I am addicted to Every Detail Matters.

GNOME Shell face-lift extension

I decided to prototype an extensions based on Jimmac’s mockups. I still need to fix some minor issues and add animations. It is not perfect yet and is a bit different from the original design:

  • Applications Icon is on the top of the bar instead of the bottom (seemed more comfortable for me)
  • Searchbar is centered (I think it was Hylke Bons who told me to do that a while back)

but I am still working on it and hopefully can upload it to extensions.gnome.org soon, so we can get feedback! I will leave you with some screenshots and a video for now…

One year Zeitgeist sponsorship by Collabora

This month Collabora has been sponsering zeitgeist for one year, here is the story about how that came to be and what happened during that year.

How I got in contact with Collabora?

I met Rob McQueen, Phillippe Khalaf, Sjoerd and some from the Telepathy team during Gran Canaria Desktop summit. I needed help with an idea (Teamgeist) and a couple of months later I was introduced to Youness Alaoui (until this day I consider a very good and close friend) as well as Sumana Harihareswara (from whom I learned a lot about organizing).

How I got sponsored?

Collabora saw Zeitgeist as a promising technology and observed the development for a while. They wanted to leverage it in GNOME more. After I tried to do some work on GNOME Shell last year, I was approached by them and they offered to sponsor my work, integrating Zeitgeist into GNOME as well as work on Zeitgeist. They also put two of their developers, Abner Silva and JP Whiting, to work on the Zeitgeist Qt bindings for a while.

What I did during the year?

I mainly get sponsored for working on Zeitgeist and related stuff for GNOME and KDE  (development, bug fixing and specs definition). Some of the things I worked on were:

  • Zeitgeist extensions for GNOME Shell: The purpose of the extensions is to integrate some Zeitgeist experience into GNOME Shell. The experience comes in form of three extensions (you can grab the source from here)
  • Jumplists: Displays the recently/most used files used with the apps  displayed in GNOME Shell. The extension has been uploaded to extensions.gnome.org

  • Journal: Zeitgeist based activity-history journal as a gnome-shell overview tab. It allows you to access you files via GNOME Shell and sorts them for you in chronological order. The extension has been uploaded to extensions.gnome.org

 

  • Search: Makes the Shell search via Zeitgeist and and categorize the results better. I will upload it to the extensions website when the highlighting issue is fixed.

  • Activity Log Manager: Due to popular demand we needed to hack on a privacy tool. Along side Manish Sinha, JP Lacerda, Stefano Candori and Siegfried Gevatter, we developed ALM. It is a graphical user interface which lets you easily control what gets logged by Zeitgeist. It supports setting up blacklists according to several criteria (such as application or file types), temporarily stopping all logging as well as deleting recent events. ALM will be seeing deeper integration into Ubuntu and hopefully GNOME too soon. You can grab the code from here.
   
  • Gedit Dashboard: Michal Hruby’s idea during the hackfest has become reality, after Hylke Bons and I spent almost a month working on it from scratch. The idea was to have a “Google Chrome”-like dashboard for gedit as well as a quick search. The patient and kind Gedit folks helped me clean up the code and now its part of gedit-plugins. This is my favorite plugin for gedit now. You can get it from http://git.gnome.org/browse/gedit-plugins.

  • libqzeitgeist (now maintained by the amazing Trever Fischer): libqzeitgeist was developed by Abner Silva and JP Whiting. It allows easier development for KDE apps. It is used in Trever’s plugin for KDE Activity Manager to push events directly into Zeitgeist. Trever is now maintaining the library and added QML support. You can find the work here.
  • Zeitgeist Engine: Of course since all the previous work is powered by Zeitgeist we had to work on getting Zeitgeist better and better. They sponsored my development and maintenance with the team for the 0.7 and 0.8 series and  backed up our GNOME sponsored hack-fest. The biggest accomplishment was done when we ported Zeitgeist to Vala, resulting in less memory consumption and much better start-up times.
  • Epiphany Zeitgeist History (under development): I am working on patching Epiphany to use Zeitgeist as it main storage for History and “Frecency Search”. The Epiphany guys already have a history rewrite branch in which I am sneaking in some code to replace their SQLite back-end. In the end its less code then what they have :P
  • Gtk-RecentManager (worked on designing the API with Federico, Siegfried and Michal Hruby): One of the tasks that emerged during the Desktop Summit was replacing the Gtk.RecentManager logic (which has some flaws). We started designing and discussing the issues at hand on LGO. Implementation is now being done by Siegfried and Federico.

What is next?

Collabora currently also sponsors Siegfried Gevatter for his work on Zeitgeist since last March. I will be trying to do some more GNOME related work. Currently I am trying to work on prototypes for the GNOME Design team to help them evaluate their designs. I will also be experimenting with some internal Zeitgeist algorithms stuff soon. I don’t really know what is next. But I hope we can go further into integrating more with GNOME applications and becoming a blessed GNOME module.

Fun fact?

I used GAJ to write down my Zeitgeist development hours for Collabora. Pretty helpful tool. I can tell how long a file was open and how many times I modified it.

Web Prototype day 2

This post is by no means meant to be criticism, but rather an opinion on raising questions we couldn’t get answers to.

So on day 2 I got Federico Mena and Garrett LeSage to try out my prototype. While we noticed some nice features there were also some very unclear ones too. Today we concentrated on the “Tabs” and “Top Panel”, which is what is covered by the prototype.

The Good:

  • Minimalism. It really is easy on the eyes in a way. Reducing the chaos of tabs is relaxing.
  • Having a shrunk version of of the pages you got open in the “Pages” helps you navigate easier, than navigating via page titles. Its links switching apps in GNOME Shell pretty cool.,
  • Blends in with the other designs of the core GNOME apps.

The Unclear:

Overview

A lot of usability is unclear. Let us take this “Pages” screen (from the wiki https://live.gnome.org/Design/Apps/Web) as an example:

It is not clear which one are really the currently open pages and which one are the “Recent”, since the “Recent” button is highlighted. We are not even sure if the upper one represents the currently open pages. If not then where are the tabs? If yes then based on the mockup there is this horizontal line splitting the view in two:

Our interpretation of these mock-ups which looked the following (keep in mind its a functional prototype which means some things are not fully implemented):

(the implementation doesn’t show screenshots of recent stuff since its hard to query those, I replaced them with empty buttons).

So the way to differ according to the (real looking) mock-ups in the wiki is to give the upper section of the view a toolbar style. Seems fair and IMHO opinion it looks nice. Problem however is how distinguishable is it from the the lower “Recent” section? How big does this view get? If I have 20 tabs open that is a lot of scrolling to be done to find one of my open pages, and even more to be done to get to the “Recent” stuff (which is not opened anymore)…

That being said the lower recent section (the real recent stuff) has to be defined better. Is it:

a) going to represent “History”: Bad idea because my history is huge and this won’t even scale.

b)  just a predefined of maximum amount of recent pages. How do I find my History then?

Navigating through Pages:

While the mock ups introduce a new and very nice way for recognizing the websites you have open. It kinda takes you out of the focus. One thing I like about tabs is that I have what I am working on in Focus. And by just moving my eyes I can read the label of the tabs and decide if I want to navigate to a new tab or not. With the current mock up I would have to zoom out of my current page and back in. Not sure how good or bad this is.

As far as we could tell the designs are inspired by several other projects by Apple, litl, Pre, Chrome, etc… Some use tabs some don’t… Honestly all of those that use tabs are more intuitive in our opinion. Maybe because I am used to them, this might change.

Creating new Pages:

How do I create pages? Based on the mock ups I will need to use the search bar as seen below.

How we understood it is the search bar will search through the history and open pages too to find what I want… This is just brilliant (and I am not being sarcastic). If I can’t find what we are looking for in the History, there is a “Search” via Google (or anything else of your choice). This is very common for non-techies to now use the url bar and instead do the following:

  • Always use the search entry next to the URL bar in Firefox
  • Type “Gmail” or “Facebook” or “Youtube” or “cuevana” there, in the search entry
  • Pick the first link from Google, which is “of course” the right one, and goes on with life

The only corner case I see here is if I know the URL. How does this work? Do I really need to go through Google. Is there no easy way to create a new page (please don’t tell me menus).

As for the sorting according to the wiki will be done wither via recent or frequent and will the results will be either presented as a grid or linearly… Its still on the Tod o list.

Closing new Pages:

There was no obvious way but I guess having a small x on the corner of a page button to close it would make sense. So no biggie.

Viewing a page:

Its pretty standard and the reduced noise in the panel makes it comfortable however it still feels like wasted space. While I agree with Mathias Hasselmann on the principal of the flaws that he addressed in the following illustration,

he must have not gone through the whole wiki… When you click on the Facebook label it will expand into a URL bar. Not sure what to think of this idea. The button on the VERY right is confusing. It is supposed to be a share button but since there is so much empty space I expected it to be a close button. The panel does not give the impression of a real panel. However this might change since a URL bar might replace it indefinitely due to some comments by the WebKit-Gtk team on “phishing”.

Last comments:

I still can’t make up my mind on the design whether it is good or bad. It has potential but needs to be tested through, before it is decided that its going to be the “Web browser for GNOME”. In a lot of way the ideas make sense but they don’t seem practical all the time. Visually appealing does not always make the functionality usable. I know some other ideas emerged during the Desktop Summit by Hylke Bons and Garrett LeSage on an alternative view for Epiphany.


What I like about this is I understand it from the first look. I know how to create a new page how to navigate through stuff etc… However I do miss the thumbnails from the Web design a bit. And again where is my URL bar? Yet I LOVE THE SIDEBAR. You can check out more of the duos work here.

I think (my stupid opinion) it is to early to decide that “Web” should be the new Web browser for GNOME. I can not see where “Web” will offer me something better than Chrome or Firefox other than integration with the GNOME platform. Web won’t make me ditch Epiphany. But if Epiphany is gone I am not sure I want switch to Web yet. It is missing the Umpf! :P

That being said I am done with the first phase of prototyping and you can get my code from git (you kinda need Zeitgeist for the history part since I don’t feel like hacking a DB for a prototype). You can grab the prototype from https://github.com/seiflotfy/gnome-prototypes… Again I need to underline that the implementation is a prototype which means limited (very limited) functionality to just play with the designs. The code will not be maintained and will be thrown away.


Here is also a video



Prototyping Web

Yesterday Web (the new Web Browser for GNOME) was announced… You can find the mockups and discussion on https://live.gnome.org/Design/Apps/Web

Often I can not find myself able to criticize or make up my mind about mockups. I need something interactive to work with. While a lot of time things seem logical, the concepts don’t reflect on reality and some ideas need fine tuning.

So in the spirit of allowing others to look into the usability of the design and point out the good and bad I decided to prototype Web. It will be done tomorrow, since I still have some unresolved issues. Technically the prototype (browsing through the site works and switching pages) works, I just need to work on some minor issues and getting  screenshots of the each page as well as store history to populate the dialup thingie.  From a technical aspect everything can be done very quickly. I also found a place for Tracker (Boomarks) and Zeitgeist (History/Queue) in the prototype.

So what I need is a way to make a screenshot of a webkit webview? Any hints are welcome!

I am prototyping in Python. The end product will either be in JS or Vala or C. This discussion needs to be done with devs.

Here is a teaser…

UPDATE: I was informed that it will be the new design for Epiphany :) YAY

gedit plugins now has the dashboard

The great and fun gedit crew have accepted my proposal to include the Dashboard into their plugins repository.
Now you will find it under:
git clone git://git.gnome.org/gedit-plugins
We removed some dependencies and relied on GNOME common tools. We will continue fixing minor issues with the plugin as well as fixing some gedit bugs (the gedit crew is pretty motivating)
Feel free to ping me (with technical issues) or Hylke (with usability issues) if something is bugging you or you have any suggestions.
I will leave you with a small video and hope you like it and some screenies:

-

-

Gedit – Dash 0.1

At last you can try it out the gedit plugin that Hylke and I have been working on for the last couple of days..

In an experiment to for alternative “open file” dialogs we started experimenting with the Dash. When you open a new tab you will be greated with the following page. The thumbnails generated skip “comments” and “imports” and try to jump directly to some code or text from your work.

If you start typing you will see results in a new view…

Clicking on Most or Recently Used will take you back to the Dash.

This plugin depends on “zeitgeist” and the “zeitgeist-fts-extension“. You can get the code from launchpad

bzr branch lp:~seif/gedit/dash

or just download the following tarball and place the content in ~/.local/share/gedit/plugins

In the following days I will be talking more with the gedit guys and gnome designers on maybe a new layout for gedit. And hopefully get the dash into gedit-plugins upstream soon…

Zeitgeist – from Python to Vala

The title says it all… You can read the announcement on Michal Hruby’s blog post. Zeitgeist has been ported from Python to Vala with its latest 0.9 cycle

We started 2 weeks before the desktop summit and are now confident enough to go public alpha with our work. With the focus of the desktop environments shifting to mobiles and handhelds, we were dealing with some resistance in terms of deployments due to Python’s slow start up times. In terms of code and performance Zeitgeist is now in Vala.

For those who don’t know Vala, its source-to-source compiled to C which is then compiled with a platform’s standard C compiler, such as gcc.

It has a noticeable faster start-up time, and less memory consumption than before. A normal Zeitgeist instance that used to run for 2 days using 15-20 MB now uses around 3.5 – 7 MB (this is on my computer though).

Also Zeitgeist now allows you to read (not write) directly from the DB. We will be updating our wrapper libs to support reading from the DB directly soon… This means apps that retrieve data from the DB don’t need to do it over D-Bus. However if you want to push an event into Zeitgeist you will have to do it over D-Bus. More or less you will retrieve your info faster now too…

The only thing not ported yet is the FTS extension but we managed to make it a stand-alone process that reads from the DB directly. We will have a nice awesome port soon so don’t worry. We are also working on an alternative extension with the Tracker guys for the FTS.

The fun part is, all libs are still compatible which means WE DID  NOT BREAK THE API

All your current apps that use Zeitgeist should be able to run normally with this new release. Except for GAJ where we you need to grab the latest code from trunk.

For all you Git lovers another big surprise now is that we got some mirror hosting on freedesktop.org too. We have some manpower to keep launchpad and freedesktop in sync for a while. So for all Ubuntu fans keep using Launchpad. For all you others use Bugzilla :P

This Zeitgeist release has been sponsored by

AND


Last but not least I would like to thank the rest of the always awesome team for making this happen…

Now get it while its hot… Zeitgeist 0.9 Alhpha

We have a little donation button on our website if you feel like donating something to the team http://zeitgeist-project.com/ for the next hackfest

Gedit – Dash (Almost there)

So now after three days of hacking around we are almost done with the gedit “plugins”. I say plugins (plural) because I divided the Dash plugin in 2. One for the “notebook” part, to handle the tabs properly in the new “form” (still a bit buggy though) and the other one for the actual Dash.

It now looks like this…

Still to do is actually having the thumbs avoid showing the headers of the files (imports, license, etc.. and somehow skip to the classes)

Also we are playing with the idea of a search for the dash… This work has not been reviewed by Hylke yet and is more or less me taking a stab in the dark. This way you open a tab and can start typing to search. Then select your result and it opens. For the search we use Zeitgeist since we need to cover stuff you “Downloaded” using the Firefox datasource or stuff you opened with gedit before…

Gedit – Dash

So over the weekend “supercalifragilisticexpialidocious” Hylke Bons and I joined forces (just like during the GAJ days) to work more on the design of the Dash…

The gedit team gave some very good feedback till now, and I will be doing some work on Gedit soon

However back to the design and implementation work I am doing with Hylke…

  • We moved the toolbar to be inside the tab, this is something the gedit guys are considering to have upstream so I will look into finishing it over the next week. Also for the sake of the Dash we removed the “New”  button and “Open” button.

  • Hylke came up with some nice modifications to the Dash itself… I think the snapshot says everything. We also added a “+” Tab.

There is still more to come so give us time and feel free to write comments. We 100% read them through