Categories
WordPress

WP Notify

I just learned about a proposal from Jonathan Bossenger to implement better notifications in WordPress.

You can read up on it for yourself, but I thought it would be helpful (for myself as much as anyone) to add some context, and explain why it’s so important.

What would WP Notify do?

If added to core, WP Notify would:

1. Provide developers with a Notifications API to surface new Notifications to the user, and handle their state (e.g. “dismissed”)

2. Introduce a Unified Notification Format (fixing the current visual mess of having boxes everywhere)

3. Group notifications together in a Notifications Hub (such as a menu item in the Admin Bar)¹


Technical Part.

The current notifications in WordPress are a hack at best. You need to write all the HTML for the notification wrapper, and use a specific CSS class to get it to show up.

Something like:

add_action( 'admin_notices', function() {
	<div class="notice is-dismissible">
		<h2><?php esc_html_e( 'We come in peace.', 'my-plugin' ); ?></h2>
		<p>🖖 <?php esc_html_e( 'Live long and prosper.', 'my-plugin' ); ?></p>
	</div>
} );

That’s just to show the notice. You’ve also got to save whether the notice has been dismissed.


I’ve got some personal history tied up in WordPress notifications. Joshua Wold and I spent a lot of time designing a notifications solution for Stream (which never came to be).

Then, in 2016, I gave a talk at WordCamp Sydney containing this screenshot.

What we’re looking at here is a brand new WordPress install after installing just 5 plugins. It’s a mess!

Now, a common Notifications API in WordPress won’t fix this entirely, but it could improve it a lot. The most interesting idea is to group notifications together in the Admin Bar.

This could produce a UI similar to the way Yoast handles notifications (see the screenshot above). It would also restrict notifications to:

  • A limited amount of text (280 characters, for example)
  • An icon

Notifications in WordPress can be grouped into a few categories:

Action

The plugin wants the user to take an action (often required before the plugin can be fully functional). For example, adding an API Key to Akisment, or connecting Jetpack. Sometimes it’s an optional action, such as taking a survey.

Onboarding

The plugin wants to teach the user about a feature, and so it shows a notice (usually contextual to where the feature exists) with some help text.

Informative

The plugin has detected information about WordPress which it wants to surface to the user. For example, Yoast detecting that search engine indexing is disallowed.

Results

The user has taken an action, and the plugin wants to notify them about the result (e.g. Post Saved, or Error Saving Post).

Advertisements

The plugin wants to show the user information about a paid upgrade or a current sale (please, no!).


While grouping notifications together into a single Notifications Hub would help reduce a lot of visual clutter, not all of these notification types belong in a Notifications Hub.

HubNotification Type
Action
Onboarding
Informative
Results
Advertisements

Onboarding notifications nearly always need to be shown in context. These are typically inserted into the UI, intentionally interrupting the user journey.

Results are a little different to other notifications in that they’re not usually persistent. They only need to be shown once, and automatically dismissed. Gutenberg’s notifications implementation does this really nicely.

Advertisements could exist in a Notifications Hub, but probably won’t. These notifications are all about grabbing a user’s attention, and grouping with other notifications isn’t a great way of doing that.


Given that only a few types of Notifications that would make use of a Hub (and even then, only at the plugin developers discretion), is WP Notify worth pursuing?

To answer this, I installed the 20 most popular plugins and catalogued the notification types I encountered. By collecting this data, we can see what percentage of notifications would be “captured” in a Notifications Hub area.

Notification TypeCount%
✅ Action1033%
❌ Onboarding620%
✅ Informative930%
❌ Results27%
❌ Advertisements310%

Of all notifications that I encountered, 19 / 30 (63%) could belong in a Notifications Hub


One interesting side note: Due to the brief usage of each plugin, I’m sure I missed many “Results” notifications, such as notifications shown when saving settings.

Should WP Notify provide a method for developers to show this style of transient notification, separately to the “grouped” Notifications Hub?


If you’d like to be involved in making this proposal a reality, you can get involved by joining the #feature-notifications channel in the WordPress Slack.

