this looks like a job for... tomorrow!

Introducing Pinta

Over the holiday break, I stumbled upon this article from OSNews stating that there was a need for something like Paint.NET for Gtk. Having some experience with porting Paint.NET to Mono Winforms before, I knew that that was a massive task. But it still got me curious about Cairo and creating a layered canvas, since I had never played with Cairo or Gtk.

After playing around for a few hours, I actually had a working paintbrush and canvas. Intrigued by my success, I played around with it for a few more days. By the end of the week I had a nifty little paint program with a few features. Now, a month later, it's time to open my little project up to the world: Pinta.


Pinta is a clone of Paint.NET. It already has a small, but hopefully useful, set of features like multiple layers and infinite levels of Undo/Redo.


I hope to implement the same feature set as Paint.NET. Currently there are several tools missing, as well as adjustments like brightness/contrast and levels and Paint.NET's effects.


Being written in Mono/Gtk, Pinta is naturally cross-platform.


To download Pinta or the source code, check out the website!

Note: I didn't misspell "Hello" in my screenshot, my dog's name is Helo. ;)

44 comments:

N8 said...

This is fantastic. Paint .Net is a great project, but I really prefer using Linux and Mac OS X. I spend my days coding in C# on Windows but have been really wanting to write something more than just toys on top of Mono. Great work.

Anonymous said...

Always interesting how fast create new apps in C#/Mono :)

Best of luck.

[stereotyping here (in a good way I guess)]

ciplogic said...

Really impressive. This will show also that Mono is exactly what users expect: a great framework to develop applications. And this application in particular shows simplicity and power on the same time, that could not be done without a great work of someone like you.

My congrats on this one! Hopefully to be included soon as a replacement for Gimp in some distro(s).

exosyst said...

Excellent work. I've continued to be impressed by Paint.Net (never had much need for Gimp/PhotoshoP) but now that you've brought this to Linux - well sir, just wow! I think it's time to get involved :D

RichB said...

I'm not keen on the way the Paint.Net project is run (that's their choice), so it's great to see an alternative.

One suggestion - could you provide a better error message (on Windows) when GTK# is missing and also provide an easy link to the GTK# distro from your download page?

Ben Daniel said...

Wow, fantastic work! Truely you're a talented programmer to have knocked that up in a month. :)

Do you think you'll add plugins for it? If you do, I always thought it would be so much better if Paint.Net allowed plugin developers to register new tools on the tool palette, not just new effects under a menu.

Luís Reis said...

Still very basic and lacking many features, but already looking great. For a 0.1, it's amazing. Can't wait for the future versions.

Tom said...

Pure greatness!

I really hope this will become the default Gnome paint app in OpenSUSE and Ubuntu.

If you need more code, here is the last FOSS version of Paint.NET:
http://rapidshare.com/files/319893558/paint_dot_net_source_code_336.7z

Cheers

BTW: You made the OSnews frontpage ;)

Ammaar Limbada said...

I've always been put off by Paint.NET's non-commercial license. I've had to resort to using GIMP in the office and it's usually to do something that should be quick. However, GIMP's loading time is far from "quick" on my workstation and the user interface is too clumsy to get anything done in a short amount of time.

I hope Pinta will have a more liberal license that allows me to use it in the workplace.

jpobst said...

Thanks for the encouragement everyone!

@RichB: It's on the FAQ. I'm not sure if I can create a nicer message when the program is run, but I'll look into it, because it would be much better. (And later, a .msi would help with this.)

@Ben: I expect to move to Mono.Addins as this matures, and I think adding new tools would be a great use of that.

@Ammaar: Pinta is MIT X11. I don't think it get much more liberal than that. ;)

Kevin said...

Hey, great job! You mentioned adopting Mono.Addins which is great but what about existing Paint.NET Plugins? Will they be supported or will they have to adopt the Mono.Addins interfaces to work? I'm just wondering if it will be an easy transition or not. Also, have you talked to Rick Brewster to see what he thinks about this effort? I know he recently closed off the source citing that he did not like people re-branding his efforts. You have essentially done that here but for a good cause. Hopefully you can work with Rick and at least keep that line of communication open... maybe getting a little help here and there. I think this project is great and I wish you all the success. I will definitely be following your progress :)

jpobst said...

@Kevin: I'm not very familiar with Paint.NET plugins. Does it have a large, thriving community or just a couple of popular ones?

My guess is that it is going to rely heavily on System.Drawing/Windows GDI+ constructs, like Surfaces, Regions, and Paths.

