Graphite: Open-source raster and vector 2D graphics editor
graphite.rs
graphite.rs
If you're a dev on an open source project, please hear my plea and stop trying to sell it like you're a hot startup.
Take inspiration from websites from projects such as OBS Studio, Handbrake or VLC (or Blender, but that is a very high bar). Those websites have none of the marketing lingo and all of the to-the-face info presented with easily digestible bullet points and pictures.
(to be clear, I don't have issue with the rest of the website, which is definitely not the case for a lot other projects I've seen)
But... I guess it's hard being on the other end when actually writing copy so I've failed to design text which can be highly terse and also descriptive of complex concepts without turning into paragraph-long explainers. I know what Graphite is in my head, but conveying that to newcomers is really challenging! But clearly I need to try again.
Is there any chance you'd be willing to reach out to me, ideally on Discord but email also works, and let me use you to test my copy to a fresh pair of eyes? Basically as a B.S. detector :) I'm currently working on a new revamp to the website with many new pages, so having a fresh perspective and some ideas how to make things more direct (but not necessarily overly technical, since it should be digestible to artists also) and less marketing-ey, I'd find that highly valuable.
Many times, I've wished that Photoshop would have nodes instead of layers, as it would make some things much simpler. Or that Illustrator and Photoshop would be combined into a single app.
I'm really impressed. Node-based compositing is not a feature that Adobe can easily add to Photoshop, as that would change the core workflow.
I remember being excited that Photoshop was going to start to work more like fireworks when they bought it. What a naive dummy I was.
Graphite looks like it could become the jack-of-all-trades app, since its foundation looks very flexible (i.e. the node graph). But, it is in its early development phase and adding necessary features is going to take many years.
This is why I have been using Affinity. Very well done integration of vector and image capabilities. However, their development has slowed significantly in recent years despite having a great product.
I hope that Graphite can be something new and become the blender of 2D image editing. There is nothing really out there right now that has the professional features of paid applications.
Did they comment on why this happened?
They are now working on the most important feature in my opinion for the life of Affinity products. They are finally adding built in scripting support that will also enable development of 3rd part extensions. Hopefully this will bring new life and excitement to Affinity.
The premise sounded nice when I first started using them but I cannot in good conscience recommend either of them to anyone at this point.
However, as I started using it more professionally a few years ago, there are some real problems with long standing bugs in some areas.
My biggest complain at the moment is Art Boards. I use them for almost all my work. Allows me to work much faster when working on a suite of related projects.
However, they are the most broken of all features. Probably half of all the Affinity photo live effects are broken in art boards. Also, not sure which is worse, Affinity or the users. I've opened so many bugs on art boards, to have users push back and say it is not a bug and then Affinity ignores it. They say it is not a bug because most don't use art boards as they never grasp the use case.
This has come up repeatedly in the forums as new users discover it. And yep, the apologists cried and thrashed, issuing one ridiculous excuse after another. Even someone from Affinity.
I wish someone there would teach me about layer blending. I still don’t get it after building high-end compositing software for film.
Just curious, do you have a reference?
I've complained on the forums for years about the bugs and Affinity never responds. As I've been using it for years, I figured out how to work around many bugs, but it is a field of landmines for sure.
It is indeed disappointing as it offers the best workflow for the kind of work I do.
Plus if you've ever interacted on their forums their mods are really pushy and dismissive.
Yes I agree. I argued with them at length about having a real process for handling bugs that is transparent. They have no method of evaluating the need or priority of anything as they rely only on their forum.
Basically somewhat the gist is that some time ago Affinity decided due to a lot of negative complaints they simply will be less transparent about everything so that nobody could complain. The result of course was obvious, all complaints became about the lack of transparency. Which also resulted in many content creators dropping Affinity because they felt the product didn't have a future as no more communication from the company. So there went their free advertising as well. Terrible management decisions for sure.
Graphite – open-source raster and vector 2D graphics editor written in Rust - https://news.ycombinator.com/item?id=30675530 - March 2022 (18 comments)
I've designed the whole architecture specifically to avoid the web UI "feeling like a web app" with the subtle latency of interacting with the site. I wrote all-custom UI components using the minimal amount of HTML and CSS to achieve the requirements instead of depending on an external component framework which always loves nesting dozens of `div`s inside each other to achieve what should be doable in one or two. And our highly-lightweight JS which calls into Rust (Wasm) lets it keep the slow logic out of slow JS. And we are using Svelte to move most of the frontend DOM management logic from runtime to compile time. This architecture really helps us keep performance levels as close as possible to feeling native despite using the web for its GUI rendering; and I believe it has succeeded at feeling responsive by comparison to most other web apps you use (even Slack, for example, which shouldn't be nearly as complex).
Web lets us build fast, deploy the latest version to users fast, leverage prevalent developer experience with HTML/CSS for creating GUIs, and avoid getting stuck in a box with Rust's currently-immature GUI ecosystem. That's the tradeoff we had to make early on, and it was a good decision. But we will eventually move towards a fully native version...
In the short term, we plan to use [Tauri](https://tauri.app/) which is sort of a hybrid between Electron and a native application. It uses the OS's webview to shrink the shipped binary to only a few megabytes and reuse shared memory resources with other webviews at runtime. It also runs all our Rust code natively instead of through WebAssembly so all the business logic in Graphite runs natively and only the thin UI layer becomes dependent on web tech for the GUI display.
In the long term, we plan to rewrite the entire GUI in [Xilem](https://github.com/linebender/xilem) which is the up-and-coming Rust GUI that I believe will finally get everything right, including performance (which is something many desktop GUI frameworks are actually bad it, and sometimes even worse than web). We'll still deploy a web version but at that point, it will become native-first.
Hopefully that roadmap and explanation of the architectural decisions clears up any worries about the short and long term state of our GUI.
> Hopefully that roadmap and explanation of the architectural decisions clears up any worries about the short and long term state of our GUI.
Yes.
To expound on my original complaint about web apps in general, my main problems with them are:
* responsiveness -- specifically latency when using the gui, as well as the long staggering pauses when I don't know if I am waiting for the server to respond or if there is an app hiccup or if the thing is frozen (the random long unresponsive breaks is what made me unable to use Roboflow, for instance)
* file management -- having to do everything in the browser is frustrating because of the way the browser is separate from the OS and makes everything an 'app'. Having to import files to some server to work on them is annoying when they are right here in my system. I also like to manage the files in a specific way and have access to program and preference files and know where everything is stored (if it crashes I can find the temp files, for instance). Sandboxing the app from the OS is the opposite of how I want a desktop application to behave
* portability / offline use -- I don't want to login to use an application. I don't want my files on a cloud and I want to be able to use the application forever, even if the original company is defunct
I hope this sheds light on where I am coming from. It seems you thought of at least a few of these issues and are mitigating them.
[1] https://graphite.readthedocs.io/en/latest/faq.html
[2] https://graphite.readthedocs.io/en/latest/who-is-using.html
https://en.wikipedia.org/wiki/Graphite
…wait …am i doing this right?
Yesterday I discovered flash was used to produce Rob Zombie's Dead Girl Superstar (2001) music video: https://youtube.com/watch?v=WpHViVML_4o
I remember watching it on his flash-heavy website during that era, but it never occurred to me that it was anything more than just a recording converted to a flash video.
Affinity Designer on the other hand is really nice to use, and didn't do a bunch of weird stuff exporting SVG files.
I wonder if that hurt its adoption since a lot of graphic designers use Mac, so their first impression of Inkscape would've been very poor?
Unfortunately they have only a fraction of the resources of adobe and their development has slowed significantly over the years.
Their product is just too cheap. It might as well be free. They charged something like less than $50 for a one time purchase and only required a paid upgrade recently after like 7 or 8 years.
It's already very common in 3D and VFX.
I took a look at the demo and at first glance, it looks like the current version is just a basic image editor. I don't see any options to add noise, blur, filters, etc.
Also, curious to know about the graphite fileformat. When editing an image, are the set of transformations, etc. suitable for version control?
The file format will have its own built-in version control in the future, but I believe we are planning to use an ASCII representation so it could also theoretically be version controlled externally. The current `.graphite` files are entirely a temporary format. Once we finish the aforementioned refactor, we will design and implement a proper file format that ensures backwards compatibility (something the current files don't manage at all), it will be called `.gdd` (Graphite design document).
I don’t need a full CAD constraint solver. Just simple constraints would go a really long way (make X the same width as Y; make A spaced N units from B; etc.). Basically just a glorified spreadsheet where object properties can be accessed and read from cells and objects can have other properties assigned from the cells. Though it doesn’t have to be represented as an actual spreadsheet, of course.
There's a new UI tool called Dora [3] that has a simple yet novel constraint system that you might like. Tool is still early alpha but growing quickly.
That being said, Graphite's node-based system makes it a viable foundation to build this on! I've helped contribute to the project and Keavon (the creator) definitely has some thoughts on constraint nodes (e.g. for snapping, but also for restraint/relationships).
[1]: https://astutegraphics.com/plugins/subscribe [2]: https://www.hotdoor.com/cadtools/ [3]: https://www.dora.run/
We will probably also need to have bindings into a Python API since Python is so popular among technical artists. Precisely how that will be done is yet to be determined, since we have a lot to do before reaching that point.