Graphite 2D FOSS raster/vector editor: Looking back on 2023 and what’s next

Greetings! We’ve been building Graphite for three years for the FOSS creative community. My vision and Graphite’s mission is to finally create the 2D counterpart and companion to Blender: versatile across all 2D disciplines; innovating instead of imitating proprietary software; leaning fully into modern concepts (non-destructive, procedural, node-based, pipeline-driven); and focusing on an intuitive and attractive UI and UX. The software is currently in its alpha stage and making rapid progress, although we have many ambitions so it’ll be a decades-long endeavor just like Blender has been.

The short description for the Graphite long-term vision is combining a raster/photo editor (like Gimp or Photoshop), a digital painting app (like Krita), a vector editor (like Inkscape or Illustrator or Figma), a constraint-based parametric modeling tool (like the 2D parts of any CAD software), a desktop publishing tool (like InDesign), an animation tool (like After Effects), a compositor (like Nuke or Blender’s compositor or Substance Designer), and, most centrally, a general-purpose procedural toolbox (like Blender’s geometry nodes or Houdini). That’s immensely ambitious but we’re prioritizing just the procedural and vector, and soon also raster, parts at the moment.

This is my first time posting about the software project here for the Blender Artists community, although you may know about it if you regularly watch Blender Today since Pablo Vazquez showed it off several months back. We just released a blog post recapping all the progress and accomplishments from the past year (including some of our core team members visiting Blender in Amsterdam over the summer) which I wanted to share here for the community.

The tl;dr is that we just finished a year of work reaching the minimum viable product for procedural vector editing using our node graph. Here’s a quick demo:

