Progress of blogs.perl.org grant
Here's another update about the grant for revitalizing blogs.perl.org. I'll start with an overview of what I wanted to achieve in the beginning, and where we got from there.
When I started this process, I looked at the "mainstream" PearlBee version as a basis for the new blogs.perl.org, and also the previous grant work that had be done. They each had different issues, in my view. The former was pretty much unfinished and barely usable, and the latter was way too big in number of features and requirements. I aimed for something small and stable, with just what was needed.
With that in mind, the project progressed nicely. Almost all of the major features I proposed in the beginning are there, even if some are a bit rough. It's possible to register a new user, write posts, update them, browse the existing posts, etc. The site is "themeable" with handlebars templating, in a way that is compatible (up to a point) with another blogging platform (Ghost) so that design resources can be shared. There are no hard-coded mentions of "blogs.perl.org", or my username, anywhere but in the configuration, so that the engine is very reusable.
There is a reproducible build process and tests, both of which are very standard -- I set up Travis for the project, and made it deploy to Heroku. I didn't do it for the hype factor, though :) I really want to know that anybody who gets the code can easily install it, and no "works on my machine" kind of bugs. It gives me a lot more confidence to understand the code with that in place.
My previous updates mentioned part of this, and explained that I was going in that direction. Up until that point, I had focused more on the user registration, and designing the dashboard. Now, I have the dashboard working (create / update posts, etc), and also browsing them on the frontend.
There is an anti-spam mechanism that allows the user to register and create a post that's only visible to the user itself, so that admins can check more reliably whether a user is real or not. This is not 100% finished yet, but mostly there.
During the Glasgow conference I sat with current administrators of blogs.perl.org (Dave Cross, Aaron Crane), and discussed some of the missing pieces and showed the progress. I'm making some adjustments based on their input.
Particularly, we discussed how the migration should occur, they pointed me to some code that might be useful. It should be doable to keep all users and current passwords be used by the new PearlBee, without requiring resetting, or any other user action.
We also discussed comments, something I had postponed in the beginning, and considered just plugging in an external service, such as Disqus. It turns out it would provide a much worse user experience, because people would have to register to Disqus (or any other service) besides blogs.perl.org.
So I'll just implement comments in the blogging engine. Most of it is already there, from database to templates, it was just disabled while I made sure all the rest was stable.
In summary, what's currently missing is: comments, migration, and fixing some outstanding bugs.
One last point I would like to make is regarding Handlebars. I used Text::Handlebars to render Ghost-compatible handlebars templates, and it works for the most part. Ghost has lots of macros and customizations that I had to port, and handlebars.js itself has matured a lot while our Perl counterpart lagged behind. It would be nice to have a more up to date implementation of it in Perl. It makes sharing design resources much easier, allow the same templates to be used in the frontend and in the backend. It would be very beneficial to the Perl ecosystem.