Thoughts on DX: GNOME and Rust

A few months ago I spent some time to learn some basic Rust, I was interested in getting an informed view of the language, specifically about the safety and concurrency idioms as well as its compatibility with the C ABI and automatic memory management while being non GCed. I must say I was pleasantly surprised with the tooling, cargo is a breeze and crates.io is a wonderful resource. More recently though I’ve been investing time to actually understand the memory ownership model and how it plays with channels/concurrency. I must say that what these guys have achieved is really clever with a language that once you get the grasp of things feels actually really nice to use.

2000px-rust_programming_language_black_logo-svg

For a long while now I’ve been worried that the GNOME project would struggle to grow its contribution and stay attractive if it stuck to C in the long run (i.e. next 10-20 years). GObject hasn’t really caught on beyond the GNOME ecosystem. So we’re basically maintaining a whole low level framework, and we have to come up with something by ourselves everytime a new technology comes in (i.e. JSON, REST…). Given our limited resources, I’ve been wondering if there are better alternatives.

For people wanting to contribute to the core libraries consumed by the ecosystem, the only options are C and Vala. Vala has been a great tool for prototyping, I love it myself, but debugging it is a nightmare, it’s filled with security issues and even if we fixed those really difficult problems, we’d be maintaining our own language on top of everything else. I would like to see us maintaining less stuff other than a desktop and the application development framework, not more.

I trully believe Rust gives us a way out of this situation, with certain nice side benefits, Rust really ticks most boxes: C ABI compatibility, safety, modern syntax, vibrant community, ever growing set of libraries and tools and a culturally aligned organization backing it: Mozilla. So when Federico made the brave step of start using it in one of our libraries I was very encouraged by the notion that this might actually happen. I’ve been pleasantly surprised to see positive reactions to his effort by many core developers on twitter.

Now, imagine for a moment, that we decide to somewhat embrace Rust in our libraries, and we start adopting it in places like GTK+. Suddenly we have the opportunity to engage in the growing enthusiasm around Rust, and we have a channel to technologies and tools being built outside of our own community such as WebRenderer, Servo…

Additionally, we release ourselves from the burden of maintaining core libraries for everything so we can focus on producing a great desktop and application development story.

Ultimately though, there are many challenges, achieving full GObject compatibility can be difficult, we would need to be able to consume GI bindings from Rust and eventually emit GI bindings too, and in the end it would be up to the core of the community to lead an effort like this so there needs to be consensus too. It is quite a bit of work, but I believe it is worth considering as it might give us back a lot resources to focus on other stuff.

Please don’t read this as a formal proposal, I think something like that should come, I’m mostly putting my thoughts on this out there and see what the rest of the community thinks.

Advertisements

GNOME DX Hackfest: Update #1

Hello everybody,

A couple of news regarding the Developer Experience hackfest.

First and foremost, the interest shown is outstanding, very interesting names and a lot of enthusiasm around. The amount of people willing to attend and the fact that some of the key people in the project is interested in pushing this area forward is really encouraging.

We have a possible venue and dates, our friends from the Brussels' Betagroup Co-Working Space have kindly offered a room for the hackfest where we can cellebrate the hackfest. What's exciting about this venue is that they are able to host the days immediately before FOSDEM, which means that a lot of people outside of Europe can make the most of their trip, I hope this will maximize attendance. Plus the venue is 30 minutes by foot away from the FOSDEM venue so the people wanting to attend both events can choose a single accomodation for the whole week. 

I would like to ask the people interested in coming to fill up the doodle with their names are their williness to attend in this dates/venue so that I can move forward and confirm it.

By the way, I'd be interested to see more names from the MonoDevelop/Xamarin world, as I think they have very valuable input to this particular area, so if you are listening, please consider attending 🙂

I'm looking forward for this hackfest to happen!

GNOME Developer Experience Hackfest

Hello everyone,

I've had a few conversations with Allan Day about the developer story in GNOME and we came up with the conclusion that there are many areas where this needs work to keep GNOME attractive as an application developer platform.