This is a great opportunity to get involved in WordPress core development, especially for UX / UI designers who want to have a hugely positive impact toward a distributed and open web.


1. There is some concern that the admin bar might not be the best place to show notifications. It’s already crowded, hard to use on mobile, and sometimes hidden on the frontend.

2. In these tests, the average amount of notifications displayed (after only a few minutes of usage) is 1.5 notifications per plugin.

Categories
WordPress

Advertising in the WordPress Admin

Yoast’s Black Friday Fumble

It’s Thursday afternoon. I’m having a quiet beer with Rob (cofounder of Block Lab) and Michael (founder of Visser Labs). We’re chatting about our WordPress plugins.

Michael:

Are you doing anything for Black Friday?

Rob:

Yeah, we’re running a sale. 25% off. You?

Michael:

Yeah, I’ve got a discount too. But it’s hard to cut through the noise. I’m not sure how to tell people about it.

Rob:

I agree. We’re on a list-post or two. It’s hard to advertise.

Me:

Maybe we should put a notice in the WordPress admin dashboard! 😏

We all laugh.

Rob:

😂 That’s a terrible idea!

Imagine our surprise when the next morning, that’s exactly what Yoast, and some others, did in their plugins.

This is how your Dashboard might have looked this Black Friday.

The Fallout

The reaction from their users, and the WordPress community in general, was swift (and pretty nasty!).

Many others took to WordPress.org to express their outrage, leaving Yoast SEO 75+ 1 star reviews over 2 days.

Yoast once was a fantastic plugin. It’s since devolved into a collection of decent tools heavily overwhelmed by unnecessary bells, whistles, and upsales.

Shyzer

Absolutely outrageous to have intentionally spammed millions of dashboards… Yoast took the opportunity to betray the trust of millions of WordPress admins and owners.

The Old Man

The fact that this decision took place and code was written to make this happen, speaks volumes for the management and leadership of this plugin. Unfortunately, they cannot be trusted, especially in a professional environment.

9Xpi

Spam the dashboard ? OK => DELETE ALL MY YOAST INSTALL IMMEDIATELY…

locomint85

In the end, Marieke van de Rakt (CEO at Yoast) set things right. She issued an apology, and Yoast released an update removing the banner ad.

The question has to be asked: Who thought this was a good idea? And who approved it? A business the size of Yoast would have likely had a process something like this:

  1. A Marketer suggested the idea
  2. A Product Manager approved it
  3. A Business Analyst defined how it should work
  4. A Designer designed it (questionable in this case)
  5. A Developer implemented it
  6. QA reviewed it

That’s six different people who all just went along with an objectively awful idea. Was there any internal conflict or discussion? We’ll never know.

I don’t think there’s any long-term repercussions here for Yoast. They made a mistake, they fixed it, they promised not to do it again. But with such a violent reaction from their users, it’s worth diving into why this hit a nerve.

Is This Allowed?

The free version of Yoast is run on 15% of the top 1 million websites. Not 15% of WordPress – 15% of the web. If the success of this ad outweighs the negative reaction, is there anything stopping Yoast from doing this again?

From the WordPress.org plugin guidelines:

Advertising within the WordPress dashboard should be avoided, as it is generally ineffective. Users normally only visit settings pages when they’re trying to solve a problem. Making it harder to use a plugin does not generally encourage a good review, and we recommend limiting any ads placed therein.

Detailed Plugin Guidelines

So… not recommended, but not disallowed. Yoast couldn’t be delisted from WordPress.org as a result of ads.

Yoast’s Black-Friday-Faux-Pas is an exercise in extremes. Their bright yellow and cyan full-width banner, animated like it’s 1999, was displayed on every – single – page. Freemium plugins including a small up-sell ad on their settings page don’t cause this kind of uproar.

Is there a place for ads in WordPress? Maybe there is. Certainly a sustainable plugin ecosystem is good for everyone, and the Freemium model seems to be an effective one.

Ads Done Well

Of course, the offensiveness of advertising prominence will always be subjective. Here’s a few plugins that I believe do a great job of letting their free users know about a premium option.

