Burro

Column Breaks & Bug Fixes

Weekly progress update since 2023-06-20 • 2023-06-29Michael Rees


Week in review

This has been a slow week for development progress because

However, I have managed to add a few small things. First, there's now an explicit .column_break command. There's are still some details to work out here. For example what should happen if you add a column break while in the last column but without any column reaching the bottom, so that there's room where another set of columns could possibly end up? I might look at other systems to see how they solve this problem.

Columns are not balanced by default. This might be a controversial decision, but I feel like non-balanced columns are more in the spirit of Burro, and it made the implementation much easier. I do want to add a balanced column mode eventually, likely as an argument to the column command via the curly-brace syntax.

I also made two bug fixes worth noting. First, I fixed some problems with changing margins along with changing page sizes. These were introduced during the columns rewrite. Second, Burro would crash when it encountered a comment at the very beginning of the document. The lexer didn't recognize that it was a comment because it always expected a comment to follow a newline. This has been fixed as well.

First outside use

Despite the slow progress, this was still an exciting week for Burro! A friend of mine downloaded and compiled Burro and started using it to build a menu for a cocktail party. Here's a screenshot of what he sent me:

Screenshot of a skeleton menu for a cocktail, complete with Burro in the footer

The menu obviously hasn't been finished yet (my friend left for a weekend trip the morning after starting it), but to my knowledge, this is the first time someone other than me has actually used Burro to build something! It's an important milestone, not just because someone else has used it, but because someone else was able to figure out how to use it! With just the examples and the documentation in the README, he was able to successfully render a document. My plan has always been to extend the documentation before 0.1, and that will still happen. However, his success was a good sign for others who may be interested before the 0.1 release.

Upcoming features

Tab stops are still a major priority, and will be the next major feature I work on (and the last before we can move to polishing for 0.1). In addition to the feature list I outlined in the last post, I've thought of a few more things to include. Like most of Burro, these are both inspired by mom.

  1. Relative units for arguments

Some arguments that take a measurement should accept a relative value. For example, I should be able to increase the point size by two points by doing .pt_size[+2pt]. Negative values should work as well, and these should work wherever it is sensible. The tracking issue can be found here.

  1. Autoleading

There are many values that should be normally be updated automatically, such as the space width or leading. (Both of these are functions of the point size. Note: currently, only the space width is updated automatically.) However, once one of those values is explicitly set, we might not want to overwrite it when we change the point size.

The solution will be to turn that automatic update on/off. In mom, this is .AUTOLEAD, which toggles the automatic updates of the leading value when the point size changes. If the user toggles this off, they're on their own to manage their own values and reset values. We'll expand a similar pattern to other possible values.

Thoughts about usability

Here's a question that's been on my mind this week:

How can we make Burro accessible to non-programmers?

I showed the website to some people at my work and at the convention, and many of them were interested in trying Burro themselves. Asking them—highly capable but mostly non-technical people—to install Rust, compile from source, and then learn to use a CLI is too much for someone who just wants to build a document. I've always intended to have downloadable binaries from the website for each release, which solves the problem of compiling from source, but not of how to actually build the documents.

We need to think about the best way to make sure that there's a smoother on ramp to using Burro than needing to figure out how to use a CLI. I'm not sure if that's by building our own version of Overleaf, or perhaps making our own simple custom editor. I'm imagining a Burro equivalent of Dr. Racket: something nice to have when you're getting started, but more technical users will quickly want to move on to something else. (In other words, we'll still need editor plugins!)

This project is on the distant horizon, but something we need to be aware of.

Have a comment or want to start a discussion? Please email it to the Burro discussion list!