Finegram – Blog

Introducing Finegram

2023-10-25

Finegram is a diagramming app for power users.

In this post I write a bit about what it is and answer some questions you might have.

If I didn’t answer something, email me at [email protected]!

What is Finegram

Finegram is a diagramming app with a number of explicit goals:

  • Fully offline standalone app
  • Cross-platform
  • Free
  • Easy to incorporate into your workflow
  • Easy to keep making nice-looking diagrams

Next I’ll elaborate a bit on each point.

Fully offline standalone app

When you have the app, you have it forever. Even if the developer disappears, you will always be able to use the app executable. And it works on local files. There is no cloud integration of any kind.

Cross-platform

No matter which operating system you use, you should be able to contribute to a project using Finegram. (I want Finegram to be the best diagramming app for open source projects.)

Free

I want anyone to be able to benefit from this software as much as possible. All of its features will always be free to use.

If I include monetization later, it will be in a licensing scheme similar to Sublime Text and WinRar, with the full app features still technically available for anyone, with a paid license option available for those who want to support the project and remove an annoying popup.

Easy to incorporate into your workflow

Because the app works on local files (.svg, btw), you can send diagrams around and include them in version control, and so on. You are not dependent on some VC-funded cloudy SaaS which may or may not be there after 5 years.

Finegram works great for programming projects, because you can embed the .svg file as an image in a markdown file (i.e. ![Alt text](path/to/diagram.svg)). When you need to edit the diagram, just open the .svg in Finegram! No need to export raster versions separately.

Easy to keep making nice-looking diagrams

The above points have rather been about technical properties about the app than the contents of it. Of course, the primary goal of Finegram is to be a great diagram editor.

With diagram editors (and graphics editors in general) it's often a pain to manage a consistent style between your files. I want to make it super easy to manage a library of layer styles per project. In Finegram this style library feature is still on the way… however I've already included a set of nice-looking (and accessibly contrasted) default styles. And tools to work with them, e.g. a menu to select all layers with the same style.

Talking about consistency within a project, I've often faced the need to embed a project logo into the corner of each diagram. In Finegram this is a built-in feature, called watermarks.

A common need in diagramming is to group many layers in an area. So you often create a rectangle shape, move it to the back and lock it. And you do this over and over again. In Finegram I built dedicated Area layers which simplify this workflow a lot.

In general many editors allow for too much customization. You can accidentally remove the color from an arrow and now it's invisible, for example. I want to take the middle road and drop some of the complexities, in support of the most common needs.

When you work in a diagram editor for an hour or two, you're bound to be repeating the same tasks a lot. Therefore as many things as possible should be easy to do rapidly, hence the description "for power users" above. All features in Finegram incorporate keyboard shortcuts and advanced workflows (like the Select all layers with current style -menu mentioned above). In the future I want to also bring a command palette into the app for even easier discoverability of all things possible.

This is just an introduction. Check out the User Guide to see all Finegram has to offer already!

I don't publish the whole backlog of ideas, because it may change a lot over time. If it's diagramming related, I've probably thought of it. However, let me know your thoughts and what you'd like to see.

What Finegram is not

Finegram has some non-goals, i.e. things you might've expected but that are explicitly non-priorities:

  • Diagrams as code
  • Collaborative/multiplayer editing
  • Cloud/SaaS offering

Not: Diagrams as code

Diagrams as code may be a good solution for some users, but I personally have found its downsides too great for any serious diagramming projects. Basically it has only been useful to me when creating sequence diagrams* or very simple (and linear) flowcharts. Finegram is an app for those who prefer a graphical editor; if you prefer DaC, check out Mermaid, among others.

In short, the downsides of diagrams as code are that 1) you are dependent on a very specific external tool to render the diagram, 2) you lose the ability to brainstorm effectively, and 3) you alienate non-technical users from contributing.

*About sequence diagrams… in the distant future I'd like to build a good sequence diagram editor into Finegram.

Not: Collaborative/multiplayer editing

There are plenty of collaborative graphics editors out there nowadays, e.g. Figma, Miro and Google Sheets. Because I want to prioritize the offline capabilities of Finegram as a standalone app, implementing this kind of functionality is not on the roadmap.

Not: Cloud/SaaS offering

For the reasons oulined in the previous point about collaborativeness, this is also not on the roadmap.

Data privacy

Because data privacy is a big focus in Finegram, I want to reiterate on it in a dedicated section of this blog post.

As mentioned above, the app works fully offline and never connects to any online server.

All diagrams you save and open are regular .svg files, located on your local filesystem. There is no sync of any kind to external services (you can store your diagrams in version control or e.g. in Dropbox if you want, of course).

For the time being there is no auto-update functionality even (which would require sending some information to an external server to determine if an update is available). I plan to add this in the future but it’ll be opt-in (turned off by default).

The app also doesn’t collect telemetry/usage information. If I add such collection in the future, it’ll be transparent and explicitly opt-in (turned off by default).

Web version?

I love how you can type in draw.io or photopea.com in your address bar and instantly have a full-featured graphics editor to play around with. I intend to do the same with Finegram later.

At this early stage I prioritized releasing a desktop app, because when you have an offline desktop app once, you have it forever. If photopea.com disappears overnight, it's just gone. I wanted to first and foremost distribute Finegram in a format which cannot disappear after it's been released.

Open source?

Eventually, my goal is to open source the whole app.

For the time being, though, I think open sourcing would do more harm than good, because it would take away time from feature development due to triaging and guiding contributions. Pace of development and refactoring is quite fast at the moment, so it wouldn't be a friendly codebase to contribute into anyway.

If for any reason I quit actively developing the app myself, I intend to open source it in that case.

About Electron

Some people have hard feelings towards Electron applications because those apps generally take more disk space and consume more memory than equivalent non-browser-based apps.

However at the time of writing Electron is the fastest way to ship an app for Mac, Windows and web. I am writing Finegram in a way where it in theory could be ported to any language and rendering method later (i.e. not dependent on web technologies), but this portability is not a top priority, it's just a nice-to-have for the future.

I might move Finegram from Electron to Tauri at some point. Tauri wasn't on my radar when I began development, but looking at it now, it looks like a promising platform especially after some maturing. If there are no downsides and the app size decreases, great! However this is not a top priority either.

Who is behind all this

I am a software development consultant. I usually work for clients for half the year, and on side projects for the rest. Finegram is my biggest side project since Shipmight (a self-hosted Kubernetes PaaS). You can find other projects at my website.

I am devoting even more time to this project because I really like the idea and would’ve used it myself all these years. I hope that it'll gain some traction, which'll motivate me to continue to implementing all my feature ideas and more. At the very minimum I plan to make a few more feature releases.

What next

I have a long-ish list of features I want to add. You can easily influence which ones ship first, by letting me know that you tried to do something specific but couldn't or it was difficult.

If you try out Finegram or use it in a project, let me know!

If you have any questions or comments, email me at [email protected]!

Thanks for reading, and have a good day!

You can download Finegram for Mac and Windows on the Downloads-page.


Copyright 2023 Martti Laine. Contact: [email protected]