I'm delighted to announce that Dave Mitchell's recent grant extension request has been successful. This extension will allow Dave to continue with this work for another 400 hours.

Thanks to everyone who provided feedback on this application and to all those who continue to provide financial support to the Perl 5 Core Maintenance Fund. If you are interested in funding this work please contact karen [at] perlfoundation.org or donate directly through our donation system.

The Grants Committee has received two grant proposals for the July round. Before the Committee members vote, we would like to solicit feedback from the Perl community on the proposals.

Review the proposals below and please comment there. The Committee members will start the voting process on July 27th and the conclusion will be announced by August 2nd.

If your comment does not appear in 24 hours, it is likely that our spam filter did something bad. Contact me at tpf-grants-secretary at perl-foundation.org.

We have received the following grant application "Document and release Plerd, an open-source lightweight blogging engine". Please leave feedback in the comments field by July 26th, 2015. If your comment does not appear in 24 hours, contact me at tpf-grants-secretary at perl-foundation.org.


Document and release Plerd, an open-source lightweight blogging engine

  • Name:

    Jason McIntosh

  • Amount Requested:

    USD 2,000

Synopsis

Plerd is an ultralight, Markdown-based blogging platform intended for use with Dropbox.

Once set up server-side, it lets bloggers create and edit posts using only their own favorite text editors and filesystems, with no special client applications, websites, or commands involved.

I believe it to fill an underserved need for extremely simple self-hosted blogging systems, an alternative to very large and complex content-management solutions like Wordpress or Movable Type.

Benefits to the Perl Community

As a conceptually simple yet widely useful open-source application written entirely in modern Perl, Plerd has the potential to bring positive attention and goodwill to Perl 5. It can demonstrate the language's capabilities to power a fun, friendly work of software useful to any self-hosted blogger, regardless of their own preference of programming language.

Deliverables

  • Bring the Plerd codebase up to CPAN standards, declaring a version 1.0
  • Make this 1.0 release available on CPAN, such that anyone with command-line access to a webserver can easily install it, with no Perl expertise necessary
  • Create and publish online a separate, attractive documentation booklet for Plerd, intended for bloggers with some technical aptitude (i.e. command-line comfort) and the desire to host their own blog

Project Details

Plerd's GitHub repository contains a README that details its current state, also serving as basic user documentation: https://github.com/jmacdotorg/plerd/blob/master/README.md

