MyPaint – the past, the present, and the future
CC Attribution - ShareAlike 3.0 Unported:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal and non-commercial purpose as long as the work is attributed to the author in the manner specified by the author or licensor and the work or content is shared also in adapted form only under the conditions of this
Nordby, Jon
MyPaint is a fast and easy open-source graphics application for digital painters that lets you focus on the art instead of the program. Started in 2004 by Martin Renold to be a painting program he enjoyed to use and develop, MyPaint has grown to become a popular Libre Graphics tool. This talk will guide you through the past, present and future of MyPaint: Past A quick look at the history of MyPaint; the initial idea/motivation, and some of the significant events. PresentAn overview of the current status of MyPaint; what has happened in the last months and what is happening right now. A central part here will be about the MyPaint 1.0 release. Future Discussion about the future of MyPaint; some of the concrete plans that exist, and more abstract/undecided ideas and visions. Last but not least, how you can help the future of MyPaint will be covered. The talk will be introductionary in nature, and not especially technical. Curious digital artists, existing end-users, potential and existing contributors should all find this talk interesting.
 So the talk is titled My Paint, the past, the present, and the future. We'll go through the past really quick, giving an introduction about what My Paint is, how it got started, and some parts of the development up until now. First, about me. My name is Yulin Mube. I also respond to John, if that's easier. On my spare time, I do My Paint, Open Raster, mainly. I also do some GIMP development and some Gaggle development. In my day job, I work at Openismus, a company in Berlin specializing open-source software, and currently working on contracts doing Nego work. So the past, it all started in 2004, when Martin Reynolds decided that, yeah, I want to do a bit of creative arts. And I want to draw digitally. I'm not too interested in traditional media, and I'm not happy with the solutions that are out there. And his focus was really on the creative stuff. He just wanted to draw. So he is an engineer. At that time, I was a student. And he decided, yeah, I will just do it on my own. He started basically with a plain input window and a brush engine. He kind of went input window and brush engine. He had some ideas what he wanted to do with the brush engine. And an interesting thing is that it's basically the exact same brush engine we used today. It just added some stuff. And it's a really simple brush engine, but it really works. So his motivation was to make something that he liked using and like developing, of course. So the initial versions looked something like this. This is now like every dialogue is on the screen. But you see the main window where you will actually be drawing is just a canvas and a menu bar. So really, really about the drawing parts. And he typically works by having, well, nothing like this on the screen, just popping up those dialogue windows when he uses them. So he basically has a full screen canvas all the time. Yes. So this is an initial version of the brush engine. This dialogue just gives you every button and thing you can imagine and kind of corresponds directly to how the brush engine works. These are ways to define dynamics. So every kind of setting you see up there, like opacity and other strange stuff, hardness, radius, can depend on stuff like the pressure or the tablet, of course, the speed you move, the direction you move. So it's a really dynamic system. And all brushes are procedural. So between 2005 and 2008, Martin basically continued developing on his own. Added more and more features. We got really kind of a unique feature pretty early on, which is infinite canvas. So you basically just start with a blank canvas. And once you start painting in some direction, well, your canvas is that big. So it's as big as you need at any given time. And artists really love this because, one, it means you don't have to choose when you start up, oh, I want to do something that is x big, because that kind of kills creativity. And two, is like, I have these constraints to actually paint beyond to change what I was doing right now, I would have to go into some dialogue, change the size, sometimes through really crazy dialogues and not good UI. But even if the UI is good, it's still a switch from the creative mode of just drawing your totally into the art to kind of fiddling with this computer thing that you don't really care about on this software. So in 2008, it looked something like this. And it didn't change much in terms of the UI. You see here is more typical way of using. You have the entire canvas basically spread out. You have a menu bar at the top. You have a color selected. This is a standard GTK one. And the brush selection. These are the two typical actions you do. You change the color, and you change your brush. And it's, yes. So what happened? Why did I put 2008 here and then 2009? Well, up until now, Martin has been developing basically all on his own. He got patch sets, like four or five patches about something specific. But in general, it was his thing, and he did all the work. In 2009, people started joining in, switched to Git for version control, kind of spurred things up for some reason. I joined, and we had some other contributors that were with us for a long time. And now it's more of an actual open source project in that you collaborate and you do different things. So and here, more features were added. I forgot to say that in 2008, we got layer support. And then, my pain was the first application to use OpenRaster as a default document format. So that was kind of important for OpenRaster. And also, in these years, we kind of have, because of that, we've been kind of the ones pushing OpenRaster lately. OpenRaster, as you know, is a format that started at LGM and still is kind of developed around here. Yes. So this is how it looked like, basically, with the latest release version. There are no huge differences. We've got a layer dialog, actually, for one major release. We didn't have a dialog for the layers. You just had keyboard shortcuts. Now it's a really basic dialog, but it kind of, that's what you want. And a new color selector. I'm not very happy about it myself, but it's there. Some people like it a lot. So the present, I should have hooked this up, but I want to show you a bit of my paint. I'm just making sure that I don't have any configuration things. So this is the latest released my paint. It is available in all major distros. So in the latest version of your distro, well, most definitely, it's available in all major distros. But most definitely have the latest my paint release, which is 0.9.1. Yeah. I forgive me for my quite special desktop environment. It's not what you typically see. But this is kind of how you would start. This is the default startup for my paint. So you have just showing you that you can select colors and that you have several brushes to choose from. So these brush sets that I'm currently in are we have two artist brush sets, one called DeVod, which is David DeVod, who works on the Durian project. It's a really nice brush set. And we have Ramon, which is Ramon Miranda's brush set. He does Gimp Paint Studio and also, in general, is active in many, many projects. So the default presets show what the brush engine can do in a pretty comprehensive way. We still have a challenge. And I will show it to you. Do you recognize this from the first screenshot? It's exactly the same as before. This has the advantage that, well, it gives you every button and tweak that you can do as far as the brush engine goes. But could you tell me which ones of these switches, or sliders, buttons are relevant for the current behavior of the brush? Most likely, you couldn't easily do that. And this is the problem. So this is something we're working on right now, slightly, at least somewhat. And we have the same issue here. It's not obvious which ones of these are relevant or what they do. So that's something that we need to get some love finally, since it's basically been the same for, well, six, seven years now. And I want to show you some unique features that MyPint has. A long thing about workflow first, it's kind of designed for a tablet and keyboard usage. So you kind of have your tablet at all times. But using your right hand or left, if you choose so. And then a keyboard. So we don't do flip over tablet PCs very good, because it's kind of keyboard-centric. That's also something that we're looking to improve. It's just that no one of the current developers have such a machine. So one of the really nice things is, of course, the infinite canvas. I mean, I start doodling here. And then I decide, well, this might be a nice doodle. Sometimes you just want to, I don't want to do the new document. I just want to do some other doodling. And you just move to the side. You draw on, well, you can do as much as you like in any direction. And it will all be saved. And you can just go in any direction. Don't worry about document size or anything like that. It's really unnecessary most of the time. Another nice feature that you don't know what I intended is what we call a context picking or a brush picking. So we actually store the data about what kind of brush did you use at any given point. So you press W by default. See now I have the pen brush. Here I used some other brush. You press W and you actually get that brush, which is quite awesome in practice because you do a foreground, well, not necessarily a foreground layer or stuff like that, but you paint some foreground. You paint some details. You use different brushes. And you don't really care about which brush you use. But very often you want the same brush or something very related to it. So you see the effect of that brush. It's like, oh, I want now that, but it's likely bigger or whatever. Pick it. And then you do some tweaks. And this is something that once artists have incorporated into their workflow, they don't like doing things otherwise. Yes. Those are the two major features that I want to show. Now I'll go slightly over to just show the development version and some of the changes we had. So one feature actually comes up right away. I said that it's kind of intended that you have a full canvas. You pop up the dialogues as you need them. But in practice we see that a lot of people want to kind of have every dialogue at the same time. On a screen like this, it doesn't make sense. But if you have a huge screen, you can basically keep everything up to the side. And people did this by positioning the windows manually. Instead, we basically said, OK, we will do a simple mode where you can just dock things to the side, which just really helps that kind of workflow. Even though it's not the main workflow we want to promote, it is a useful workflow. So that's a new feature. One other thing is that this infinite canvas really promotes creativity. And artists generally really like it. But you have some problems if you want to do or challenges if you want to do more design things. So you're creating a poster. It needs to have a certain physical size, or at least pixels, by size do you want. And well, how do you do that? There's nothing here that tells you, well, this is x pixels, or this is given dpi, and dpi this is x inches. So people say, oh, we actually do want a definite document size at some point, or canvas size. And we basically, this is the oldest bug or feature request going back almost five years. And the challenge here is that we didn't want to do a mode so you would switch over to, OK, now your canvas is this big and it can only be this big. So you wanted to preserve the creative workflow that you have with infinite canvas. So you just expand whatever you want. There's no hard boundaries. And we basically have the start of this feature right now where you can do a document frame. And you give it some size. And you know what. And basically this looks like the cropping feature in GIMP and other software. And the important thing is that you draw within these boundaries most of the time. But you can still extend out at any given time and have this easy way of just like, yeah, you can go do that. We want to enable people to do that still. When you save to a PNG, this will be cropped to the given document size you set. But if you save to OpenRAS, start working document format, we will save all the data by default. We might introduce some destructive like, now you say I want to really crop this document. But in general, we save all the data. So this is new. What we'll be, it's kind of blocking the 1.0 release, is having some proper UI for moving this. So this should all happen on campus, of course. And yes. And also we added just minor things, more preferences, different places, in terms of your input devices mapped to. More importantly is that we now fully track the different input devices. So now I'm using a kind of a pencil tool here for the tip of my pen. However, you can switch to the other side and have a eraser brush. So you can kind of keep those in even time. So but there seems to be a bug. Not nice. That's the general idea. One other feature that I would like to highlight while we're at it is the concept of an eraser mode. So I just do some, you can use any brush as an eraser, which kind of can give you this workflow that is common in pencil, traditional pencil art, where you draw, but you also kind of draw with your eraser, these kind of a stub eraser, like these, for instance. But you can then like, OK, I have some, these are all not so interesting, but what about the, OK, so this is like an airbrush. And we can just switch this to be an eraser. So I would actually now simply erase parts of the stuff I previously drew, which kind of can enable nice workflows. So that was the present, more or less. We hope that, I actually hope that we would have 1.0 done for LGM. It did not happen. There was not a lot of activity the last couple of months. So it looks like it will be in a couple of months. One thing to note with my paint is that the GIT version is really, really stable. We basically do not have pressure issues. And we have artists using it in production. And it's simple to build. It uses Python mainly. So if you're an artist or a developer, you can easily get, well, if you're comfortable with the command line, you can get it and use the GIT version. And there's no point in really waiting if you're anxious for some new features or just trying it out. So future, we have some concrete items coming up in the future, one being that the Python 3, so we will move to Python 3 at some point. It's kind of becoming time to do that. We will also move to use PyGT object and introspection instead of using PyGTK. It's kind of another technology change that's happening kind of below us. We will probably do that after 1.0. Well, we will do it after. And the next thing, those are the concrete items that we have. Then there's more about visions. Where do we, or where do I, I'm only one of the developers, see mypng going. We now have the general trends that Krita especially is becoming a really, really awesome application for the full set or full workflow for painting, drawing, and all these things. So maybe we want to position mypng officially more as a sketching tool and focus on the simple, creative tools. The thing is that most artists use mypng as part of their workflow. They start in mypng, for instance, going to Krita to do, maybe they do even most of the work in Krita. But a lot of the more active our mypng users use mypng for like 80% of their stuff. And then they, for instance, quite commonly important to game to do final crop, color corrections. Sometimes they do do stuff in between. One lack we have right now is there's no different compositing modes. And we could add layer modes, but we're kind of more interested in having brush modes. So you have a lightened brush, or you have an overlay brush, or you have a dodge brush, instead of kind of forcing people to deal with layers when they just want to lighten or get that kind of effect. So right now people transport to GIMP to do that kind of stuff if they like it in their workflow, which is kind of why I did the OpenRacer support in GIMP for the first place. So interchanged is really important for us, because we are, and we will forever be, just part of the workflow that, well, we don't aim to have all the sets of tools that Krita, for instance, has, or GIMP. And one thing I hope to really emphasize this point and really kind of really build on it. And I hope to do this by moving the brush engine to Gaggle. So the entire document would be described as a Gaggle graph with some wiping operations. This means that you could then import it into GIMP, and it should be much faster operation to import it into GIMP once GIMP does Gaggle a lot. And to have the entire document kind of understood by GIMP, like every aspect of the MyPaint stuff, or maybe not every, but most. And then, perhaps more importantly, allow people to do all their GIMP operations, but have MyPaint at least have a basic concept of all those things you did in GIMP. So the cropping transformations, all those things we don't really want to implement on our own. But we really want to enable as part of a workflow. So that's, and then hopefully we could, if we had a common base with GIMP, maybe we could even do crazy stuff, like having GIMP and MyPaint edit the same document. So basically, you can just alt-hub. And you have GIMP as a UI available, and all the action is exposed. And then go back to MyPaint and kind of just go back into your creative spirit and just do that. That's my hope. Yeah, and I said in the abstract that I would tell something about how you can influence MyPaint's direction. And we have a lot of artists, but we always like to get a feedback. It's really important for us. It's important for everyone, but we encourage it. But in general, we need developers. Code is what makes software. And we are a very simple application. I mean, we have a narrow scope. It's 10,000 lines of code in Moinly, Python. Simple stuff, UI code mainly. A brush engine that is like 2,000 lines of code. And it's also quite simple conceptually. So it makes it a good project for contributors that are starting out. And we are also, I would say, really friendly to new contributors in a small, tight environment. So you kind of get to interact with the core people at once. It's not like there's any barrier things like that. So I really encourage anyone who's interested in trying to do some development. Maybe you are a developer already. But come to us. And if you like MyPaint or want to help out. Questions? What does it mean? Come to us. Because we will be streaming this. So maybe you can tell what it is. Our website. We have then a simple page for contributing and showing the communication channels we have. We are basically, I'm on RSE all the time. So you can join us, hash MyPaint, FreeNode. And we also have a mailing list where all the developers are, at least. Not so many users, but it's also free to use. And it's pretty well documented on our website. So I don't know if this is going to be really a useful question or not. But I'm always amazed. How is MyPaint so fast when it comes to such huge images? And even the GIMP is written in C. And when you get to really big images, it just gets slow. And MyPaint is written in Python. Do you have a C back end for this? Or is it just super smartly written? Or what's going on here? Actually, the back end is quite an interesting story. We have the back end mainly in C++. It's basically C with classes. So that kind of, we move stuff that needs to have good performance that we cannot achieve in Python. We move it down there. And we have a brush engine that you can separate out. It's not too easy at the moment. But that's what Krita has been using. And we have the UI that kind of exposes how you draw in that stuff. And then you have the brush engine between which maps inputs to kind of the dabs, which are just like circles you put on the screen, which makes up the stroke in the end. Underneath that, you have the surface implementation, so what you're actually drawing on. And that is an interesting thing because it's written kind of, it's a C++ interface. But we actually use Python dictionaries for the tile structure. So we kind of have this fairly well optimized structure that we kind of just use. And that's kind of the trick, like do what needs to be, is performance critical in C++ and use existing well optimized data structures. I would say that's the trick. But it's also a really simple brush engine that helps. Thanks. Just one thing. It may help when the person starts a project as an engineering working on embedded systems. To keep it. Yes, Martin has a background there, so he knows some tricks. No, no, no. Hey, just solely because it came up in the CRETA talk, I was wondering if you had thought about multi-page documents or if OpenRaster already supports that, and I'm just not aware of it. And no, OpenRaster does not support multi-page documents. There is a film, the art director of a film in Berlin that's currently using MyPaint for concept art. And basically what he does, which is kind of a hack, well, it's not. It works, is to use our backgrounds where we basically have a storyboard background. And this kind of, I mean, in the CRETA workflow, this kind of can be nice, actually, because you don't have to specifically create these new frames or anything. Because of the infinite canvas, this is just, well, you can just go in and do it. But this has problems. You want to rearrange them sometimes. So I have toyed with the idea of having multi-page support. But you don't really want to put it in MyPaint because there's only a really small subset of users that care about it. At least if you put it in MyPaint, it should be not in their face, than the other users face. But what I also part of my vision is to, if I managed to get MyPaint brush engine based on Gaggle, that just makes it much, much easier to reuse that code and all that stuff in other projects. So it should be pretty simple to just kind of create a new application that really reuses all the hard stuff. So that might happen eventually. But it's kind of really in disguise. Anyone else? Oh, thank you. Good job. Thank you.
 So the talk is titled My Paint, the past, the present,  and the future.  We'll go through the past really quick,  giving an introduction about what My Paint is,  how it got started, and some parts of the development  up until now.  First, about me.  My name is Yulin Mube.  I also respond to John, if that's easier.  On my spare time, I do My Paint, Open Raster, mainly.  I also do some GIMP development and some Gaggle development.  In my day job, I work at Openismus, a company in Berlin  specializing open-source software,  and currently working on contracts doing Nego work.  So the past, it all started in 2004, when Martin Reynolds  decided that, yeah, I want to do a bit of creative arts.  And I want to draw digitally.  I'm not too interested in traditional media,  and I'm not happy with the solutions that are out there.  And his focus was really on the creative stuff.  He just wanted to draw.  So he is an engineer.  At that time, I was a student.  And he decided, yeah, I will just do it on my own.  He started basically with a plain input window  and a brush engine.  He kind of went input window and brush engine.  He had some ideas what he wanted to do with the brush engine.  And an interesting thing is that it's basically  the exact same brush engine we used today.  It just added some stuff.  And it's a really simple brush engine, but it really works.  So his motivation was to make something  that he liked using and like developing, of course.  So the initial versions looked something like this.  This is now like every dialogue is on the screen.  But you see the main window where you will actually  be drawing is just a canvas and a menu bar.  So really, really about the drawing parts.  And he typically works by having, well, nothing like this  on the screen, just popping up those dialogue windows  when he uses them.  So he basically has a full screen canvas all the time.  Yes.  So this is an initial version of the brush engine.  This dialogue just gives you every button and thing  you can imagine and kind of corresponds directly  to how the brush engine works.  These are ways to define dynamics.  So every kind of setting you see up there,  like opacity and other strange stuff, hardness, radius,  can depend on stuff like the pressure or the tablet,  of course, the speed you move, the direction you move.  So it's a really dynamic system.  And all brushes are procedural.  So between 2005 and 2008, Martin basically  continued developing on his own.  Added more and more features.  We got really kind of a unique feature pretty early on,  which is infinite canvas.  So you basically just start with a blank canvas.  And once you start painting in some direction,  well, your canvas is that big.  So it's as big as you need at any given time.  And artists really love this because, one,  it means you don't have to choose when you start up,  oh, I want to do something that is x big,  because that kind of kills creativity.  And two, is like, I have these constraints  to actually paint beyond to change what I was doing right  now, I would have to go into some dialogue,  change the size, sometimes through really crazy dialogues  and not good UI.  But even if the UI is good, it's still  a switch from the creative mode of just drawing your totally  into the art to kind of fiddling with this computer thing  that you don't really care about on this software.  So in 2008, it looked something like this.  And it didn't change much in terms of the UI.  You see here is more typical way of using.  You have the entire canvas basically spread out.  You have a menu bar at the top.  You have a color selected.  This is a standard GTK one.  And the brush selection.  These are the two typical actions you do.  You change the color, and you change your brush.  And it's, yes.  So what happened?  Why did I put 2008 here and then 2009?  Well, up until now, Martin has been developing basically  all on his own.  He got patch sets, like four or five patches  about something specific.  But in general, it was his thing, and he did all the work.  In 2009, people started joining in,  switched to Git for version control,  kind of spurred things up for some reason.  I joined, and we had some other contributors that were with us  for a long time.  And now it's more of an actual open source project  in that you collaborate and you do different things.  So and here, more features were added.  I forgot to say that in 2008, we got layer support.  And then, my pain was the first application  to use OpenRaster as a default document format.  So that was kind of important for OpenRaster.  And also, in these years, we kind of have, because of that,  we've been kind of the ones pushing OpenRaster lately.  OpenRaster, as you know, is a format that started at LGM  and still is kind of developed around here.  Yes.  So this is how it looked like, basically,  with the latest release version.  There are no huge differences.  We've got a layer dialog, actually, for one major release.  We didn't have a dialog for the layers.  You just had keyboard shortcuts.  Now it's a really basic dialog, but it kind of,  that's what you want.  And a new color selector.  I'm not very happy about it myself, but it's there.  Some people like it a lot.  So the present, I should have hooked this up,  but I want to show you a bit of my paint.  I'm just making sure that I don't have  any configuration things.  So this is the latest released my paint.  It is available in all major distros.  So in the latest version of your distro,  well, most definitely, it's available in all major distros.  But most definitely have the latest my paint release,  which is 0.9.1.  Yeah.  I forgive me for my quite special desktop environment.  It's not what you typically see.  But this is kind of how you would start.  This is the default startup for my paint.  So you have just showing you that you can select colors  and that you have several brushes to choose from.  So these brush sets that I'm currently in  are we have two artist brush sets, one called  DeVod, which is David DeVod, who works on the Durian project.  It's a really nice brush set.  And we have Ramon, which is Ramon Miranda's brush set.  He does Gimp Paint Studio and also, in general,  is active in many, many projects.  So the default presets show what the brush engine can do  in a pretty comprehensive way.  We still have a challenge.  And I will show it to you.  Do you recognize this from the first screenshot?  It's exactly the same as before.  This has the advantage that, well, it gives you every button  and tweak that you can do as far as the brush engine  goes.  But could you tell me which ones of these switches,  or sliders, buttons are relevant for the current behavior  of the brush?  Most likely, you couldn't easily do that.  And this is the problem.  So this is something we're working on right now,  slightly, at least somewhat.  And we have the same issue here.  It's not obvious which ones of these  are relevant or what they do.  So that's something that we need to get some love finally,  since it's basically been the same for, well, six, seven  years now.  And I want to show you some unique features  that MyPint has.  A long thing about workflow first,  it's kind of designed for a tablet and keyboard usage.  So you kind of have your tablet at all times.  But using your right hand or left, if you choose so.  And then a keyboard.  So we don't do flip over tablet PCs very good,  because it's kind of keyboard-centric.  That's also something that we're looking to improve.  It's just that no one of the current developers  have such a machine.  So one of the really nice things is, of course,  the infinite canvas.  I mean, I start doodling here.  And then I decide, well, this might be a nice doodle.  Sometimes you just want to, I don't want to do the new document.  I just want to do some other doodling.  And you just move to the side.  You draw on, well, you can do as much as you like  in any direction.  And it will all be saved.  And you can just go in any direction.  Don't worry about document size or anything like that.  It's really unnecessary most of the time.  Another nice feature that you don't know what I intended  is what we call a context picking or a brush picking.  So we actually store the data about what kind of brush  did you use at any given point.  So you press W by default.  See now I have the pen brush.  Here I used some other brush.  You press W and you actually get that brush, which is quite  awesome in practice because you do a foreground, well, not  necessarily a foreground layer or stuff like that,  but you paint some foreground.  You paint some details.  You use different brushes.  And you don't really care about which brush you use.  But very often you want the same brush or something very  related to it.  So you see the effect of that brush.  It's like, oh, I want now that, but it's likely bigger or  whatever.  Pick it.  And then you do some tweaks.  And this is something that once artists have incorporated  into their workflow, they don't like doing things  otherwise.  Yes.  Those are the two major features that I want to show.  Now I'll go slightly over to just show the development  version and some of the changes we had.  So one feature actually comes up right away.  I said that it's kind of intended that you have a full  canvas.  You pop up the dialogues as you need them.  But in practice we see that a lot of people want to kind of  have every dialogue at the same time.  On a screen like this, it doesn't make sense.  But if you have a huge screen, you can basically keep  everything up to the side.  And people did this by positioning the  windows manually.  Instead, we basically said, OK, we will do a simple mode  where you can just dock things to the side, which just  really helps that kind of workflow.  Even though it's not the main workflow we want to promote,  it is a useful workflow.  So that's a new feature.  One other thing is that this infinite canvas really promotes  creativity.  And artists generally really like it.  But you have some problems if you want to do or challenges  if you want to do more design things.  So you're creating a poster.  It needs to have a certain physical size, or at least  pixels, by size do you want.  And well, how do you do that?  There's nothing here that tells you, well, this is x  pixels, or this is given dpi, and dpi this is x inches.  So people say, oh, we actually do want a definite  document size at some point, or canvas size.  And we basically, this is the oldest bug or feature request  going back almost five years.  And the challenge here is that we didn't want to do a mode  so you would switch over to, OK, now your canvas is this  big and it can only be this big.  So you wanted to preserve the creative workflow that you have  with infinite canvas.  So you just expand whatever you want.  There's no hard boundaries.  And we basically have the start of this feature right now  where you can do a document frame.  And you give it some size.  And you know what.  And basically this looks like the cropping feature in GIMP  and other software.  And the important thing is that you draw within these  boundaries most of the time.  But you can still extend out at any given time and have this  easy way of just like, yeah, you can go do that.  We want to enable people to do that still.  When you save to a PNG, this will be cropped to the given  document size you set.  But if you save to OpenRAS, start working document format,  we will save all the data by default.  We might introduce some destructive like, now you  say I want to really crop this document.  But in general, we save all the data.  So this is new.  What we'll be, it's kind of blocking the 1.0 release, is  having some proper UI for moving this.  So this should all happen on campus, of course.  And yes.  And also we added just minor things, more preferences,  different places, in terms of your input devices mapped to.  More importantly is that we now fully track the different  input devices.  So now I'm using a kind of a pencil tool here for the tip  of my pen.  However, you can switch to the other side and have a  eraser brush.  So you can kind of keep those in even time.  So but there seems to be a bug.  Not nice.  That's the general idea.  One other feature that I would like to highlight while we're  at it is the concept of an eraser mode.  So I just do some, you can use any brush as an eraser, which  kind of can give you this workflow that is common in  pencil, traditional pencil art, where you draw, but you  also kind of draw with your eraser, these kind of a  stub eraser, like these, for instance.  But you can then like, OK, I have some, these are all not  so interesting, but what about the, OK, so this is like an  airbrush.  And we can just switch this to be an eraser.  So I would actually now simply erase parts of the stuff I  previously drew, which kind of can enable nice workflows.  So that was the present, more or less.  We hope that, I actually hope that we would have 1.0 done  for LGM.  It did not happen.  There was not a lot of activity the last couple of months.  So it looks like it will be in a couple of months.  One thing to note with my paint is that the GIT version is  really, really stable.  We basically do not have pressure issues.  And we have artists using it in production.  And it's simple to build.  It uses Python mainly.  So if you're an artist or a developer, you can easily get,  well, if you're comfortable with the command line, you can  get it and use the GIT version.  And there's no point in really waiting if you're anxious for  some new features or just trying it out.  So future, we have some concrete items coming up in the  future, one being that the Python 3, so we will move to  Python 3 at some point.  It's kind of becoming time to do that.  We will also move to use PyGT object and introspection  instead of using PyGTK.  It's kind of another technology change that's  happening kind of below us.  We will probably do that after 1.0.  Well, we will do it after.  And the next thing, those are the concrete items that we have.  Then there's more about visions.  Where do we, or where do I, I'm only one of the developers,  see mypng going.  We now have the general trends that Krita especially is  becoming a really, really awesome application for the  full set or full workflow for painting, drawing, and all  these things.  So maybe we want to position mypng officially more as a  sketching tool and focus on the simple, creative tools.  The thing is that most artists use mypng as part of their  workflow.  They start in mypng, for instance, going to Krita to do,  maybe they do even most of the work in Krita.  But a lot of the more active our mypng users use mypng for  like 80% of their stuff.  And then they, for instance, quite commonly important to  game to do final crop, color corrections.  Sometimes they do do stuff in between.  One lack we have right now is there's no different  compositing modes.  And we could add layer modes, but we're kind of more  interested in having brush modes.  So you have a lightened brush, or you have an overlay  brush, or you have a dodge brush, instead of kind of  forcing people to deal with layers when they just want to  lighten or get that kind of effect.  So right now people transport to GIMP to do that kind of  stuff if they like it in their workflow, which is kind of why  I did the OpenRacer support in GIMP for the first place.  So interchanged is really important for us, because we  are, and we will forever be, just part of the workflow that,  well, we don't aim to have all the sets of tools that Krita,  for instance, has, or GIMP.  And one thing I hope to really emphasize this point and  really kind of really build on it.  And I hope to do this by moving the brush engine to  Gaggle.  So the entire document would be described as a Gaggle graph  with some wiping operations.  This means that you could then import it into GIMP, and it  should be much faster operation to import it into GIMP  once GIMP does Gaggle a lot.  And to have the entire document kind of understood by  GIMP, like every aspect of the MyPaint stuff, or maybe not  every, but most.  And then, perhaps more importantly, allow people to  do all their GIMP operations, but have MyPaint at least have  a basic concept of all those things you did in GIMP.  So the cropping transformations, all those  things we don't really want to implement on our own.  But we really want to enable as part of a workflow.  So that's, and then hopefully we could, if we had a common  base with GIMP, maybe we could even do crazy stuff, like  having GIMP and MyPaint edit the same document.  So basically, you can just alt-hub.  And you have GIMP as a UI available, and all the action  is exposed.  And then go back to MyPaint and kind of just go back into  your creative spirit and just do that.  That's my hope.  Yeah, and I said in the abstract that I would tell  something about how you can influence MyPaint's direction.  And we have a lot of artists, but we always like to get a  feedback.  It's really important for us.  It's important for everyone, but we encourage it.  But in general, we need developers.  Code is what makes software.  And we are a very simple application.  I mean, we have a narrow scope.  It's 10,000 lines of code in Moinly, Python.  Simple stuff, UI code mainly.  A brush engine that is like 2,000 lines of code.  And it's also quite simple conceptually.  So it makes it a good project for contributors that are  starting out.  And we are also, I would say, really friendly to new  contributors in a small, tight environment.  So you kind of get to interact with the core people at  once.  It's not like there's any barrier things like that.  So I really encourage anyone who's interested in trying to  do some development.  Maybe you are a developer already.  But come to us.  And if you like MyPaint or want to help out.  Questions?  What does it mean?  Come to us.  Because we will be streaming this.  So maybe you can tell what it is.  Our website.  We have then a simple page for contributing and showing the  communication channels we have.  We are basically, I'm on RSE all the time.  So you can join us, hash MyPaint, FreeNode.  And we also have a mailing list where all the developers are,  at least.  Not so many users, but it's also free to use.  And it's pretty well documented on our website.  So I don't know if this is going to be really a useful  question or not.  But I'm always amazed.  How is MyPaint so fast when it comes to such huge images?  And even the GIMP is written in C. And when you get to  really big images, it just gets slow.  And MyPaint is written in Python.  Do you have a C back end for this?  Or is it just super smartly written?  Or what's going on here?  Actually, the back end is quite an interesting story.  We have the back end mainly in C++.  It's basically C with classes.  So that kind of, we move stuff that needs to have good  performance that we cannot achieve in Python.  We move it down there.  And we have a brush engine that you can separate out.  It's not too easy at the moment.  But that's what Krita has been using.  And we have the UI that kind of exposes how you  draw in that stuff.  And then you have the brush engine  between which maps inputs to kind of the dabs, which are  just like circles you put on the screen, which makes up the  stroke in the end.  Underneath that, you have the surface implementation, so what  you're actually drawing on.  And that is an interesting thing because it's written kind  of, it's a C++ interface.  But we actually use Python dictionaries for the tile  structure.  So we kind of have this fairly well optimized structure  that we kind of just use.  And that's kind of the trick, like do what needs to be, is  performance critical in C++ and use existing well optimized  data structures.  I would say that's the trick.  But it's also a really simple brush engine that helps.  Thanks.  Just one thing.  It may help when the person starts a project as an  engineering working on embedded systems.  To keep it.  Yes, Martin has a background there, so he knows some tricks.  No, no, no.  Hey, just solely because it came up in the CRETA talk, I  was wondering if you had thought about multi-page  documents or if OpenRaster already supports that, and  I'm just not aware of it.  And no, OpenRaster does not support multi-page  documents.  There is a film, the art director of a film in Berlin  that's currently using MyPaint for concept art.  And basically what he does, which is kind of a hack, well,  it's not.  It works, is to use our backgrounds where we basically  have a storyboard background.  And this kind of, I mean, in the CRETA workflow, this kind  of can be nice, actually, because you don't have to  specifically create these new frames or anything.  Because of the infinite canvas, this is just, well, you  can just go in and do it.  But this has problems.  You want to rearrange them sometimes.  So I have toyed with the idea of having multi-page support.  But you don't really want to put it in MyPaint because  there's only a really small subset of users that care  about it.  At least if you put it in MyPaint, it should be not in  their face, than the other users face.  But what I also part of my vision is to, if I managed  to get MyPaint brush engine based on Gaggle, that just  makes it much, much easier to reuse that code and all that  stuff in other projects.  So it should be pretty simple to just kind of create a new  application that really reuses all the hard stuff.  So that might happen eventually.  But it's kind of really in disguise.  Anyone else?  Oh, thank you.  Good job.  Thank you.
