Category Archives: Pinta

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 to, 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:

New Pinta Add-in: Night Vision Effect

It’s been a long time since last year’s hackfest, but I finally have an add-in server for Pinta up and running at! Obviously it’s still a bit of a beta test, the most obvious immaturity being that I haven’t procured a proper Pinta-project subdomain for it yet. Apart from that, there’s trouble serving add-ins to Windows because the Windows GTK# installer doesn’t bundle a .NET 4 version of Mono.Posix like everyone in Linux-land has now. But I’m sure we’ll sort something out in that department!

In the meantime, I’ve been picking some low hanging fruit when it comes to making Pinta add-ins. I tried looking at Paint.Net plugins to see if there was anything nice to be ported, but I couldn’t find anything that had both source and an open source licence. There might be something out there, but since their system for administrating plugins is a forum where people post zip files, it’s kind of hard to get an overview. I’m proud to say that Pinta already has a smoother delivery system!

So what I ended up doing was looking at names of add-ins and picking one that seemed easy to re-implement. Easiest of them all: a Night Vision effect. This very simple add-in takes an image and changes the colour values so it looks like it was taken with a night vision camera. If you then do a pass with the Noise filter and maybe some of the other effects, it can look quite good!

The "Before" image. (Image by Rafał Konieczny, CC-BY-SA)
The "After" image without any extra effects

There’s still a lot missing here, like any way of adjusting parameters and a GUI. Also, hooking in to the other effects for more advanced filters would be nice. But my plan is to spread the new add-ins thin, and give them the minimum possible to work so that we can build up a nice array of add-ins before going back to make them more advanced. Or even better, if someone else finds it interesting they can work on improving it. (As usual, it’s all on Github.)

Pinta 1.2 released and looking towards the Gnome/Mono Festival of Love

Pinta LOgo
Pinta 1.2, on a computer near you!

Last night, Cameron White and Johnathan Morlock finished up all the packaging, uploads and release notes for Pinta 1.2, so now it’s officially released! New releases are always great, and this one has a bunch of bug fixes and general improvements. Head over to to download the newest packaged awesomeness. I almost said “the latest and greatest”, but that’s not strictly true because new improvements for Pinta 1.3 have already started landing in our git master branch!

Pinta Statistics

Pinta 1.1 was released about a half a year ago, and I’ve had a look at the download statistics we have on hand from our Github page:

  • The Windows installer has had 12 483 downloads.
  • The source Zip file has had 3,436 downloads.
  • The source tarball has had 4,470 downloads.

In addition to that comes all the downloads through the package managers of various distros that we have no statistics for. But lets assume the number is a lot! I think that’s a reasonable assumption because when you have eight thousand people willing to compile it themselves there are probably a whole lot more who are willing to let someone else compile it for them.

Powered by Mono
The Mono framework is what lets us make Pinta multiplatform.

An interesting point is the strong Windows download numbers, despite the fact that Windows is the platform that carries Paint.Net, Pinta’s ancestor and role model. It’s no problem for me to admit that Paint.Net is still ahead of Pinta on Windows, but obviously the fact that Pinta presents a consistent user interface over several platforms  in addition to being open source (which Paint.Net no longer is) means we have carved out a good niche for ourselves.

Sadly, in this release we have had to postpone a Mac version once again because we don’t have hardware to test it on. This pains us quite a lot, and it’s also the reason 1.2 has taken a while to come out because we’ve been hoping to get it fixed before releasing. In the end, we had to prioritise getting new features out to those users we could reach. But read on, because potential good news is coming!

The Gnome/Mono Festival of Love 2012