Sidebar Ads

Advanced Custom Fields – everybody’s favourite custom meta plugin takes a very understated approach. You can’t even really call this one an ad, it’s so subtle (maybe a little too subtle?).

WP Migrate DB has a Pro ad in the sidebar. It only shows when you’re using the migration tool. Importantly, it outlines precisely how Pro improves on the Free version.

WP Migrate DB uses a formula that keeps things simple and unobtrusive: Call to Action > Value Statement > Social Proof. Mix and match to taste.

… but let’s not overdo it.

Sub-Menu Ads

Even though the sub-menu item is bright orange, it’s only visible when you’re using Wordfence.

Some plugins add an item to the menu. In these cases, a sub-menu item showing the availability of Pro might be acceptable.

The advantage here is that visually there’s no “Ad” in the plugin (similarly to ACF above), but information about Pro is available for users who might be interested.

This Block Lab screen is completely dedicated to advertising Pro, but is only shown if the user intentionally wants to learn about the product.

Ads Done Poorly

WPForms uses a lot of screen real estate to tease me with features I can’t use.

Contextual Ads

Contextual ads sound like a good idea in theory, but in practice can be borderline annoying. This is where you show users the features they could be using, if only they upgrade to Pro!

I imagine that it is possible for this type of advertising to be done tastefully, but it’s hard to find an example that doesn’t leave me feeling aggravated.

Yoast is famous for this brand of advertising. Who wants to use a tool that’s littered with bright yellow Calls to Action?

Onboarding Ads

This is the worst. I haven’t even had a chance to try your product yet – at least let me see what it’s all about before hitting me with an upgrade prompt!

WooCommerce literally tries to have me install 7 additional plugins during the onboarding process! Some of them may be free, but all of them lead to paid services. I haven’t even seen WooCommerce yet.

This is extremely heavy-handed, and in my opinion, a textbook example of advertising gone wrong.

But even Woo is not quite as bad as WordFence, which, upon activation, creates a takeover model which requires an email address, and then promotes Pro! Again, before anyone has had a chance to use their plugin.

If you don’t have one, you can purchase one now! 🙄

Advertising Guidelines for the WordPress Admin

There’s clearly a right way and a wrong way to advertise in the WordPress admin. If you, like Yoast, can’t figure out what counts as acceptable, here’s a handy guide:

1. Don’t advertise after plugin activation

Even if you’ve chosen to avoid the full-screen modal for your onboarding (👍), let your users at least interact with your product before hitting them with a Pro prompt.

2. Only advertise on pages created by your plugin

This includes post meta boxes, the Dashboard, and the Plugins list page.

3. No animations

I mean, that really should go without saying.

4. No teasers

More features available in Pro” is fine.

Feature X is only available in Pro. Upgrade Now!
Feature Y is only available in Pro. Upgrade Now!
Feature Z is only available in Pro. Upgrade Now!

… is not fine.

5. Say it once

Don’t include more than one ad per page.

6. Advertise the product, not the sale

Introducing ads for limited time events is tacky. It’s also code bloat and will last forever in your version control.

Categories
WordPress

Hindsight is Twenty Twenty

WordPress 5.3 “Kirk” is out! It’s the third major WordPress release this year – and it includes some interesting changes. Let’s dive in.

Here’s a little background listening for this post, from the namesake of the 5.3 release: Rahsaan Roland Kirk.

Gutenberg

Despite early reluctance to the new editor, it really seems as though the WordPress community is warming up to it. This release in particular makes some changes to Gutenberg that enable some powerful content design possibilities.

If you’ve been reluctant to give Gutenberg a shot, now might be a good time to take a fresh look. Of particular note is the Group Block.

With the group block, you could try combining multiple blocks into a “wide width” group block, with a background colour.

See how this image block is inside a group with some paragraphs? You couldn’t really do that in the 5.2 editor.

You could also save a group as a reusable block, creating an insertable multi-block section. Imagine a “buy my eBook” breakaway, or a newsletter signup.

