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 Opensource.com articles.
5 Comments