Version 1.9 of Plerd, which I expect to release sometime between July 15 and December 31 2020, will involve the following two changes to the software’s currently-experimental Webmention support:
Plerd will officially support sending webmentions as a documented, no-longer-experimental feature.
Plerd will remove support for receiving webmentions.
I first added Webmention support to Plerd in 2018, but never improved it to a point that let me feel comfortable calling it non-experimental. I started fresh with my Webmention implementation efforts in the spring of 2020, ultimately releasing Whim, a stand-alone, command-line-based program for sending, receiving, and managing webmentions.
If you’d like to continue receiving and displaying webmentions with your Plerd-based blog beyond version 1.8 — and you haven’t already set up an alternate solution besides Plerd’s experimental built-in support — then I invite you to use Whim. I have posted a Plerd-to-Whim migration script to GitHub; if you have any questions about its use, please drop me a line.
Plerd v1.820 is out. The main new feature it adds is SSL support for plerdwatcher, meaning that you can run the webmention listener on an
https://-based URL. It tidies up some other issues involving webmentions, too.
Starting with this version, Plerd will emit an intentional warning on publication if two posts invoke the same tag with different capitalization. (For example, “christmas” and “Christmas”.) It will list the offending tags and ask you to please hand-normalize them — after which Plerd will swiftly republish itself, for that is what it does.
This is related to the work I described back in version 1.810; I described it then as more complicated than I expected, and it still held complexities for me to discover. I had since found edge cases where capitalizing a previously all-lowercase tag can make things weird, and all because of the inherent issues of syncing files between two computers with different opinions about case-sensitivity.
Alas, I did not accomplish any of the major Plerd features or projects I anticipated last summer. I have no particular excuse other than the usual one: one thing after another managed to plant itself in front of my attention as soon as summer started, and now my optimistic Christmas deadline has arrived. I’m glad I don’t meet it empty-handed, but I feel sorry that I can’t say much more than that.
2020 promises to contain new opportunities and fresh starts for me, and I feel hopeful that this will reflect itself in the Plerd project. I won’t publicly declare any dates this time, but the goals I named remain true. Thank you for your continuing interest in Plerd, and I’ll see you in the new year.
Thanks to some careful gear-shifting in my professional life, I have opened up most of the year’s remainder for working on “exploratory” projects — Plerd included. A few things I hope to accomplish before Christmas:
Write and publish a Plerd book. Plerd’s only user documentation for nearly five years has been its increasingly lengthy README file. It is overdue for a real manual, tidily organized and rife with examples and descriptive use-cases.
I have wanted this for four years. I began working on this project earlier this year, in fact, but set it aside so that I could focus on all my already-open obligations. It deserves some serious focus from me, and I hope to finally apply that soon.
I call the product a “book” even though I don’t know how bookish it’ll be, in the end. My hope involves some kind of reasonably attractive, electronically distributed document.
I intend “drag markdown files into a source directory” to remain the primary method for publishing articles with Plerd, but allowing Micropub as an alternate means would let a myriad of IndieWeb-aware client programs to hook into Plerd as well. This would let one use a Plerd-based blog as a site to post replies, notes, photos, and other flavors of IndieWeb posts besides the full-length articles for which it is currently tuned.
Rethink Plerd’s executables. Plerd’s two executables,
plerdwatcher, need a rethink. They made sense in 2014 when Plerd had far fewer features, but I feel less satisfied with them today.
If I end up dramatically changing the way the command-line programs work, that’ll come with a major version increase: Plerd 2.0. If that happens, I plan to continue making 1.X available, but only as a maintenance release.
This release also improves Plerd’s handling of inconsistently capitalized tags. As noted in the “Tags” section of the documentation:
If faced with inconsistent capitalization within a single tag, e.g. one post claims “boston” for a tag and other one claims “Boston”, then Plerd will prefer the first tag containing capital letters to one that contains none, and it will retroactively apply to across all relevant posts.
This took a surprising amount of work to implement! A lot comes down to the fact that you just can’t rely on filesystems to separately store two files with similar but differently capitalized names. Dropbox gets weird about this, too. It’s not a problem I’d ever had to wrangle with before. The “obvious” solution would involve normalizing all tags into lowercase, but some things just require capital letters, and I didn’t want to force Plerd users (myself included) to knowingly misspell tags for the sake of my lazy system.
(And already there is v1.811, because I managed to break tag ordering. It’s fixed again.)
This is a minor housecleaning and bugfix release.
Changes since v1.8:
Suppressing extra whitespace from post methods (e.g. description) whose output might use an HTML-stripped version of the post’s body.
Adding a linked tag list to the default post template. (Added in v1.801.)
Removing redundant example-template files, and basing tests on plerdall’s “init” feature instead.
Adding the contributors list to Plerd.pm’s POD.
Removing documentation regarding Facebook support. (I wrote about my motivations for this change elsewhere.)
The #plerd IRC channel on Freenode (chat.freenode.net) is active again. Which is to say that I’ve resumed idling there, and have set up IRCCloud to send me an alert should anyone say or ask something whilst I idle.
You also can join via webchat, just in case you number among the billions of people using the web without a preferred local IRC client set up.
Admittedly I’ve acted back-and-forth about my IRC presence regarding Plerd for some time. But I remain a lifelong supporter of IRC in all its ugliness, and find it a perfectly suitable venue for discussing similarly ugly open-source projects like Plerd. So, I once again welcome conversation there.
I’ve wrapped up the “plerd-announce” mailing list, which I had launched alongside two other lists last year. Its purpose had become obviously redundant with the blog you are now reading, which I have provably been more eager to update. The other two mailing lists — intended for discussion among Plerd’s users and developers, respectively — remain online.
You know what? I should put links to those two mailing lists on the sidebar of this blog. And the IRC channel, too. There, I just did it.
I’m pleased to release version 1.8 of Plerd, my homegrown blogging system for extremely forgiving people, featuring the following significant updates:
Added support for tags. Thanks to Joe Johnston for the basic concept, and much of the implementation work.
I first wrote about this here a couple of months ago, and Joe’s work helped me decide that I like tags a lot now. So, here they are for everyone.
In order to make tags work on an existing Plerd-based blog, you’ll need to copy over and adapt the new
tags.tt template into your blog’s own template directory, and also copy over the tag-printing loop now found in the default
post.tt template. (Feel free to contact me or the plerd-users mailing list if you need help with any of that.)
New-blog initialization via
plerdall --init should actually work now. Thanks to Bo for the bug report.
Specifically, it wouldn’t work if one didn’t already have a Plerd config file set up — exactly the sort of condition that I’d miss in casual testing, even though it precisely describes the environment of a new Plerd user.
Fixed a bug that would make automatically derived post descriptions show up as blank, in certain circumstances.
Fixed a bug that ignored any user-set webmention-listener log level.
Petter Hassberg proposed a simple and interesting plugin architecture for Plerd posts in November. It currently exists as a pull request biding its time in Plerd’s GitHub repository, with some attached discussion.
With these changes applied, Plerd no longer limits its processing to Markdown files; instead, it looks up every source file against an internally defined table that pairs file-types with file-processing code. This table’s default state would have only one entry, instructing Plerd to treat Markdown files exactly as it already does. Third-party plugin modules loaded by Plerd would have access to this table, however, and thus folks could extend Plerd’s ability to publish different posts depending upon the flavor of its input files.
Petter himself has been using this to run his own Plerd-based blog as a photo album: he drags JPEG files into his source directory, and Plerd immediately turns each one into a complete blog post, using the JPEG files’ metadata as needed to add title and other information to the posts’ textual content. Since the plugin has full control of Plerd’s faculties while processing its posts, it can do more that creating HTML files for every post; in this case, it also copies the JPEGs into the docroot, and runs filters on them. I think that’s pretty cool!
All that said, I feel hesitant to architecture this feature into core. It’s not something that I myself have use for right away, and technically one could reproduce this behavior with Plerd as-is, perhaps writing a little script that moves the JPEG into the docroot, creates a Markdown file linking to it, and then feeding that to Plerd. But I can see the appeal and fun of watching Plerd itself do all the work, too!
I would be very interested to hear other potential applications of this idea. Would this inspire you to create interesting blog-growing plugins for certain file types? Ought it inspire me in ways that I haven’t imagined, yes? Drop me a note, or comment on that GitHub thread.
Over on Fogknife, I have begun experimenting with a new experimental Plerd branch that implements tags. It’s pretty simple: the published docroot contains a directory called “tags”, containing one page for every unique tag mentioned in posts’ metadata, and each such page links back to all the posts invoking that tag. There’s a master tag list, too.
When I first launched Plerd in 2014, I declared its lack of tags or categories as a feature — but, four years and 250 Fogknife posts later, I found myself desiring a little bit of basic post-categorization after all. So when my old pal Joe Johnston submitted a pull request last August that added tags to Plerd, I welcomed it. I was knee-deep in the “CPAN” branch by then, though, so I put it off, and Joe has since requested that I make any final changes myself. So, that’s what I’m doing now.
I intend to twiddle with how tags work until satisfied with it, and then turn it into a pull request of my own. Your thoughts on it are quite welcome in the meantime, and the
tags branch exists on Plerd’s GitHub repository as well.
As foretold by the previous post on this blog, Plerd is now available on CPAN. Starting now, you should (in theory) be able to install the latest Plerd release on your machine by running a command like
cpan Plerd, and from there making a new Plerd-based blog appear with
Thanks to all who tested and provided feedback on Plerd’s experimental GitHub branch last month for helping to make this possible. I expect that plenty of rough bits still remain to file down with this release, and I will attend to these as I find them — or as they are pointed out to me.
The software’s presence on MetaCPAN does not particularly impress, at the moment. In particular, where one would expect to find full documentation for using Plerd, one instead gets a sheepish hyperlink to Plerd’s README file on GitHub, followed by a not immediately useful guide to Plerd’s software internals — and even that isn’t very well formatted! But, I knew I had to start somewhere, so I decided to just ship the darn thing and start improving all that stuff in-place. I know better than to discount the motivational power of a project looking a bit awful in broad daylight, after all.
Documentation, in particular, sits at the top of my list of Plerd sub-projects to tackle next. While I will always strive to keep the project’s simplest use-case actually simple, Plerd’s complete user manual has nonetheless long since outgrown that single README file. Plerd has come a long way in the nearly four years since its initial launch; this version, intended for the first time to run outside of a manually Git-cloned directory, feels like a first awkward lurch out of childhood. I look forward to a confusing and exciting adolescence for this project.