Hence, I'd like to propose a developer experience hackfest at some point in 2013. This is a call to check who would be up for such hackfest.

My initial suggestion is to focus on three main lines of work:

  • Tooling (Anjuta, Monodevelop, Glade, application bundling, intltool, gtk-doc, autofoo and friends…) 
  • Developer docs and mindshare (unified online/offline API reference UI, app developer community building…)
  • Further platform needs (check for missing APIs or improvements to full fill requirements for modern applications, e.g. simple HTTP access, a collection API for GObject, better MVC widgets based on such collection API)

People/skills I'd like to see:

  • People from the design team.
  • Anjuta, Glade, devhelp, nemiver and Monodevelop people.
  • People working on application bundles, introspection and bindings.
  • People willing to help on the documentation tooling.
  • Web hackers (frontend/backend)
So if you are interested in attending (no dates venue yet, I'll try to arrange a venue/date that fits well with the attendee list), please put your name here:

https://live.gnome.org/DeveloperExperience/Hackfest2013#preview

If you require sponsorship, please state so in the comments section. I first need a list of people before I can request sponsorship to the foundation.

If there's anyone willing to provide a venue and help with the organization, please get in touch with me!

Any other input, is welcome. Happy hacking!

Marker support in GtkScrollbar

I thought I should share a sneak peak on a small patch I've been working on to add support for markers support in GtkScrollbar, the idea is to add support for hints in things like search matching, or where in the backlog someone named you in a chat dialog. Here's a screenshot of the result in the default theme:

Screenshot

This should bring Google Chrome-like search functionality to gEdit and Epiphany! Now if only I had some time to work on a set of standard inline dialogs to avoid windowed ones 🙂

The patch, against Gtk+ master, is pretty much done, waiting for a reviewer to point out any pending details. If everything goes alright it should land for 3.0, subscribe to the bug if you want to track its progress. 🙂

GNOME TV

Seems that my recent efforts to promote the GNOME platform are paying off. As I write this, 755 people have seen the Vala kick start tutorial and I have received loads of positive comments.

As a response to that success there are three things I've been doing, first, setting up twitter and identi.ca microblogging accounts for GTK+, follow them in gtktoolkit@identica and gtktoolkit@twitter (credits goes to Javier Jardon for the idea and comaintaining the accounts).

Logo

Second, setting up a Vimeo channel. There are many reasons I'm using Vimeo, first you can have channels for free, second, it provides the best quality video wise which is quite important when you showcase code writing, third, it provides HTML5 (though not through Theora) and most important, you can download the original file if you're logged in (which I'll make sure in the future will be .OGG). If you have a GNOME related video in Vimeo just poke me.

I'm already putting some pieces together for the next video, as a teaser, it'll use one of these new shiny dynamic languages recently added to the GNOME stack.

PS: I'm very excited about the ongoing work and activity happening in the GNOME UX Hackfest at the Canonical offices in London.

Happy hacking!

Gtk+ Kick Start Tutorial for Vala

There are many problems with the way we present development documentation to users in the GNOME platform. The content is all pretty much there already, however it's quite fragmented and it lacks proper format and organization.

To address this a while ago I tried to put together some screencasts to promote the platform better and provide official documentation that is not focused on explaining every single piece of API or that is not focused to C developers.

After almost a year of trying to find the right combination of stable screencasting/video editting applications and spare time, I've finally put together the first of what I expect to be a series of screencasts targetted to promote the GNOME development platform in a useful way.

Gnome TV - GTK+ Kick-Start Tutorial for Vala
OGG

Any feedback would be welcome, but note that putting this together has been quite a difficult task. Hopefully there will be more of them now that I've managed to put together a nice timeline. Suggestions and help would be appreciated.

PS: I would like to give kudos to the PiTiVi guys, the app is no perfect, but it allowed me to perform the task which is something that no other video editor within the official Ubuntu repositories could say.