As far as I know, there are no other procedural vector editing applications out there, so that makes Graphite unique— I can’t think of any 2D design-focused tools where you could draw Christmas tree lights like that, and this is only a very basic example of what procedural 2D vector editing can achieve. I’d be especially thrilled for any proceduralism aficionados to join our community (Discord link and push the limits of the software and help us to design further improvements. Our node system is still rough around the edges but improving quickly— this is very much the early days: Inkscape is 20, Gimp is 25, and Blender just turned 30(! :tada:) while Graphite is going to be only 3 years old next month. But we are in this for the long haul.

Besides vector, we’ll be putting a renewed focus towards raster editing as well this year (that’s mainly limited by performance until we soon finish the engineering behind GPU accelerated rendering), and a desktop app should be available in the next couple months as well. But even though it is currently web-based, it’s all client-side and is much more lightweight and instantaneous than most web apps you’re used to because we don’t use any JavaScript libraries which tend to be the source of bloat in typical web apps, so our GUI interaction feels snappy like a desktop app.

With that said, if you find the project interesting, please read the blog post to see what we’ve been up to this past year: https://graphite.rs/blog/looking-back-on-2023-and-what-s-next/ And then go make some art and share it here!

15 Likes

This is awesome! I’ve been using Illustrator for decades now (for work mainly), and I’ve longed for a competing FOSS app that could stand toe-to-toe. Inkscape is really good, but it lacks robust raster functionality; Krita is good as well, but it’s sometimes frustrating to use (for me anyway). Really looking forward to what you guys are creating.

Looks amazing so far !
UI is really neat and I like really much the overall concept !
It’s true that when it comes to long term targets like vector animation / motion design or a simple compositing app in the open source world there isn’t a lot of options available, even more used professionally.

A tool that, like blender, can do a bit of everything and especially mix areas that generally needs several apps can be indeed quite helpful !

Keep up the good work !!

1 Like

The biggest NO I’ve found with FOSS/low-budget vector apps is that they have rather poor tools for the most basic task one does in vector drawing - fluid and predictable manipulation of points and handles. (And that includes Blender.)

If Graphite has got that covered, then it will a great strength.

2 Likes

We currently have the industry-standard Pen tool and path editing tool (we call it the Path tool, I forget what Illustrator calls it but it has the keyboard shortcut of “A”). We also conveniently include G/R/S shortcuts to move points around which I’ve longed for in other editors. We also have the Spline tool, and eventually we’ll get to adding smoothing to the Freehand tool (so it can turn your raw mouse drawing into a simplified Bezier path). I come from an Illustrator background (never could figure out Inkscape’s confusing UI) so that’s my design baseline, but there’s definitely room to improve upon that. But could you please elaborate further on what you consider the right tools for “fluid and predictable manipulation of points and handles”? Something fundamentally different from the Pen/Path tools? Or similar to those? That’s a very important part of the app so having feedback from other perspectives is valuable!

CorelDraw came close to efficient handle/points manipulation – unlike Illustrator you only needed 1 tool for that task. The thing that frustrates me the most with Illustrator is its terrible snapping - also, try and align to a certain angle and you’ll tear your hair out. CorelDraw was accurate to 10 microns and could snap to any angle along with built-in isometric tools with dimensioning features.

2 Likes

The easiest example I can think of is that with 2 tools in Illustrator (Direct Select, and Anchor Point), I can accomplish most things - I can move a point, or a handle. I can break the handle from tangency, or return it. And at any time, i can add a point between two others without breaking the current curve, or adjacent handles.

I don’t have to use different modes, or go into some other “edit step”. Pick one of those tools, click, drag, let’s make the desired curve. It’s often hard for a beginner to learn the “click and draggggg” method (because nothing like painting), but once they learn it - you see their brain pop into place, and a big smile.

In Blender (I’m comparing Blender, since we all have it to compare it), they have it sort of … backwards. You have to "assign’ a knot type to each point (vector, aligned, etc - ironically bezier is not a named option), and then just hope you picked the right one as you start dragging around. Inserting another point mid-curve may completely destroy the shape, meaning you have to now undo, then assign a DIFFERENT type to your points, then try again and hope you got it right.

I think i used - maybe it was Inkspace? can’t remember, sorry - a few months ago, testing to see how well the tools worked for this sort of thing. After 5 mins, i deleted the software. It was somewhere between Illustrator and Blender - as if coded by someone who had heard about drawing curves, but never actually done it themselves for any quality amount of time.

ETA: One thing I completely forgot to mention (sorry, still on second cup of coffee) was the Pen Tool itself. A key strength of Illustrator is I can click with the pen, and depending on mod keys or drag or whatever - i get a sharp point, or a curved point. With another mod key, the cursor changes (momentarily) and I can adjust a point without leaving draw mode for that curve. It’s hard to describe - but, it’s like I’m never being forced to “commit” to something I don’t want, just so that I can tweak something along the way.

3 Likes

Interesting open source project… :+1:
waiting for the desktop app… :wink:

3 Likes

Yeah… you lost me at “web browser only”, if this ever gets a desktop app that doesn’t require internet connection, I’ll check it out

2 Likes

This is very exciting, not a day passes where I don’t long for a unified FOSS 2D editing program. Affinity has great snapping tools, Krita has amazing painting tools, Inkscape has also considerably matured (although I don’t use it that much), but none of them have a document graph representation -well, maybe they do internally, but as far as the user can see, it’s always just layers, and it always feels limiting.

My concern with a project with such a wide scope is how you’re going to cater to different workflows : raster painting and vector illustration are pretty straightforward and standard today, but publishing? motion design? specialized programs such as Krita or QuarkXpress know to provide “soft-proofing”, “global layers”, etc. which are very specific to certain jobs.
Blender has had this issue for a long time, where the base tools were mostly there, at your disposal, but never really arranged into a specific workflow, so you really had to come up with your own. Want soft-proofing? go through a compositing nodetree. Want the equivalent of global layers? use instanced objects.
Perhaps it would be good to think of an API early so that other users and contributors can build upon the core functionality and help make things smooth for different disciplines.

4 Likes

Wow. I have to say that previously I hadn’t been sure of the niche that Graphite had been trying to fill, but after seeing that tutorial and the use of the node graph, I’m convinced.

Bringing procedural tools to 2D image and vector editing has enormous potential.

3 Likes

Well… it’s open source and…

…also some instructions ( on graphite.rs ) to run it on your computer (the “usual” javascript nodes webapp workflow…)…

(hmm maybe simpler to use than

?? )

Edit:
Oh my this is interesting… just sctible somethign and then click on the…

node graph !!!

By far better than simple history… !!!

I used Abobe illustrator for decades until Adobe went sub
tried inkscape ,and sorry, but its terrible

I finally settled on Affinity designer for the rare
occasions when I need to edit vector art these days.

1 Like

While this does sound like a great alternative to Inkscape, I will caution that the use of Java as the language may eventually become a headwind for the project as people start asking for things like better performance for very complex documents.

One of the things FOSS historically has just not done a very good job with compared to commercial software is performance, and I do hope that pitfall can be avoided this time.

I thought it was Rust… hmm…

Use use of npm in the “some instruction link” is a clear hint of Javascript (or ECMAscript)…

1 Like

We use Rust, not Java, and that’s specifically because we have performance in mind (although there are parts of that architecture which still require some engineering until we unlock the full performance potential). If you meant JavaScript instead of Java, that is only an interface layer which represents a small fraction of our code and doesn’t introduce any performance bottlenecks. Every decision about the tech stack and architecture is chosen with the performance as the main goal.

6 Likes

You can see exactly what languages it uses, like any other GitHub repo:

More on topic, while I don’t love web only apps, I am very impressed at the quality of this program. I’ll be keeping an eye on this for sure

2 Likes

…well… that’s interesting… :+1:

I’m surprised it is not weird, like most open source projects…
Nice job following the standards… :+1:

1 Like