BM v3.0.0 is Released
Posted on 16 Jan 2017 by Matt Traudtpermalink
Today I've released a new major version of BM, consisting of about 140 commits! See the changelog for a summary of all the changes, and please report issues at the issue tracker. Here's the important and exciting highlights.
make cannot be called by the user anymore as BM needs to setup the
environment for it. It probably should have never been called by hand, and
hiding the Makefile in v3.0.0 further discourages manual
Post URLs have changed, but probably won't do so again for a while--if ever--as this is quite rude of me to do. Now post URLs are limited to the first three words of the post title plus the ID. Before it was all words of the title.
Permalinks have been added. This was prompted in part by the previous change. If the option for it is enabled (which it is by default), a little permalink will be added in every post's header. Permalinks consist soley of a post's ID, so they will never change so long as you don't manually change a post's ID!
BM can optionally make the source post files available for download by your
readers. If the option is set, not only will
generated as usual, but
/posts/foobar-12345678.bm will as well, the latter
being an exact copy of the file you edit.
A 404 page has been added. Special webserver configuration is required to get the most out of it. See the wiki.
This release took a very long time. It introduced many backend changes, most concerning a major design change: move as much dependency logic into the Makefile as possible. Before the majority of BM's logic was in three large scripts. Now
- post data is extracted into seperate files (in
- as little work is done as possible when changes are made (this will need continued improvement)
- later build steps only depend on the post data files that they require
It was an interesting challenge figuring out how to call my bash functions and use bash variables inside the Makefile. The gist of how it works is
- calling bash's
set -aat the top of the
set +aat the end for good measure
This exports all function and variable definitions into the environment that make runs in.
Going forward, I already have a few features in mind for minor releases, even after tackling the huge pile that built up while working on v3.0.0.
The first easy thing I'll likely do is adding a license option, so users can easily license the contents of their blogs.
But another big idea that a Redditor suggested to me is themeing. Right now BM has one look. It's "easy" to change that look, especially if what you want to change is coloring or spacing. But wouldn't it be nice to be able to easily switch between themes with a single command? You could download additional themes, share them, etc. This is a large change that will take some time, and undoubtedly a new major version.
Another big idea that I'm chewing on in my free time is moving all posts and customizable files into a single directory. This would pave the way towards easily allowing you to version control your posts and your configuration options (and maybe even theme). In fact, it's conceivable that BM could even make commits for you. This is another large change that would also take a new major version.
In general, you can see the things I'm thinking about and working on at the issue tracker.
Do you use BM?
Finally, I'd like to ask anyone out there who uses BM and doesn't mind their blog, wiki, whatever being public to please let me know! I'd love to hear about your experience using BM.