There are still a few bugs – Gutenberg still feels to me like a late-stage beta.

Sometimes a feeling is all we humans have to go on.

Captain James T. Kirk

But we’re getting closer. The UX of traversing through layers of nested blocks and columns has improved a lot in this release, but it’s still very clunky.

Background colour gradients didn’t make it into this release – but I think we can safely expect to see them land in 5.4.

Twenty Twenty

This is the first theme since Twenty Sixteen that I can get behind. I absolutely love it (and I’m running it on this blog).

The team behind Twenty Twenty has perfectly balanced the design’s opinion and flexibility. It seems to have taken a lot of inspiration from another personal favourite of mine: Tabor.

It’s light-weight, simple, and includes a beautiful custom typeface called Inter. Shipping an open source typeface with the theme is a stroke of genius for fighting back against Google Fonts (brilliant, but very privacy invasive).

This means that aside from Gravatar (and any embeds that I put in my posts) this site loads without calling any external scripts or styles!

a11y

Short for “Accessibility”, a11y was a huge focus in this release. Many of these updates are related to navigating the block editor with a keyboard, but the most obvious change is the WP Admin colour scheme.

Before
After

If you’re using the default colour scheme (you can change this from your profile page), WordPress is now much more high contrast – interactive controls and metaboxes have darker borders and lighter backgrounds.

Personally, I’m all for making WordPress more accessible. There has, however, been some criticism of the new design.

The old CSS was better. Now there are lines lines lines lines borders everywhere. It is really bad for eyes, like a table with dark lines…I think i will overwrite it with custom css.

Sonjoe

Is accessibility always this ugly? Or is WP ahead of the curve and all web interfaces will be this ugly eventually?

Phil

Its not only ugly, but this style is making my eyes hurt. The contrast is way to high and I’m can’t shake the feeling that I’m looking at windows 95.

tatof

Ouch! The Make Post announcing these changes has a lot more where that came from.

MacOS has a “high contrast” accessibility feature, which can be toggled on and off. That seems like a good compromise to me – even if the high contrast mode is enabled by default. The WordPress a11y team seems to have some strong opinions that run counter to that, though, so I can’t see this happening.

Admin Email Verification

Another sore point. The idea here is that WordPress will now periodically check that the admin email setting is correct. Slightly annoying, but I can see how that might solve some security problems for users who don’t log in very often.

There was some heat around this topic in the WP Australia community. Gal Baras brought up a good point:

WordPress is clearly not subscribing to the Unix philosophy of trusting the user to know what they’re doing. It keeps trying to control things based on the assumption the site owners need to be saved from themselves…

… being prompted every 6 months to verify my admin email on the number of sites I have is not making me happy.

Gal Baras

A similar tone was struck in a WP Tavern article describing the feature.

I work on hundreds of sites, for each one I have a local install and a staging site (I code locally and upload to staging for review). So two thirds of the sites I work on aren’t “real” websites and a third aren’t accessible on the web.

James Mailen

More bloat. No need for this in the core.

John Rood

The feature can be turned off with a filter (admin_email_check_interval), but maybe this should have been an option, instead?

Personally, I’ve not ever had a problem caused by this setting being incorrect, and I’ve run into the verification screen enough times that I automatically click through without actually reading it. So from that perspective, it’s more annoying than helpful for me.

The Core Team vs. The User Community

Admin email verification isn’t a hill I’m willing to die on. More interesting to me is the negative response from the community. Both on this issue, and accessibility. Has the core team learned nothing from the Gutenberg release?

Even the most enthusiastic Gutenberg proponents (I count myself among them) have to admit that the rollout of the new Editor was terrible. The Classic Editor plugin only came out last year and already it’s the fourth most popular plugin of all time!

Communication from the Gutenberg team was nowhere near good enough, and the user community felt dismissed and unheard.

It seems to me that the core WordPress team are becoming increasingly perceived as pretentious and aloof. The democratic and libertarian values that underpin WordPress are being twisted into an alarming refusal to listen.

Maybe it’s due to the “Benevolent Dictator for Life” model behind Matt Mullenweg’s leadership (there’s a WordPress Governance Project which doesn’t seem to be going anywhere). Maybe it’s a well intentioned effort to stand behind under-represented minorities, even in the face of overwhelming negative feedback.

I don’t pretend to have all the answers, but surely acknowledgement and empathy would be a better approach than “we think this is important, so it’s going to happen whether you like it or not”.

Categories
Future

Facebook Free

Google and Facebook are not good for the planet.

It really is as simple as that. Climate Change and Surveillance Capitalism are the two most important issues of our time.

The scariest part is that a single individual can’t really do much about it. That makes it hard to effect change. In the same way that littering once won’t destroy the ocean, scrolling your instagram feed doesn’t have any real effect on its own.

But I don’t want my kids to reside in a world destroyed by pollution, or have to sneak around in an Orwellian nightmare. I figure that if we can all pitch-in for a Plastic-Free July, then we can do the same for a Facebook-Free August.

Here’s how I removed the ever-watching eyes of Facebook and Google from my life:

Phone: I use an iPhone. Apple have a strong track record on privacy, built-in hardware encryption, and incentives aligned with keeping your data private. Android captures every little detail about your life and send it to be processed and stored indefinitely in the cloud.

Browser: I prefer Safari, but many also like Firefox. Since I’m on Mac, Safari has some great native features which I find it hard to live without.

Search: DuckDuckGo is an easy winner here. No search saving. No hidden trackers. No filter-bubble. On your phone, just go to Settings > Safari > Search Engine > DuckDuckGo, and you’re done.

Email: I use FastMail, but many also like ProtonMail. These are paid services, but then, so are reusable shopping bags. Gmail reads your emails and uses them to influence what you see online.

Social Groups: I’ve been Facebook free for a long time, and I don’t miss it. When more people are willing to be a squeaky wheel when it comes to Facebook’s “groups” feature, we’ll see alternatives become more mainstream. You can use Reddit for news and advice on specific topics. Discord is another great alternative, for communities with real-time chat.

Social Sharing: Again, this is something you can probably live without. Send photos directly to family members in an email, blog post, or iMessage. For sharing great photography, try VSCO. For beautiful video, try Vimeo. Or for inspiring digital art and design, I love Dribbble. For longer form content, create a self-hosted WordPress blog (I love Flywheel for this).

Video: There aren’t any great alternatives to YouTube. My solution was to repurpose the time I would have spent consuming video content, and use that time to be creative, instead. If you absolutely can’t live without YouTube, you can always visit it anonymously (no account needed to watch videos), and use your browser bookmarks to save your favourite channels.

Chat: iMessage is great for those with iPhones. Outside of that, consider starting a Slack or Discord for your friends – my friends have a Slack with channels for our favourite topics like VR, robotics, books, and lego.

Calendar, Contacts, Notes: I love Apple’s Calendar, Contacts, and Notes apps, with (encrypted) iCloud syncing.

Maps: Google Maps isn’t as far ahead of Apple Maps as it used to be. I’ve been using Apple Maps as my daily driver for years with barely a hitch. The Israeli startup Waze is lots of fun, but unfortunately it’s owned by Google.

News: Reddit is good here, but not as good as a variety of reliable local news. In Australia, SBS + ABC is a good combo if you can overlook a bias to the left.

Docs: Leaving Google Docs was the last and hardest step for me. Thankfully, I found Quip – which has great collaboration features, which is most of what I’m looking for. I’ve also used Apple’s Pages / Keynote / Numbers trio which have a collaborative editing feature – even in browser!

Cloud Storage: I bought a NAS, and I sync my important files to it using Synology’s CloudStation Drive app. This way, all my data is stored locally, but accessible from anywhere in the world. It’s an expensive alternative to Cloud Storage, but when you have as many photos as we do, it actually works out cheaper after about 2 years. iCloud Drive is another great option.

Video Chat: For 1:1 calls, I always prefer FaceTime if possible. Zoom is also fantastic.


Bonus: Here are some other tools I use to keep me safe and private online:

