John Koster

Meerkat Comments for Statamic 3 (Beta 2)

John Koster

Meerkat 2 is an extremely powerful, yet easy-to-use self-hosted comment platform for Statamic 3. Meerkat 2 allows designers and developers to easily build comment threads into their existing projects, allowing them to retain their user engagement data.

Documentation

The Meerkat 2 documentation lives on its official website at https://meerkatcomments.com/docs. The documentation will continue to be updated and improved over time.

Most people tend to start with the following when they just want to jump right in and start integrating Meerkat into their site's theme:

If you are a user of a site that has integrated Meerkat, you may want to check out the following resources to learn about the Control Panel integration:

If you're a developer and want to poke around, you can grab the source at https://github.com/Stillat/meerkat-statamic3; if you want to dig into some of the cooler internals, I (John) am particularly proud of the Advanced Filtering in Meerkat 2.

Free Developer Access

Meerkat 2 is free to use forever to develop and test locally. You can find out more about this in the license.

To get started right away, issue the following composer command:

composer require stillat/meerkat

Please consult the Installation documentation if you run into any issues, and make sure you are installing at least version 2.0.5-beta1.


The following adapted from the October 11th, 2020 Meerkat Update.

Introducing Version 2

Version 2 development started with a blank editor screen. The entire system was re-written from the ground up, old pieces thrown away, and new systems organized to be performant (version two is orders of magnitude faster than version one on a busy site) and more importantly maintainable.

The development process for Meerkat 2 brought only the data format from version one to start; and everything was developed backwards from there (migrating Meerkat 1 data to Meerkat 2 is a simple copy/paste operation).

Most of the systems were completely re-engineered—especially those related to data retrieval and parsing. Faster data structures were implemented, and hierarchical data is almost pleasant to work with now. The old pieces that were brought in were heavily scrutinized, and obsessively reworked to avoid the problems of yesteryear and just feel nice to work with.

Here is a quick demonstration of that philosophy coming through (this syntax is still not as nice as I'd like it to be; there will better accessor methods coming in a future update for this data); the following example is all it takes to retrieve a comment with a known ID and access the relevant comment data along the storage graph (in either direction):

use Stillat\Meerkat\Core\Comments\Comment;

$comment = Comment::find('1530680400');

// Get all comments that appear before this
// one in the comment thread hierearchy:
$ancestors = $comment->getDataAttribute('ancestors');

// Get all the comments that appear after this
// one in the comment thread hierearchy:
$descendants = $comment->getDataAttribute('descendants');

Meerkat 2 is split into three main parts from a development perspective:

  • Meerkat Core: This project contains all of important processing logic for Meerkat 2. It does not have any direct dependencies, and, in theory, should be able to be hosted in non-Statamic sites (making that easy is not a priority at the moment). Core contains all the parsers, data structures, storage mechanisms, HTTP API interfaces, etc. It is siloed.
  • Core JS and UI: This project contains a reusable JavaScript SDK for interacting with the HTTP API interfaces defined in Meerkat Core. It also contains the presentation layer that you see in the Statamic 3 Control Panel, and the start of a standalone framework I hope to release separately someday-currently called SyncJS (it manages browser state between multiple tabs and instances; this was developed entirely just to make the Control Panel experience that much better across multiple browser tabs and windows).
  • Statamic 3 Addon: With Meerkat 2, the Statamic addon focuses entirely on things that are specific to a Statamic site, and provides the glue between the other two pieces. For example, this project provides Core with YAML parser implementations, Markdown parser implementations, etc. It is also responsible for the templating system logic and collecting configuration data from your Statamic site and passing it down to Core. Neat.

To enforce this strict separation, each of the three pieces have been developed in their own repository and tested separately. Custom cross-platform build tools and pre-processors were also developed just to assist with this (essentially a smart copy/paste on steroids). This strict separation will slowly be unwound over the coming weeks to make it easier for community contributors, and the separation between Core and the Statamic Addon will just be enforced through code review.

Where We're at Today

Is Meerkat 2 perfect? No. Does it have bugs? Sure; all software does. But what it does have over Meerkat 1 is an incredibly solid foundation to move forward with. A foundation that doesn't trigger anxiety each time something needs to be worked on. That there is a great feature. :)

Meerkat 2 is not something that will really be "done"; will continue to be actively developed, maintained, and get new features over time. It is going to be available for purchase very soon for those agencies that need to have prices baked into their contracts in the near future and licensing procured up front. As always, Meerkat 2 remains free forever during development and trial periods—you will only need to pay once moving to production.

At the time of writing, there are known bugs and issues, but things needed to start moving in the right direction and get an initial version released. It is tough to release something again when you know when you dropped the ball a few times the first time around.

Heavy development also had to take a quick backseat to get the new website up and running. It is hard to use something without documentation and resources (thank you to those that were willing to receive a ZIP file of the in-progress documentation while things were quickly being hashed out <3), after all.

Where We're Going

Meerkat 2 is currently in a "beta" period; there are some early adopters building out client sites and seeing what breaks. I have planned out three main phases to the beta period before releasing a tagged production release (however feel free to release to production whenever you are comfortable with where your integration is at):

  • Phase 1: This is the phase ended on October 18th, 2020; and it will be focused primarily around fixing critical issues and bugs that will stop Meerkat 2 from actually being useful. A ton of validation and testing went into Meerkat 2 before getting here, but things always get through, especially with late additions. I don't think this phase will really ever end, but that is software development :)
  • Phase 2: This is where we are at now This will be a heavy development phase; and is going to bring managing Meerkat configuration to the Statamic Control Panel. Because of the Core configuration is structured, development for this will happen entirely in the Statamic addon project, and will be relatively painless. This phase will also start to bring some of the indexing features that are planned to super-charge performance on sites with tens-of-thousands of comments, while still utilizing the file system.
  • Phase 3: This is where things will start to get really interesting as much of the new feature development and polish will start to happen here (there are a few things planned that will just be easier for users if Control Panel configuration exists already). The big features planned are based around workflows and automation; this will serve as the backbone for automated emails, Slack integrations, etc. going forward.

After phase 3? Not sure, let's not put the cart in front of the horse this time, but what comes after that will largely depend on what the community wants and needs from Meerkat, and what makes sense to put into the core product. But one thing is for certain: Meerkat 2 is actively supported, developed, and maintained.

If you need help, support, have any questions, or simply want to say hi just send me an email.

Thanks for reading!

—John