I’m thrilled to spend this week attending the 2015 edition of the Developer Experience hackfest! I arrived in Cambridge Sunday morning and I’ll be hacking away with my GNOME friends until Thursday. My main focus this year is on application bundling and sandboxing: I’ve been giving Alex’s xdg-app a spin, and even though there’s still a lot to do in terms of tooling, it looks extremely promising.
I also spent some time working on a proposal for a preview widget in GTK, which is being discussed on the GTK mailing list as I write too.
Stay tuned on Planet GNOME more updates about this week’s hackfest.
I would like to thank the GNOME Foundation for contributing to my travel expenses, and my employer Endless for letting me attend this event.
The GNOME Builderfundraising is about halfway into its timeline, and reached the first funding milestone a few days ago! That’s fantastic news for our ecosystem, which will be able to rely on a great platform to write applications, but the fundraising is not over! There are more milestones to be met, and more money means Christian will be able to implement more features and make the project even more awesome.
I am glad my employer decided to support the project with a conspicuous donation; at Endless we write a lot of applications using the GNOME platform, and we often have faced the same struggles Christian describes about getting new developers started: how do I create or browse documentation? How do I write an UI file and integrate it with my code? How do I create a GResource or talk to a DBus service? What is the most efficient way to debug my application?
The problems Builder is trying to solve are very real and have been slowing down our ecosystem for a long time. People and companies who believe in GNOME and a solid application ecosystem around it should consider contributing to it, whether with money or developer resources!
This week I’ve been in Berlin for another edition of the DX Hackfest. Lots of very interesting discussions, and it was just awesome to see some familiar faces after a very long time.
Wednesday I worked with Jon and Tomeu on GIR-based developer documentation, improving upon the work that Jasper, Giovanni and others have done in the past. Our goal was to understand the next steps needed to achieve feature-parity with the current docbook-based approach, and how documentation pages fit with distribution, both offline for use in Devhelp, and online. Ideally we would like to use exactly the same HTML content, but this is currently not the case. Jon and Tomeu kept working on this in the past couple of days too, so stay tuned for more updates from them on this topic!
Yesterday I focused myself on GTK work instead. A long standing goal for a while has been removing the GtkThemingEngine subclass from the Adwaita theme and that was blocked mostly on a CSS-based implementation of focus rings in GTK. Benjamin and I agreed on an implementation using CSS outlines, and this has finally landed in GTK master! The rest of the day was spent discussing a roadmap for further GTK development, about which others have blogged.
Today, we kept the discussions focused mostly around GTK, with part 2 of the above roadmap discussion still going on as I type this post. I also kept coding more deprecations for the old focus style properties, to complete the work mentioned above.
I’d like to thank the GNOME Foundation for allowing me to attend this hackfest, and the wonderful guys at EndoCode for the great hospitality at their office!
It’s been a while since I’ve written on this blog, and a lot of things have changed in my life in the meantime.
April 12 was my last day working at Red Hat. It has been an incredible ride in these two years and a half, and I can say I enjoyed every single day on the job. The Desktop Team of has some of the most talented and passionate people I’ve ever worked with, and I’m so thankful for having been part of it and having learned so much.
All good stories come to an end though and after a not so easy decision, on April 29 I started my new job at Endless Mobile. We’re building an operating system to power computers in the developing world, and it’s going to be based on GNOME. It’s a very exciting job, and I moved from Boston to San Francisco a couple of weeks ago!
This also means that after some period of settlement (I haven’t found an apartment yet!) I will still be around in the community and resume my GNOME duties in some capacity
I can’t really give too many details about my new job just yet, but stay tuned!
I’m writing this post back home after a week in Brussels. I feel it has been overall a very interesting week; the hackfest has been great, and I really enjoyed the intense weekend of FOSDEM.
Following from my first report, I kept working in the Toolkit group for the rest of the time.
Quite some time was spent in a couple of all-hands discussions about choosing a recommended language for application development in GNOME; I’m really glad we were able to make a decision, and looking back at some of the code I wrote for GNOME in the last year or so, I think it’s the right one, and couldn’t be happier about the choice of JS. Travis did an awesome job explaining the reasoning behind this in his post, and I suggest you read it if you want to know more.
The rest of the time, we dived into some of the topics from the list we made initially; there were lots of conversations, but I think we had a very good start on at least two important topics:
it was great to see people interested in helping with the new notification API for GTK. We spent a couple of hours with Ryan and Lars (can’t find your blog, sorry!) fleshing out some of the details, and Lars already started writing code for the GLib part of the implementation, for which we settled on a GLib 2.38/GNOME 3.10 timeframe. A follow-up summary will be posted to gtk-devel-list soon detailing the changes from the previous draft, and we ideally will start porting core applications and testing the API in real world usage early next cycle.
with Jon and Alex we took a closer look at Tristan‘s EggWrapBox, which looks like a great start towards having a GtkIconView-like container for widgets (i.e. that doesn’t use cell renderers). After putting together a quick patch to allow height-for-width-based scaling in GtkImage we were able to get to our goal of having centered icons dynamically changing size and rearranging themselves together with the window. More time was then spent looking at the current EggWrapBox API, cleaning it and bringing it up-to-date to the GTK3 align/expand container flags design, and drafting a set of methods that could consistently work on both the wrap box and EggListBox. There’s also a very interesting overlap with Alberto‘s libmodel project, since the good ol’ GtkTreeModel might not be the best fit for this; unfortunately we didn’t have enough time to dive too much into the details of how that would work.
Further work on the other features we identified as interesting the first day is basically up for grabs, so if you feel adventurous and want to help improving our toolkit please get in touch with us.
I also suggest reading these other posts by Colin, Allan, Alex and Meg to find out what was discussed in the other groups.
This was my second experience with this great conference (first one was 2009), and I had a great time overall. I especially enjoyed the beer ^W the fact that the conference was spread out among more buildings than I remembered, making it possible to walk around the hallways without feeling oppressed by all the people squeezed in a tiny space.
I liked a lot Vincent’s talk about the GNOME community, and it was refreshing to see a huge number of people in the auditorium raising their hands on Vincent’s questions “do you love GNOME 3?”.
It was of course nice to hang out with friends and colleagues you only see once or twice an year, I wish we had more of this
I want to thank again the GNOME Foundation and Red Hat for funding my trip, and the people at the beautiful Betagroup Cowork space for hosting (for free!) the hackfest, you guys rock!
This week I’m attending the Developer Experience hackfest in Brussels. Our goal is to make it easy for developers to write applications for GNOME, identifying the problems or roadblocks and make our platform and documentation nice and attractive.
We had a very productive first day yesterday; after an introduction from Alberto we split into four groups, each to address and analyze different areas: Application distribution and sandboxing, Documentation, Toolkit and Development tools. You can find some information about what the various teams worked on from the main page.
One of the most useful features of GNOME 3 is the awesome “just type” search system. Being a heavy keyboard user myself, I just love the ability to hit and type what I’m looking for.
The results returned by the system are not limited to what GNOME Shell handles internally; since GNOME 3.4 third-party applications have been able to have the search string be forwarded to them and provide additional results, by implementing the org.gnome.Shell.SearchProvider DBus API. The Shell then uses the provided information and displays results in a grid view, which I’m sure you’re familiar with if you used GNOME 3.
In GNOME 3.8, scheduled for March, we want to make a step forward in making search even more useful, and add some missing features and bling in the process.
As presented already by Allan, Matthias and Bastien, the first piece of news is we now have a settings panel to configure search options.
Here’s a screenshot of the panel in action
The panel allows to control the presence of each application individually among the returned results, as well as toggling on and off application results from the Shell entirely; it also makes it possible to configure the order in which they are presented by the Shell.
Search locations configuration
The little gear icon in the toolbar would ideally pop up a search configuration dialog provided by the application itself, but since the infrastructure to make that possible is not there yet, right now it displays the dialog above. The locations there are those that will be indexed by Tracker, and you can add and remove them individually.
Shell Search Layout
The panel is not the only new feature; last summer Tanner Doshier worked on a relayout of how results are displayed in the Shell, based on these awesome mockups from our design team. Unfortunately his work didn’t make it in time for the 3.6 release, so this cycle I picked up his patches and brought them up to speed for inclusion in git master.
As you can see from the design page, changes are both visual and functional:
search provider results are now displayed in a list, for a better distinction between them and the application launchers.
the icon of the application is now displayed close to its result section: this is useful to immediately identify it in the list. Clicking it will launch a full search in the application itself, if what you’re looking for is not amongst the top results.
there’s now space for the search provider to show a descriptive string for each result, which can give more context as to why a result matters for the search string.
Most of this design is already implemented in 3.7.4, including the infrastructure to make it possible, but there’s still a lot of visual details to figure out and polish before the final release. In order to support the new search features, we introduced an org.gnome.Shell.SearchProvider2 DBus API. The Shell still supports launching providers implementing the previous interface, but of course those won’t get to use the new features (e.g. passing the search down to the application).
Some work also still needs to be done to nicely support highlighting the search terms in descriptive texts returned from search results. If you’re interested to help, feel free to get in touch!
Finally, I made a short video to showcase this feature – that is all code already in GNOME git. Enjoy!
Other peoplealready wrote some reports about the event, whose central part was a day trip to the City of Largo; the administration of the city has one of the biggest public GNOME deployments, with hundreds of users daily doing their work from SUSE-powered thin clients. For me it was a very interesting experience, mostly because I’ve never seen such a big GNOME deployment in reality, and being a developer, I am pretty new to this sort of systematic user testing.
We put together some transcriptions and notes from the interviews we did at Largo, which I now made available on the GNOME Wiki. I look forward for these being useful in improving the pattern language we use to design user interaction in GNOME, and in helping shaping the new HIG people have been working on for a while.
My most sincere thanks go to the sponsors of the event, without which all of this woudldn’t have happened.
By the way, this weekend I’ll attend the GNOME Boston Summit, where we are also hosting a set of sessions specifically for people who want to start contributing to GNOME. See you there if you happen to be in town!
Following up from Bastien’spreviousreports, GNOME 3.6 will ship with another whole set of new features for Wacom tablets support, thanks to the work of my colleague Olivier Fourdan.
Olivier demonstrating the new features.
A lot of work has been put in making the user experience flawless and working as expected with complex and multihead monitor layouts. In particular:
Wacom input devices coordinates are now automatically translated according to the monitor layout reported by Xorg (using XRandr). In a nutshell, this means that if you change display configuration or layout, and one of the displays is a screen tablet (or a tablet bound to a specific display), such changes are automatically propagated to the tablet pen devices, which will keep reporting the right coordinates.
Screen rotation is now correctly mirrored in the input device coordinates. Again, this is all automatically taken care for the user; for bonus points, the left-handed orientation flipping of the tablet, as set by the option in the panel, will be taken into account when rotating the input.
Related to these, we now have an option that allows the users to change how the screen aspect ratio influences the active input area on the tablet. By default, we map the whole input pad to the screen area, even in case they differ in aspect ratio; the new option allows instead for the active area on input pad to be cropped to the same aspect ratio of the display.
Last but not least, it’s now possible to map a “Switch Monitor” action to a device button, that is, to change the output a tablet is bound to on the fly directly from the tablet itself! This will make it very easy to do complex operations involving multiple monitors without having to go to the settings panel every time.
GNOME 3.6 hasn’t been released yet, but we’re already planning features for the next 3.8 development cycle. In particular, a great feature demonstrated in the video, which I’m really looking forward to, is the introduction of an on-screen-display showing the layout of the tablet buttons, and all the action shortcuts associated with them. As you can see, the OSD itself is multihead and left-handed orientation aware.
Thanks a lot to Olivier and all the other developers who made all of this possible!
Since my last post on the topic, GTK 3.4 brought in a lot of improvements, including among the others, support for most of the properties of the CSS3 backgrounds and borders family, linear gradients and the long requested inactive windows theming feature, which is showcased in GNOME 3.4.
In the meanwhile, work didn’t stop on the development branch of GTK, and Benjamin, after improving the performance of our CSS parsing/caching engine by a factor of 10 or so, implemented support for transitions. CSS animations are around the corner too, and GNOME 3.6 will make use of all this goodness for a look cooler than ever!
Another feature that will be in GTK 3.6 is support for multiple layers of background images for a single element, as specified by CSS3; in other words, where you could only render a gradient or a solid color before, you can now render an unbounded set of images and patterns. If you combine this with the other CSS3 background properties, and transitions, the possibilities of what you can do are basically endless! Code for this is already in the GTK master branch, so go grab it and play with it while it’s hot!
This is a video I made to demonstrate these new features, enjoy