#monohackily ever after – days four, five and six

I’ve been neglecting to blog the last three days because I’ve been going full steam ahead since the last blog post! After I finished the GTK#3 template for MonoDevelop, I moved on to use it to create a new Mono.Addins subproject named GuiGtk3. This subproject was needed so that apps depending on Mono.Addins.Gui (Pinta, Tomboy, F-Spot)  could move forward, while still allowing GTK2 projects to use the original Gui. The API is identical, so all you need to do is drop it in place of ye olde one and change the using statement. Right now the pull request is pending.

With that successfully concluded, I took over where Stefan Hammer left off on Tomboy, and using all the knowledge I learned from Pinta, Mono.Addins, Mirco Bauer and Bertrand Lorentz I powered through Tomboy’s porting work. (Hopefully there will be a technical post/memo for future use forthcoming…) The net result is Tomboy, in GTK3, using GSettings, and with every last scrap of horrible icky C code evicted!

Right now the code is living in this branch, but we can expect a release in time for the next version of Ubuntu, when all the needed library dependencies have made it in. (If you want to run it, you need to pull down the Mono.Addins.GuiGtk3 branch mentioned previously and make install it to have the GTK3 Gui available.)  There is one thorny issue remaining, which is the state of GTK3 on Windows and Mac. Someone will have to make installers for this on these platforms before we can make GTK#3 releases there, but I think that the current attitude is that Linux is the lead platform and the others will just have to wait.

The port is complete, but we don’t yet take advantage of all the features of Gnome Shell and/or Unity, so among the things we have noted for future improvement are improved DBus connections to allow direct interaction with the shell and making the panel applet an add-in which can be deactivated where appropriate.

The hackfest, summarised

I didn’t get to finish porting Pinta, but by tackling it head-on I learned some important things that were very useful when I did the projects I’ve completed this week. (Talk about diving in on the deep end!) I managed to make important contributions to tooling and dependencies for future GTK#3 work, and I managed a complete port of my first open source love, Tomboy Notes. We have had a great time together and been super productive, and there is no doubt in my mind that the benefits of inspiration and  direct knowledge transfer that come from being in the same room cannot be matched in any other way.

Finally, let me once again thank our gracious sponsors:

Norkart AS, Norway’s premier supplier of Geographic Information Systems and related consulting and my most lovely employer (website, logo)

Collabora Ltd, Open Source Consulting (website, logo)

Hotel Schottenpoint, Our hotel partner (website, logo)

Novacoast IT, Professional Services and Product Development (website, logo)

The GNOME Foundation, providers of the GNOME desktop (website, logo)

Venue sponsor:

 

#monohack day three – Deviating from the plan

My day started (as previously stated)  by looking at Tomboy to see how easy it would be to port.  I quickly discovered that it too depends on good old GTK#2 Mono.Addins.Gui, so I moved on to looking at that. There I saw that it uses Stetic for UI generation, and poked a bit around there seeing it how it might be converted. Eventually I realised that I really should make a small GTK#3 demo to learn how things work.

This lead further to me considering the fact that MonoDevelop does not know how to handle GTK#3, since it only has templates for GTK#2 and those templates assume you want to use Stetic to design the UI. I realised that a starter template for GTK#3 projects would probably be quite valuable, so that become my new goal for the day!

 

Presenting the MonoDevelop GTK#3 template:

It can be found on GitHub here and at the MonoDevelop add-in site here. Once it passes approval, I expect it to become available for download for all happy MonoDevelop users! (That is, the ones with GTK#3 on their system.)

The main goal for this hackfest is porting existing applications, but I feel it’s equally important to make it possible to create new applications, and now we have some basic tooling in place.

As usual, we must thank the sponsors for their generous contributions allowing this hackfest to happen:

Norkart AS, Norway’s premier supplier of Geographic Information Systems and related consulting and my most lovely employer (website, logo)

Collabora Ltd, Open Source Consulting (website, logo)

Hotel Schottenpoint, Our hotel partner (website, logo)

Novacoast IT, Professional Services and Product Development (website, logo)

The GNOME Foundation, providers of the GNOME desktop (website, logo)

Venue sponsor:

More #Monohack adventures

After two days of hacking, I have made some significant progress! We have a super early alpha preview in development version of GTK3 Pinta, in which everything works except for minor stuff like toolbars, effects, addins, and the canvas.

There are four major pain points: One is that we use Mono.Addins.GUI for managing add-ins and that is still GTK2. The second is that we have a lot of advanced dockable, resizable widgets loaned from Monodevelop and lots of Stetic-generated UI, that are not very straightforward to translate to GTK3. The third is that the GDK drawing APIs are the one thing in GTK that has been changed the most and had the most stuff removed, and being a drawing program we depend a lot on this. Finally, the GTK Ruler widget has been removed completely from GTK, which complicates things for us since we will have to create a custom one.

So today I will probably focus on other stuff. Stephen Shaw and myself are both interested in Mono.Addins, so together with Andrea Gaita we will be looking into GTK#3-ising it so  we’ll have building blocks in place. Also, since GNOME recently reorganised live.gnome.org to wiki.gnome.org, all of Tomboy’s wiki pages are borked and need fixing so I’ll do that. I’m also considering looking into seeing what Tomboy needs for GTK#3, since it has a lot less advanced UI.

As usual, we must thank the sponsors for their generous contributions allowing this hackfest to happen:

Norkart AS, Norway’s premier supplier of Geographic Information Systems and related consulting and my most lovely employer (website, logo)

Collabora Ltd, Open Source Consulting (website, logo)

Hotel Schottenpoint, Our hotel partner (website, logo)

Novacoast IT, Professional Services and Product Development (website, logo)

The GNOME Foundation, providers of the GNOME desktop (website, logo)

Venue sponsor:

DotNet 2013 Hackfest – Vienna

Here I am in my hotel room in the lovely city of Vienna, after en evening spent eating Chinese food together with lovely Open Source hackers. I’m looking forward to this week’s hacking!

Since add-ins for Pinta are more or less wrapped up (one or two small things to fix), most of this week will be about a new branch for Pinta, where we will try to port it to GTK#3. This is very exciting (not to mention scary) since GTK3 has been known to make a fair few breaking changes, and Pinta also has a good deal of generated GUI code. I’m a total beginner on GTK#3, and I’m slightly daunted by the task. But there can truly be no better place to get started on the task than in the company of other talented hackers, all working together towards the common goal of bringing Mono applications into a shiny new GTK3 future!

As usual, we must thank the sponsors for their generous contributions allowing this hackfest to happen:

Norkart AS, Norway’s premier supplier of Geographic Information Systems and related consulting and my most lovely employer (website, logo)

Collabora Ltd, Open Source Consulting (website, logo)

Hotel Schottenpoint, Our hotel partner (website, logo)

Novacoast IT, Professional Services and Product Development (website, logo)

The GNOME Foundation, providers of the GNOME desktop (website, logo)

Venue sponsor: