Keyboard with Update Key

5-minute read

Update Manager RC1 is out!

This is a release candidate of the Update Manager plugin for ClassicPress which allows plugin developers to push updates to their users from remote locations such as GitHub or the cloud.

For we who build and release plugins, the Update Manager plugin makes it easy to keep our users in the loop with our updates – without having to upload our plugins to the WordPress plugin repo. This is a Release Candidate, so, please try to come up with creative ways to break it. If you do, let me know.

How it Works

The Update Manager plugin creates a simple client/server relationship, where it is the server (serving data, not files) and the client (which consumes said data) is a single PHP file added to your plugin(s). When a user checks for updates, the client file queries the server for update data and, if found, makes the update available to the user.

Quick Start

I’ve created a simple tester plugin – Update Me – that already has the client file integrated. The client is pointed to check for updates and, as it happens, there’s already an update waiting. What luck! The purpose of the Update Me plugin is to isolate and show you exactly what code you will be adding to your own plugins. I don’t think you should have to read the entire documentation just to give it a quick try. So, please do.

Test and Report

I will greatly appreciate any testing and feedback you can throw at this. Run through the processes, open the modal displays, click the tabs, read the texts. Inspect my sanitizing and escaping. Try to break things. Let me know what your error logs have to say about it. No issue is too small, so, reporting things like awkward phrasing and typos is also helpful. And, I’m open to feature requests. Speaking of which…I’ve packed a lot of them in!

Current Features

  • ClassicPress Specific
    The plugin doesn’t rely on $wp_version and it contains no WordPress-centric text. Another brand new plugin for ClassicPress!
  • Speedy Endpoints
    When users query for updates, they won’t be waiting around forever or timing out. The data endpoints are nice and fast.
  • Hassle- & Bloat-free
    You won’t find any nags, ads, or upsells. The plugin is designed to do it’s job and GTFO of your way until you need to see it again.
  • No Rogue Assets
    A pet peeve of mine is that many plugins load their scripts and styles on every page needlessly. While the scripts and styles involved with the plugin are super minimal anyway, they’re still only loaded when needed.
  • Small Footprint
    The plugin weighs in at about 165K with about half (or more) of that being code comments. The client file is about 15k, also with a 50:50 ratio of code to comments.
  • Lots of Documentation
    In addition to the code comments, there’s online documentation that describes installation, setup, and how to use the various features. I’ve also added a fair amount of inline help (onscreen text) to help you get your bearings.
  • Screenshot Support
    Just number your screenshots according to a well-established naming scheme and put them in the right directory – they will be discovered automatically. And, large images won’t break the layout.
  • Ratings & Reviews
    Adding star ratings and reviews is quick and easy. While I accept that most will probably give themselves 5 stars across the board just because they can, the math is still sound under the hood.
  • Banners & Icons
    Like screenshots, just name them the right way and put them in the right directory and they’ll be automatically discovered. There’s normal and retina support and you can use any combination of svg, png, and jpg formats.
  • Testable Updates
    Before rolling an update out to everyone, roll it out on a limited basis to specific domains. This adds an extra layer of checks to your update process and helps you to catch any last-second issues.
  • Notifications
    For test updates, a notice is displayed in the modal windows letting the user know it’s for testing. You can supply multiple email addresses and a URL which will be converted into links for your testers in the modal displays.
  • Kill Switch
    If you discover a critical bug or security vulnerability in a new release, you can take the endpoint offline with a click. Batch operations are also supported should you need to suspend multiple endpoints at once.
  • Readme.txt Style
    The text editor accepts readme.txt-style data. If you have readme.txt files for your plugins already, you can copy and paste them right in and just make a few tweaks.
  • Auto Completer
    Quickly insert any of several readme.txt-style templates which you can fill in with your plugin details.
  • Local Images
    Icons, banners, and screenshots are served locally to alleviate tracking concerns.
  • Semantic Versioning
    Semantic versioning is required to properly make version comparisons. With semantic versioning, you can even roll out alpha, beta, and RC versions without any trouble.