MyPaint_-_The_past__the_present__and_the_future_0_59.png MyPaint_-_The_past__the_present__and_the_future_60_431.png MyPaint_-_The_past__the_present__and_the_future_432_2699.png MyPaint_-_The_past__the_present__and_the_future_2700_4427.png MyPaint_-_The_past__the_present__and_the_future_4428_5003.png MyPaint_-_The_past__the_present__and_the_future_5004_5807.png MyPaint_-_The_past__the_present__and_the_future_5808_6239.png MyPaint_-_The_past__the_present__and_the_future_6240_7163.png MyPaint_-_The_past__the_present__and_the_future_7164_9047.png MyPaint_-_The_past__the_present__and_the_future_9048_9755.png MyPaint_-_The_past__the_present__and_the_future_9756_9899.png MyPaint_-_The_past__the_present__and_the_future_9900_9947.png MyPaint_-_The_past__the_present__and_the_future_9948_10163.png MyPaint_-_The_past__the_present__and_the_future_10164_10211.png MyPaint_-_The_past__the_present__and_the_future_10212_10871.png MyPaint_-_The_past__the_present__and_the_future_10872_10931.png MyPaint_-_The_past__the_present__and_the_future_10932_14711.png MyPaint_-_The_past__the_present__and_the_future_14712_15071.png MyPaint_-_The_past__the_present__and_the_future_15072_15323.png MyPaint_-_The_past__the_present__and_the_future_15324_15575.png MyPaint_-_The_past__the_present__and_the_future_15576_17255.png MyPaint_-_The_past__the_present__and_the_future_17256_17423.png MyPaint_-_The_past__the_present__and_the_future_17424_17771.png MyPaint_-_The_past__the_present__and_the_future_17772_20723.png MyPaint_-_The_past__the_present__and_the_future_20724_20771.png MyPaint_-_The_past__the_present__and_the_future_20772_20879.png MyPaint_-_The_past__the_present__and_the_future_20880_21083.png MyPaint_-_The_past__the_present__and_the_future_21084_21251.png MyPaint_-_The_past__the_present__and_the_future_21252_25247.png MyPaint_-_The_past__the_present__and_the_future_25248_34847.png MyPaint_-_The_past__the_present__and_the_future_34848_35159.png MyPaint_-_The_past__the_present__and_the_future_35160_35987.png MyPaint_-_The_past__the_present__and_the_future_35988_39263.png MyPaint_-_The_past__the_present__and_the_future_39264_39323.png MyPaint_-_The_past__the_present__and_the_future_39324_41651.png MyPaint_-_The_past__the_present__and_the_future_41652_41701.png