I can probably make it provide the same methods, but they would likely have to port to use my non-GDI+ pieces.

OnlineCop said...

Yes, Paint.NET has a VERY "large [and] thriving community", with a lot of tutorials, plugin enhancements, and other submissions daily.

Mario Alberto Chavez said...

Jonathan I have a bundle for OSX, you can get it from http://twitfile.com/files/1044/Pinta.zip

Anonymous said...

Dear Jonathan!

Thank you so much for this perfect apps! I think Paint.Net is the best quick, simple, useful and freeware editor for Windows. And now, thanks God, we have the same for Linux!

Good Luck!

knocte said...

While I think your work is amazing for just being coded in a month, I cannot stop thinking that this kind of efforts bring too much diversity to free software in general. Couldn't you work with Gimp devs to create a "Simple" UI to be enabled by default.

Don't get me wrong, I love Mono apps (Banshee, F-Spot...) and Mono dev tools and I kind of see why you'd prefer not to work with Gimp (plain C), but there was another possibility as Tom mentions, which is to fork Paint.NET from the last version that had a FOSS license.

Stifu said...

@knocte: on the other hand, it's so much easier to work with your own code, rather than reusing and having to learn someone else's code (which may be huge and/or bloated, or may not share your logic).
If this project got started so fast, I think it's partly because the developer masters his code base (plus the fact it's in C#). How much could he have achieved in just one month, if he had worked on GIMP instead?

knocte said...

Stifu: for sure. And Jonathan can do with his spare time what he wants.

But I'm thinking in a more general idea of benefit to open source. And for that you always have to think about the 2 extremes:

a) Imaging if all the potential contributors of free software had did what Jonathan did. There would be no collaboration at all in projects. All would be one-man projects. Definitely free software wouldn't even exist in this scenario.

b) Now think that for every use case out there, there would be only 2 free software projects existing (let's say one for KDE and another for Gnome). I would say that if this was the case, FLOSS today would be so much more advanced and spread.

jpobst said...

@knocte: For me personally, hacking on GIMP is not a choice. I do not program in C/C++, and, God willing, I never will. :)

Having worked previously on doing a straight port of Paint.NET, I fully believe rewriting the interface and backend in Gtk/Cairo, and then borrowing some platform agnostic code from Paint.NET is the right way to go.

Paint.NET is *extremely* tied to Windows. P/Invokes number in the hundreds. And even if a straight port was done, no one on Linux would want a Winforms app. You can see this sentiment when companies port their software with Wine instead of writing a native version (Picasa, Google Earth).

To me (and the article I linked as my inspiration), there really is a difference in purpose between GIMP and Paint.NET. It's kinda like having both Gedit and OpenOffice at the same time. They both create text documents, but still have very different purposes.

I guess time will tell if other people feel the same. :)

knocte said...

@jpobst: the more you explain it, the more I agree, however:

a) You could program in not C/C++ for Gimp: I believe you already can use C# for plugins. For the rest, you can always use Vala which is very a-la Mono ;)

b) How about bringing all those p-invokes to an only-windows-specific assembly and working with them upstream? Now, not having done this will not pay off for what you want to do now: it will be difficult as well to separate Paint.NET agnostic parts into libraries, if there hasn't been much separation already upstream :(

PS: I get the point about the different purposes between GEdit and OpenOffice, however I don't get the comparison. What is the program that is needed in between the features of GEdit and OpenOffice? I think having those two is fine, I don't want anything more.

Tom said...

@knocte

Sorry, but I find your suggestions pointless and I never said that Jonathan should do anything like you said. I only pointed him to the last Paint.NET source because maybe there is more code he can use in it(version 3.36 instead of 3.0).

FOSS is evolution. If Pinta does not find a developer community it will die eventually, but at the moment it has a lot of potential. Space limited distros like Ubuntu are likely to ship something this small and powerful because they have Mono already on the CD. Gimp had to go because it was too big and too powerful.

So as Thom in his OSnews article mentioned Gnome needs something like this and we should all thank Jonathan for starting it and moving the a to the end :)

We will see if Pinta or Nathive or whatever will eventually find a sustaining community, but it is no use in not starting it, because Pinta has a great head start because of all the Paint.NET code.

David said...

Excellent work! Please keep going!!

Nobu said...

What's nice is there aren't many dependencies (yet, at least). Here's all I had to install to get it working:

mono-runtime (3.5MB)
depends: libc6, libglib2.0-0, mono-gac (127KB), zlib1g

