How to use CherryTree for note taking

How to use CherryTree for note taking

CherryTree is an open source alternative to OneNote for keeping track of the things you need to know.

Hands on a keyboard with a Python book
Image by : 
WOCinTech Chat. Modified by CC BY-SA 4.0

Subscribe now

Get the highlights in your inbox every week.

When I started working at Microsoft a few years ago, one of the first things I did was create a OneNote file to keep track of everything. I had to learn about internal procedures and tooling, partners, projects, and so many other things. The hierarchical nature of OneNote files made it easy to arrange this loosely related information into a well-organized set of documentation that I could quickly refer to. When I left Microsoft to take a job at Red Hat, I wanted to keep using the concept, but with an open source tool. I quickly found CherryTree, a GPLv3-licensed note-taking application.

In Linux, everything is a file; in CherryTree, everything is a "node." Nodes can be plain text, rich text, or have automatic syntax highlighting for a variety of common programming and markup languages. Each node can have child nodes, allowing you to easily organize your information. Child nodes can have their own children with independent properties.

In my role as Fedora program manager, I run several IRC meetings. My Fedora CherryTree file has a node for release meetings. Each release is a child under that, with a subsequent child node for the beta and final meetings. Under those child nodes, I have nodes for each iteration of the meeting. I have a template for the IRC commands in one of the higher-level nodes, which I copy into the child nodes with the appropriate details filled in. This way, I have notes for each meeting available without having to use version control.

The node-per-instance model works well for me when I have long notes or need to make per-meeting tweaks to the script. On the other hand, I'll use a single running node for short-content meetings. When I have my weekly one-on-one with my manager, I take notes in a single node, using headers with the date to separate the meetings.

CherryTree can also be a handy lab notebook. Because code blocks can be executed, it can be a helpful way to share documentation with collaborators. You can include documentation—including text, images, and tables—alongside code in a single file. Files can either be SQLite (which is faster for startup and slower to search) or XML (which is slower for startup and faster to search).

Although CherryTree can be used to share information, it shouldn't be used for live collaboration. CherryTree can detect when the file has been changed on disk and reload the content, but it's not designed for concurrent use. Similarly, it doesn't have a built-in cloud storage mechanism—you'll have to either save the file to a directory that's automatically synced or manually use Git commands to check the file in and out of a repo.

CherryTree is actively developed on GitHub. One of the key areas of development right now is moving from Python 2.7 to C++. If you're looking for an easy-to-use, cross-platform notebook, CherryTree is a good choice. Now I need to start using it for my articles.


About the author

Ben Cotton - Ben Cotton is a meteorologist by training, but weather makes a great hobby. Ben works as the Fedora Program Manager at Red Hat. He co-founded a local open source meetup group, and is a member of the Open Source Initiative and a supporter of Software Freedom Conservancy. Find him on Twitter (@FunnelFiasco) or at