I created Plerd after years of not blogging at all (a result of LiveJournal's community drying up in the face of modern social media). I have used systems like Movable Type and Wordpress in the past, but the thought of working with an enormous, multi-user, enterprise-ready "content management system" did not appeal to me at all when I just wanted to write blog posts in Markdown and have them appear as HTML somewhere as soon as I wrote them.

Plerd distinguishes itself from similarly aimed systems by having no UI at all. A Plerd-using blogger creates posts by adding Markdown files to a Dropbox-shared directory on their own filesystem, and updates them simply by editing them in-place using whatever text editor they favor.

Plerd's daemon, running server-side and keeping an eye on its own copy of the the blog's Dropbox-shared source folder, knits up a complete static-HTML website whenever changes to that folder occur. This frees the blogger from any need to write with special programs, use special websites, or run special commands to upload or modify posts. They don't need to authenticate with any third-party services, at least not beyond Dropbox -- and Plerd requires no unusual use of Dropbox, from the blogger's point of view.

The writer is left merely to write, on their own terms, using their own tools.

Blog owners can customize their blog's appearance through the use of Template Toolkit-based template files. Plerd ships with a set of default, easily extensible templates that create a lovely Bootstrap 3 website. This site includes a front page, individual pages for each post, an archive page, and an RSS feed.

Plerd powers at least one actively maintained weblog, this being my own (http://blog.jmac.org). I began both the blog and the software in late December, 2014, and have updated it at least once per week since then, making this a bowl of dog food I have returned to dozens of times. All the changes I've made to the software respond to features I've desired and bugs I've noticed since.

Inch-stones

  • Add any remaining features necessary to declare a 1.0 release
    • Updating the templates should trigger a blog refresh, just like updating the posts already does.
    • Anything else I or others might think of by then? That's all I have right now, though.
  • Fix any outstanding bugs
    • Plerd has no known outstanding bugs as I write this proposal. I expect that we shall find some, just the same.
  • Write and publish user documentation (outside of Github)
    • Write a Plerd::Manual doc-module in POD format, such that it'll look beautiful on Meta::CPAN
    • Create and publish a standalone website based on the same documentation, presenting it outside of a Perl-specific context
  • Make a 1.0 release and put it on the CPAN
    • Apply the proper Perlish version-declaration conventions to Plerd's modules and executables
    • Apply whatever file-based metadata magic is expected of well behaved CPAN modules these days
    • Declare a 1.0 release; tag it as such on Github
    • Upload it to CPAN
    • Spread the news

Project Schedule

I would be able to complete this work within the space of two calendar months.

At the time of this writing (mid-July 2015), I expect to have an appropriate amount of free time beginning in October 2015.

Completeness Criteria

I consider this proposal's deliverables quite concrete. Each major task involves new software releases or documentation publication, all visible to the public.

Bio

Jason McIntosh ([email protected]) has been working with Perl professionally and otherwise since the late 1990s. He continues to employ Perl daily both in his role as an independent software and game-design consultant, and while producing a variety of creative personal projects.

Jason became a born-again open-source hacker in early 2013 after learning to use Git and Github for a client project. Since then, he has contributed to a number of open-source CPAN-based projects, ranging from higher-profile modules such as DBIx::Class and HTML::FormHandler to the humbly useful Markdown::Pod.

Relevant to this grant application, Jason has been writing online and in public since 2001, relaunching his personal blog in 2014 with Plerd, a new, minimal writing platform of his own design (which happens to be written in Perl). He gave a talk about all this at YAPC::NA in 2015 (https://www.youtube.com/watch?v=5X4VaeoCSe8).

We have received the following grant application "Revitalize blogs.perl.org". Please leave feedback in the comments field by July 26th, 2015. If your comment does not appear in 24 hours, contact me at tpf-grants-secretary at perl-foundation.org.


Revitalize blogs.perl.org

  • Name:

    Jeffrey Goff, Amalia Pomian

  • Amount Requested:

    USD 3000

Synopsis

blogs.perl.org is in need of replacement. Evozon would like to offer a customized instance of PearlBee in its place, with source freely available on GitHub, and hosted on Evozon infrastructure.

Benefits to the Perl Community

In the last few weeks, blogs.perl.org has suffered from a number of authentication issues, affecting many people including the authors of this document. The current web host, MovableType has not addressed these issues, and placed the fate of blogs.perl.org in question.

While many solutions have been suggested, Evozon would like to offer its services. We would like to provide a blogging platform based on PearlBee customized to the existing blogs.perl.org's requirements. Evozon will donate hardware and developer time in exchange for hosting blogs.perl.org on our servers. The new blogs.perl.org code will be a publicly available fork of PearlBee on GitHub, customized to match the existing MovableType routes, and using the existing MovableType URLs so that extant links and search engine content remains in contact.

Since the goal is for this to be a community project, we'd like to integrate with Travis CI so that interested parties can keep track of progress and add their own comments and suggestions in the form of pull requests.

Most of the development activity is expected to be around matching schemas, and ensuring that existing users, whether they're logging in with their own username and password or with their OpenID account, can log in smoothly and be able to post and respond to postings.

Evozon will provide UI and JavaScript design services in order to give blogs.perl.org an appropriate look-and-feel.

Deliverables

  • Host blogs.perl.org source on a public GitHub repository
  • Integrate Travis CI with the blogs.perl.org repository for continuous (and visible) integration and testing
  • Bring blogs.perl.org up to feature parity with existing MovableType.org server
  • Migrate MovableType.org database to blogs.perl.org schema
  • Test alpha.blogs.perl.org in-house with special attention paid to existing users' login
  • Public alpha trial of alpha.blogs.perl.org again emphasizing existing users
  • Roll comments and bug fixes into beta.blogs.perl.org, again emphasizing login
  • Release final blogs.perl.org on Evozon infrastructure
  • Monitor blogs.perl.org after release, respond to issues as they come up.

Project Details

The new blogs.perl.org will be a PearlBee fork written on top of Dancer 2 and DBIx::Class, with a mySQL database imported from the existing blogs.perl.org, and session management provided by Memcached. Development and test deployment will initially be done on VirtualBox instances, possibly migrating to Docker containers later.

Internally we're using Trello for our projects. we already have a board for PearlBee, but we'll create a separate blogs.perl.org board and give Dave plus the TPF grant manager(s) access so they can follow along and ask questions of the developers.

Having the application publicly visible on GitHub will also let others help spot potential security holes and other attack vectors, which is of course important because this is a publicly visible application that accepts several different kinds of authentication, displays user-composed HTML and reads/writes a database, all of these being possible attack vectors.

We should have two instances of the application running behind a software loadbalancer, so that we can stop one instance at a time in order to perform maintenance without interrupting service. Since the application has such a low database write rate, deadlocks and race conditions shouldn't be a concern. Evozon has data centers in the US, UK and Singapore should the latency accessing the site from overseas become a concern.

Unit testing will be performed through Travis CI, and automated UI tests through Selenium as they become necessary, although the good ol' Mark I eyeball will suffice for most purposes.

We'll start by performing a code review of the existing fork to make sure it conforms to current Perl best practices, and is suitable for deployment. When that's complete the next step will be to migrate the existing database into the new blogs.perl.org schema. Dave has assured us that he can share the existing MovableType password hashing scheme, so that we can continue to support existing users without asking them to change login IDs or passwords.

Once real users can log in, we'll turn our attention to making sure that existing blog posts are displayed with a new look and feel courtesy of Evozon's design team, with careful attention to UTF-8 encoding, code samples, syntax highlighting and comments.

After we've made sure that users can view their blog postings as they were meant to be seen, we have to make sure that users can view their old blog posts in the new editor and be able to save the edited versions in the original format, which will save hassle when we perform the final migration. I'd like to preserve beta users' posts, and making sure the editor is backwards-compatible is one important step in that regard.

Now, regular users should be able to log in, view posts and comments, edit existing posts and comments, and create new posts and comments. Since that's pretty much what a blog site is expected to do, at this point we can open it up to other testers on a limited alpha trial, with the usual understanding that their posts and comments may not make it into the final version.

We'll take feedback and comments from alpha testers, keeping in mind that lots of blogs.perl.org users live in the US, yet the servers are (for the moment) here in Romania. Hopefully there won't be visible latency, but it's something to keep an eye on. The comments we'll collect will lead to a beta release which will be open to all users, again with the understanding that their postings may not make it into the final release.

Then it's time for assessment, and getting ready for final release. If all works out, we should be able to obtain the final live blogs.perl.org schema, load that onto our local mySQL servers, deploy from Travis CI to live, and perform a final smoketest before throwing the switch.

Inch-stones

Of course, no battle plan ever survives contact with the enemy, but this should give an idea of how we want to proceed.

  • Set up infrastructure
    • blogs.perl.org fork
    • Travis CI
    • Trello board
    • outside access to testing systems
  • Migrate the database
    • Add foreign keys to MovableType schema
    • Import into DBIx::Class
    • Load MovableType users and blog entries into blogs.perl.org database
  • Mesh blog contents
    • View MovableType content in blogs.perl.org template
    • Read MovableType blog content into blogs.perl.org editor
    • Fix HTML editor to support blogs.perl.org content
    • Write blogs.perl.org content back into database
  • OpenID, Google authentication
    • Add OpenID/Google authentication to blogs.perl.org fork
    • Test with existing and new accounts, especially creating new accounts
  • External testing
    • Now that users can view blog posts, log in, create and edit posts, and log out....
    • Release alpha version
    • And fix bugs as they arise, making sure to add tests to Travis where possible.
  • Beta testing
    • Open beta.blogs.perl.org for testing
    • Watch site performance, especially load due to static content and lag to the USA where most users will be.
    • Fix bugs as they arise, and of course add regression tests to Travis where possible.
    • Cut off the beta after, say, 2 weeks.
  • Release time
    • Prepare rollback plan in case it's needed, probably as simple as pointing DNS back to the original blogs.perl.org but we'll discuss with Dave.
    • Take a final database dump from (now old) blogs.perl.org
    • Import onto the live machine
    • Bring up the memcached server pool
    • Bring up the first instance, making sure an instance can survive on its own without its twin.
    • Smoketest the instance, make sure the front page can be viewed and at least the admin and two (non-Evozon, not Dave) users can log in and edit posts)
    • Bring up the second live instance, kill the first live instance and make sure users can still edit posts
    • Bring the first live instance back up
    • Open the floodgates
  • Fix whatever problems arise, if any. Hopefully none.
  • Make certain monitoring is in place and live, let the application run and answer whatever questions people may have.

Project Schedule

I'd love to release beta.blogs.perl.org in time for YAPC::EU, but that's too aggressive of a schedule, especially given that we're moving offices in August. The three main issues I can see here are the database migration, user authentication and finally making sure the old blogs.perl.org content is compatible with the new system.

We'll have to start off making sure that the existing PearlBee fork can support the existing blogs.perl.org content, namely user administration, privileges, and the various URL routes. This will probably take about a week of poking around in the various corners of the application because any major changes or additions would require database changes, and those should be done before I start writing a migration process.

Once that's done, the database migration will probably take 2 weeks, mostly to be able to pick apart the old schema.User authentication is always a concern, and as such we'll schedule 2 weeks for whatever issues we find. Finally, 2 weeks to impedance-match the new HTML editor with the existing MovableType content seems a bit of overkill but should allow us some slop should other bits go over schedule. The actual content looks like it's mostly groomed HTML, so it should go smoothly, but we have to make sure that it displays in the new editor, and the new editor can save text.

Setting up the infrastructure here probably will take about a week at the most, and I can do that in parallel with checking over the application for missing features. Mostly it'll involve setting up VirtualBox instances, getting Amalia to create a new Trello board and give outside people access to it. I've (Jeffrey) been meaning to get a Travis CI account anyway, and will link that to blogs.perl.org.

Ignoring time out for YAPC and time for the office move, a tentative schedule looks like this:

  • Administrative tasks, checking PearlBee for needed features: Aug 2-8

    Most of the admin tasks will be handled by others, I just have to keep a checklist.

  • Database migration - Aug 9-22

    It really shouldn't take this long, but I'm factoring in searching for and adding foreign keys to a database that wasn't equipped for them, always fun.

  • User authentication - Aug 23-Sep 12

    Lots of slop there, Dancer2 plugins should be able to handle most of the tasks. I'm factoring in time for getting keys from various parties and integrating the logos on the new front page, we'll have to have the designers come up with an appropriate UI.

  • Matching blog content to the new blogs.perl.org editor - Sep 13-26

    Probably some slop here as well, because MovableType stores things in HTML and that should be easy to integrate.

  • Public beta - Sep 27-Oct 3

    I'm not envisioning any major fallout from this, but then again Perl hackers can be a persnickety bunch. Hopefully they'll do their best to break our HTML rendering engine, and we can keep an eye out for that.

  • Release - Oct 4-Oct 17

    The fun part of any schedule. I've expanded it to 2 weeks because we'll have to coordinate with Dave Cross in order to transfer the old domain and solve any authentication and security issues that arise from moving shared secrets between IP addresses and to new domain owners.

Completeness Criteria

  • blogs.perl.org on GitHub and integrated with Travis
  • blogs.perl.org feature complete
  • Live schema imports via DBIx::Class into blogs.perl.org with no errors or constraint violations
  • Blog text, code snippets, quoting and comments display in clean UTF-8
  • Admin and test users can log in to their account through direct access
  • Beta users can log in through OpenID and whatever other IDs we support at rollout
  • Live users can view content, log in with their existing ID, create and comment on content

Bio

Jeffrey Goff is a long-time member of the Perl community, CPAN author, speaker at Perl conventions worldwide, active on IRC for an embarrassingly long time, one of the original Perl6 release managers and an active Perl6 core contributor. Before moving to Evozon.com and taking over buitinperl.com, he worked on release teams for the website builder MoonFruit and architected a Hadoop pipeline for TagMan.

Amalia is has been involved in the Perl community since starting the local Perl Mongers group, Cluj.pm, as an initiative of the Perl Department at Evozon. She has been organizing the meetups of the Cluj community since March 2012, and also attending worldwide Perl events, like YAPC::Europe, London Perl Workshop, or FOSDEM, either as a regular attendee or volunteer. Her involvement in the Perl Community has been officially recognised, in December 2014 being the proud recipient of a White Camel Award. In addition, she is also involved in the development and growth of builtinperl.com.

Tony Cook writes:

Approximately 37 tickets were reviewed or worked on, and 2 patches were applied.

bulk88's patch in [perl #123867] adds support for building perl in parallel on Win32 using dmake's -P option. I've spent some time trying to improve it, but ended up running into limitations in dmake, in particular it seems to call child makefiles with -S preventing any parallel builds in the child.

If a GNU make makefile is added [perl #123440] in 5.23 this may provide a better base for parallel builds, though the current version referenced only builds using GCC.

Act Voyager Progress Report

No Comments

Theo has published a blog post on builtinperl, which I think gives a good impression about progress on Act Voyager as well:

http://blog.builtinperl.com/post/yapc-na-act-voyager

Check it out!

I spent the month doing two main things: fixing 5.22 blockers, and once there were no blockers left, I began work on looking at the whole issue of how subroutines are invoked and returned from, and especially how the various perl stacks are manipulated during this time. It turns out that 6 stacks are involved, and there is lots of duplicated code, difficulties with stacks being doubly unwound during exception handling, and sort() and MULTICALL not handling subroutine context and arg return very well, etc etc.

Just trying to get a handle on it all is taking quite a while.

Summary

48:37 #124156: death during unwinding causes crash
0:54 #125244: segfault/etc. with recursion+sub{}+map pure-Perl code
0:50 List::Util and lc bug
0:30 RT #123998: blead's EUMM always fails tests on Win32 Perl on Win64
1:23 RT #124181: Tests spew unreferenced scalar warnings
2:34 RT #124368: Perl_sv_2pv_flags: Assertion
6:32 [perl #124385] null ptr deref -> Perl_cv_forget_slab (pad.c:500)
6:55 process p5p mailbox
1:59 review 5.22 blocker issues
13:03 update perldelta

83:17 Total (HH::MM)

As of 2015/05/31: since the beginning of the grant:

85.0 weeks
1154.8 total hours
13.6 average hours per week

There are 45 hours left on the grant

About TPF

The Perl Foundation - supporting the Perl community since 2000. Find out more at www.perlfoundation.org.

Recent Comments

  • Leon Timmermans: I'm missing a few stages here. It's nowhere defined what read more
  • Jeff Goff: I personally have no stake in what gets used to read more
  • ether (Karen Etheridge): blogs.perl.org should be ported to Angerwhale. read more
  • Upasana: I really support this grant. Reasons: 1) blogs.perl.org really needs read more
  • Jason McIntosh: Howdy, For the sake of acknowledgment, I comment to say read more
  • Kenneth M: yes++ read more
  • Daiji Hirata: Dave, we will donate a license of Movabel Type latest read more
  • Karen Pauley: This was Tony Cook's report. Thanks for pointing that out. read more
  • Jeffrey Goff: As the main author of the proposal, I apologize to read more
  • Tom Hukins: I don't know enough about the merits of PearlBee or read more

Find recent content on the main index or look in the archives to find all content.

OpenID accepted here Learn more about OpenID
Powered by Movable Type 4.38