libmono-posix2.0-cil (295KB)
depends: libc6, libmono-corlib2.0-cil (2.5MB), libmono-system2.0-cil (4.5MB), mono-runtime

libgtk2.0-cil (4.5MB)
depends: libatk1.0-0, libc6, libcairo2, libglib2.0-2, libglib2.0-cil, libgtk2.0-0, libmono-cairo2.0-cil (180KB), libmono-corlib2.0-cil, libmono-system2.0-cil, libpango1.0-0

(~15.6MB total; The dependencies with no size listed were already installed as dependencies of packages that are included in Ubuntu and all mono related packages were removed before I started. Those are the uncompressed sizes. I used aptitude -R, so recommends weren't installed)

btw, one thing I noticed that's nice is it tells you what's missing when you try to run it, so I didn't have to search too much to find what I needed. Dependencies in the deb would have been nice, but I understand this is early stuff and that would be a hassle.

Thanks for the work! ^.^

Anonymous said...

Nice one!

William said...

Very nice and fast even on KDE4. Great job. I used Archlinux AUR to download and install it. I'll have an eye on this.

Batou said...

Thank you so much!

I wish you all the best and pray that your work will become a default application in Ubuntu when it reaches full maturity!

Keep up the amazing work!

(from a Linux n00b)

Anonymous said...

Ah, This is great! Clears up
many misnomers I've been hearing.

Anonymous said...

@The developer.

MONO!! WTF!?!
What a waste of CPU-cycles.

Why haven't you just coded it in C/C++ and GTK. You're already using GTK anyway.

You're coding many be good, but your language is shit!

Nobu said...

@Anonymous #last:

ENGLISH! WTF!?!

What a waste of brain cells.

Why haven't you spoken in Latin or Spanish? You're already using Latin anyway.

You're [sic] speech may be good, but your language is shit!

jpobst said...

Let's not get into the whole Mono or not debate here.

As put above, *for me*, Mono is the only way I can/will write an application on Linux. I am a happy C# developer and have no desire to write C/C++.

There are plenty of applications out there written in a myriad of languages who would love support. Find the one(s) that best fits you and your preferred language and help them out.

A key tenet of open source is choice. Different people want different things. Make your own choices, and let other people make theirs.

Nobu said...

To be clear, I'm neither for nor against Mono. I was just demonstrating how poor of an argument he was presenting.

Pharaoh Atem said...

The source code for Paint.NET 3.36 also seems to be available from here.

Paint.NET 3.36 was the last version that was MIT licensed...

Still, I'm impressed with your undertaking.

Ben Daniel said...

@Nobu lmao, well put.

Stifu said...

"You're [sic] speech many [sic] be good, but your language is shit!"

Fixed with 2nd sic. Ironic how he disses someone else's "language" in the same sentence. :p

Nobu said...

It was an example, not meant as disrespect. I speak English too, you know.

Not sure what you're fixing. "You're" is a contraction, meaning "you are". "Your" is used to refer to something that belongs to "you".

Looking back at my comment, it looks like I said "may", not "many". If you did that on purpose, I don't quite get what you were trying to get across.

By the way, I could have also left that question as a statement, but I subconsciously fixed it. At least I can catch mistakes when I try, and I can rely on my brain to catch them when I don't.

Anonymous said...

Ah, This is exactly what I was looking for! Clarifies
a few misnomers I've seen

Marco said...

"I am a happy C# developer and have no desire to write C/C++."

Did you tried Vala?

jpobst said...

@Marco: No, as my quote says "I am a happy C# developer".

As long as I am happy, I will spend my time writing useful code instead of learning the latest new fad. :)

Anonymous said...

Ah, This is spot on! Clears up
some misnomers I've heard

Stifu said...

@Nobu: what I was "correcting" was the fact mister Anonymous made 2 mistakes, while you only highlighted one. Indeed, you did not write "many", but he did.
Whatever!

Nobu said...

Ah, see, my brain fixed two mistakes for me. And I agree... whatever. ^.^

Anonymous said...

@ Developer: please, avoid using Mono.
It's too much double-chain related with Microsoft!

Today it's [almost] "free", but there's A LOT of stuff, inside, that M$ could lock (or "enhanche") tomorrow.
We don't want another monopoly.

Please!!!

(P.S.: good work, but we will not install it; nor contribute to Mono-related projects) :-(

Anonymous said...

This is a cool app.Its has simple user interface but very helpful.I can easily create new image with whatever size i desire cool.Great work!

Anonymous said...

men Fantastic.. you are the best i love Pinta!! Don't stop your good work.. ;-)