Fingers crossed, if all the star signs align correctly and so on, I will be attending this years Boston hackfest for Gnome/Mono products! (Which will also be my first time visiting the land of tea parties, star spangled banners, and McDonalds.) The plan is for me to work with Jared Jennings on a new core library for Tomboy, and to hack away on miscellaneous improvements for Pinta. I know that there will be several participants there owning the vaunted hardware from Cupertino with a half-eaten apple on it, and I plan to pester them into helping me solve Pinta’s most major Mac issues. With luck, we can again have a working version of Pinta for Mac by midsummer. Then we can make at least a interim Mac release, but personally I hope to have enough done by then that we can justify releasing Pinta 1.3. (At any rate, I plan to lobby my co-developers to do just that…) Here’s hoping for the future!  Update: Like masters of magic, Cameron White and Jonathan  Pobst have managed to come up with a working Mac edition (As yet known to be working under at least one configuration of Mac+Mono) within 24 hours of me writing this! So it looks like I’ll be able to put more time into other aspects of Pinta at the hackfest, although hammering out any Mac-specific issues that may appear is still a possibility.  Looking forward to it!

The Boston Tea Party
I'm going to Boston! Tea may be drunk, parties may be had, any revolutions will be strictly computer-based.











Translation (Oversettelse, Traduction, Übersetzung)

Lost in translation by gcbb on Flickr, (CC-BY)

They say that every contribution to open source software starts with a developer scratching his or her own itch, and this is probably true. (It certainly is for me!) The problem is that as a project grows in popularity and users, you have to start paying attention to other people’s itches. A common type of itch-scratching, which is important both because it can make your program more accessible to new users and because it draws in new contributors, is translation.

Lots of lovely people spend time translating various programs to their native languages, but often they don’t have the programming knowledge that’s needed to make changes to the actual program. Which means that whenever you as a programmer add a some text to the program that is untranslatable because you forgot to call the translations or concatenate it in some way that hinders translation lookups, you are hindering them from scratching their itch and new users from getting a completely satisfactory experience.

Personally I’m horrible about this, probably because I think in English and always have my systems set to English.  It’s a time-honoured tradition that whenever I add any new feature to a program, be it Pinta or Tomboy, I forget that someone has to be able to translate this. This leads to extra work for testers and translators because they have to find my mistakes, and then again for me because I have to fix them. The other thing one might do is to not realize that a particular piece of text can mean different things depending on where it is. An example from Pinta is “Open Images”, which in one context is a command to open several files at once, but in another context is a description of a list of already opened files. For some languages there is a distinct difference in words depending on the context, which again means more work to either clarify the context in translation notes or find different wording.

So if you want to be a tidy and efficient programmer, there’s one more thing you have to check before you commit: Go over what you’ve written and ask yourself “Is this technically translatable?” and then “Can this text have multiple meanings depending on context?”. Think of the translators!

The continuing woes of debugging Macs via email

A couple of months ago I joined the Pinta team, a very exciting experience for me! We set to work fixing bugs and adding features, and we’re very proud of what we’ve achieved for  version 1.1. However, the actual release has been delayed a couple of weeks now because of the tedious details involved in making a release. As a developer, using the newest Pinta is easy for me. All I have to do is open the freshly compiled executables I always have lying about. (The bleeding edge!) But for Average Joe User, they need to be packaged in to a nice and easy installer and that’s what we’ve had trouble producing.

First we had trouble producing a reliable Windows installer, during  which I learned about the difference between .Net 3.5 and .Net 4. But we eventually got that licked, not least because we all have access to various Windows systems to test on. However, none of the current developers have a Mac. (Personally, I’ve never liked computers I can’t open up and mess up on the inside.) This makes it hard to debug to say the least, as we are dependent on sending test installers to gracious testers on the mailing list and interpreting what they report back (and copy from their terminals).

Adding to our troubles is the fact that Apple has made a habit out of completely breaking stuff like Mono and GTK# when they release Mac OS X updates, which means Mono and GTK# needs to be updated to meet those changes, so now there are a bunch of different versions of Mac OS X and GTK# mixed up among our users. Conducting a thorough investigation of what works with what and with Pinta 1.1 is hard enough to begin with, even when you’re not doing it via email with (lovely and awesome) volunteers.

Therefore, sadly, the release of Pinta 1.1 will probably be a beta version for Mac users. (But final for the other two platforms.) We will continue to try to fix the Mac installer with the help of user feedback so that we can hopefully make a 1.1 final release for Mac, but in the meantime all of our other users need to be able to use the latest and greatest Pinta.

PS: If you happen to know a developer who knows C# and has a Mac and some spare time, please don’t hesitate to point him our way!