Ads: I block ads and trackers using 1Blocker (on both Mac and iOS). This only works with Safari, but it’s super-fast, efficient, and effective.

DNS: In Australia, ISP’s store all of your DNS queries, so it’s important to switch your ISP from the default. Cloudflare offer a much faster, private, and free alternative, which is so easy to setup that everyone should be using it.

VPN: I found a good deal with NordVPN, and quite like their software for Mac. Many also like ProtonVPN, which would be a great combo with a ProtonMail account.

Categories
Measure

2018 Film & TV Roundup

This year I saw 73 movies (down from 111 in 2017), and 25 full seasons of television (up from 18 in 2017).

Interestingly, the quality of the movies I watched was nearly identical between years. My average review score increased from 73% to 75%.

Top 5 Films of 2018

These are movies I watched, but weren’t necessarily released, in 2018.

5. Avengers: Infinity War (2018)

I went into this movie without having seen any trailers, and not knowing that it was the first of two parts. Besides the stunning visual effects, I left the theatre shocked at how it ended! It wasn’t until a few hours later that I realised there would be a “resolution” to follow-up in 2019.

4. Call Me By Your Name (2017)

A touching film about an Italian Jewish family, and a coming-of-age romance. This was the first full film I experienced in a virtual theatre, through Bigscreen.

3. Spider-Man: Into the Spider-Verse (2018)

I’ve avoided Spider-Man movies, because they’re generally poorly reviewed, and I know that if I watch one, I’ll have to watch them all. It took a while for my eyes to become accustomed to the 12 FPS animation style, but once they did, this film was sensational. I can’t wait for Talia to see it, because I think she’d just love the art-style.

2. Francs Ha (2012)

Talia and I watched all of Noah Baumbach’s films this year (in chronological order), and Frances Ha is my favourite of the lot. Greta Gerwig will always be Frances to me. If you haven’t seen it yet, please add this one to your much watch list (great for a date night!).

1. 2001: A Space Odyssey (1968)

2018 was the 50th year anniversary of the Stanley Kubrick’s pièce de résistance. This is the greatest film ever made, by the greatest filmmaker to have ever lived. I saw this movie twice this year: once on an old 70mm reel full of dust and scratches, and once on Christopher Nolan’s remastered 70mm film.

I also got to meet Keir Dullea and Gary Lockwood (the astronauts Dr. Dave Bowman and Dr. Frank Poole) in person, and got their autograph on a limited edition 2001 art print.

Top 5 Television Seasons of 2018

5. Legion (Season 1)

You wouldn’t know that this mind-bending sci-fi / thriller / horror series is set in the X-Men universe. It is bizarre, hilarious, and sometimes even scary. The best part is Jemaine Clement as Oliver Bird (Jemaine usually is the best part, isn’t he?), who brings a little levity to an otherwise serious endeavour.

4. Black Mirror (Season 4)

Who could forget the USS Callister – my favourite episode of any TV series I saw this year. This season was consistently dystopian and harrowing, which is what I love about Black Mirror. The bonus Black Museum episode was a nice touch, too.

3. The Expanse (Season 3)

The best sci-fi on TV right now. I’m a huge fan of James S.A. Corey’s The Expanse book series, and delighted to see such a great adaption for the screen. Shockingly, Syfy announced it would not renew The Expanse for a fourth season! Fans (including me) petitioned on-demand services, and in the end, Amazon picked the series up for additional seasons.

2. Star-Trek Discovery (Season 1)

Whether you’re a Trekkie (like me) or not (like Talia), Discovery is a great, modern take on Star Trek, which stays true to the original vision of progressive positivity. I couldn’t have hoped for a better start to a contemporary refresh (visual style, not story) on Trek.

1. The Marvellous Mrs. Maisel (Season 2)

Is this the only non-sci-fi title in my top 5? I guess so! If you haven’t seen it yet, this Amy Sherman-Palladino series is just hilarious, though it’s not that same brand of slapstick comedy as Brooklyn Nine-Nine, or The Office. Think Gilmore Girls, but Rory is Jewish and grows up to be a comedienne.