Why I don’t have a problem with Jetpack

Want that magical tl;dr? Jetpack is for users, not developers.

I don’t know if I’m madly in love with Jetpack, or if I’m ever madly in love with a plugin, but with all the negative things I see from the WordPress development community on a regular basis, and some genuine interest in this topic, I figured I’d write about why I don’t have a problem with it. To be honest, I roll my eyes a little bit when I see yet another round of abuse from my fellow developers. I use it, my husband uses it, WordPress.com uses it, and so long as I remember to be a user, it’s great. My frustrations, like many of those of others, only come when I start approaching it like a developer, much like how I get frustrated with my MacBook Air only when I realize that 4GB of RAM wasn’t, in fact, enough at all and I can’t replace/upgrade it myself. If I really want to care about that above all else, then maybe I better not be an Apple user :)

Jetpack is not made for developers, and I don’t think it pretends to be. With that line of thinking, I believe it’s just a bit silly of us to get all affronted as developers so long as it’s secure and the codebase continues to mature, just like with any other project. It’s the kind of plugin that’s made for people who almost don’t know what a plugin even is, and have no concept of what others mean or disagree when we throw out our beloved “plugin territory” line when looking for something they want their site to do. Try reading some feature requests on core Trac sometime, and those come from people who managed to figure out to come to Trac! Anyway, as I always say, these users just want it to “clicky-clicky-worky”. I think Jetpack does just that the vast majority of the time, and technical annoyance points like some new modules auto-activating or having to connect through a WordPress.com account are a part of that successful behavior. We’re a vocal minority, you guys, and we should recognize that.

Most users, especially ones just getting started with the web, have a pretty standard set of things that they want their site to do, and it’s smart to put those common desires together in a one-stop-plugin. If Jetpack claims to be for everybody ever, then maybe-probably I’d have a problem with that. I’d also be surprised if a plugin started claiming anything at all :D I don’t think Jetpack exists to make your life as a developer easier, and while I’m sure/know that there are myriad ways in which it could be better for developers, I think it does need to be recognized that there is a focus on user-facing features and that time spent by Automatticians tends to go there. Maybe we can get in the spirit of open source and contribute back as developers when we find pain points (especially those of us who have to use it in replicating an environment), or maybe we can expect more for free, or maybe I don’t know what, really.

Getting my more technical complaints out of the way just so nobody feels as though I am criticizing them for being a critic (because I’m not – criticism is healthy, even when I personally might think the volume a little silly): I think some parts of the UI could be better, I’m not a big fan of the consolidated top-level menu because I think users think about and look for labeling suggestive of the features as opposed to Jetpack as a bundle, I hate the slippy-slidy-earth-moving-hidden-UI method of deactivating a module just like everybody else does, and no, local development is not always easy, although there is a way for modules that don’t rely on a connected account.

For the record, I deal with Jetpack on local and restricted staging development environments just about every day, as it’s a part of how we set up to do .com VIP development, and find that there are often equal annoyances like dummy Twitter accounts for testing things that we’ve hooked in to, say, shortlink generation, whether or not we use a .com/Jetpack feature to tweet that link in the end. Or, I mean, oAuth, or SOAP, or lots of other things, especially in PHP. There’s always something annoying or difficult in development, Jetpack or no, and to me one plugin doesn’t deserve an exaggerated share of complaints. Complaints, sure, but it seems pretty lopsided, at least in the public arena, and especially from those who aren’t really forced to deal with it as a part of their client development. Yes, I hate that we don’t have a perfect replicated environment to develop on, and abuse it soundly in our IRC channel, but I do the same for anything we can’t exactly replicate internally and stab at blindly.

There are also things like plugin conflicts, which happen to everybody. I don’t think anybody can claim to have never written a plugin without a mistake or possible conflict, even people who ostensibly deal with WordPress all day every day. I know I can’t, have no idea if I could even test for conflicts against all 22,942 plugins in the .org repo as of this writing (my fault or not), and it would be ugly for me to judge the people (yes, they are people, and as far as I’ve met, wonderful people) who work on Jetpack as a part of their job at Automattic. If we want to point the Automattic-should-know-and-do-better finger, all I can say is that I don’t believe much in statements like that – the only thing I believe in is getting better via hard work and owning up to mistakes, which I find the team (is it a team?) does when actually communicated with rather than reading negative comments second-hand like we “accidentally” dropped a note we were passing in grade school. Developers are always going to have opinions, and it’s not an easy task to ignore what you may actually completely agree with as a fellow developer in favor of your true or proclaimed audience, and I would rather respect that focus while encouraging forward motion. Basically, I don’t want to bash; I want to suggest something that might be better, because that’s how I’d like to be treated. I’m also prone to telling people how I feel as directly and exactly as I can, so I think it can certainly be said that I am projecting some of my own personal preferences and personality here. I mean, it’s my blog!

Let’s take the Publicize module as an example of one that is on by default. There are all kinds of things that I find myself wishing it would or wouldn’t do, but those things I wish are things I’m only aware of because I’m specifically internet-tech-oriented and with other non-Jetpack integrations going on, like IFTTT tasks set up that sometimes create conflicts or feedback loops and my own YOURLS domain. So, maybe Publicize isn’t the feature for me, or I need to take the time to dig into its hooks for my own site, or discover that it doesn’t have hooks I need and find the right person to nag about it if I want to commit to my complaint. Complaining that it exists and is turned on (with nothing connected) is sort of like complaining that OSX ships with a color picker that no longer gives out hex values, minus the earlier-feature-that-got-taken-away part. Yes, it’s lame if that’s what you need a color picker for, and complain away, but there are better and more appropriate tools out there if you really have that specific need and as a power user, I’m perfectly happy to use them instead because it’s just plain better for what I need. It’s easy enough to not open the application, or in the case of Jetpack, either not authenticate anything or turn off that module (slippy-slidy-earth-moving-hidden-UI notwithstanding).

So what does Publicize do for your clicky-clicky-worky user? The biggest benefit I see, besides the whole broadcasting thing, is that it removes the intermediary step of setting up oAuth applications. I’m a developer, and I find that setup stuff almost impossibly confusing, especially on Facebook with all those Open Graph actions and whatnot. Have you tried setting up the Facebook plugin? Does it do what you want even when you make it past those hurdles? It didn’t for me or, perhaps more likely, I missed a hurdle. (Otto, I miss Simple Facebook Connect, even though I understand.) When it comes to Twitter, maybe it’s not completely true just yet, but as their API becomes more and more locked down and difficult to access, somehow I get the feeling that authenticating through .com may just come in handy.

Jetpack commenting, which some may know as Highlander from .com development, did not come turned on by default, but got its own share of abuse for routing through a .com site. I have no idea if it still does it, and to be honest, I’m not sure it bothered me even conceptually. If you’re noticing things like a redirect, then it should probably also be pretty clear to you that something external is happening to make social media logins and email notifications work out of the box. Social media login integration is approximately negative 17% fun, and potentially voluminous email across an unknown and crazy wide assortment of hosting environments is perhaps even less fun. Again, I’m not coming down on anybody for being concerned about the external routing, because I understand, but I think this is a case where it’s also pretty easy to understand why it works that way and to use something else if it is a deal-breaker or otherwise particular concern of yours. If it doesn’t do that routing anymore (seems unlikely), or it’s less noticeable, then great! They iterated and made it better. How much more can you really ask for, especially as a hopefully-empathetic developer? :)

As I’m trying to come up with a conclusion to this rambling post, I find myself worried that vocal critics are going to feel as though I am turning around and criticizing them. I’m really not trying to, I promise. I’m a huge critic, both of the thing that I work on the most and of myself. After all, why would you commit to working on WordPress itself if you didn’t want it to be SO much better slash hate it just a bit? What would my everyday motivation be if I didn’t constantly think I could be and do better? In any case, I find all the different perspectives quite interesting, and as somebody who has no interest in creating the next Jetpack, have no real desire to be loudly judgmental, as I don’t envy the task. I just feel it’s important to consider perspective. In this case, it’s the perspective of the clicky-clicky-worky user that matters the most, and I think in that regard, the only problems to have with Jetpack are those of when a feature is actually broken or perhaps being impatient to see what it will do next.

Blue Admin Bar 1.0

When we were making mockups for the refreshed admin bar in 3.3, I created a blue version to mix things up and ended up really liking it (yes, this line appears in the plugin’s readme). So, I decided to make a plugin for it for you all to enjoy that has slightly different versions for 3.3 (currently in beta) and pre-3.3 versions with the admin bar. I am currently using it on my local development sites so that I know where I am, but it’s also really pretty with the blue admin theme. I plan to add RTL support sometime in the near future.

Available in the WordPress plugin repository: http://wordpress.org/extend/plugins/blue-admin-bar/

Screenshots

3.3, gray admin theme, dashboard

3.3, gray admin theme, dashboard

3.3, gray admin theme, add post

3.3, gray admin theme, add post

3.3, blue admin theme, dashboard

3.3, blue admin theme, dashboard

3.3, blue admin theme, add post

3.3, blue admin theme, add post

3.3, Twenty Eleven

3.3, Twenty Eleven

3.2.1, gray admin theme, dashboard

3.2.1, gray admin theme, dashboard

3.2.1, gray admin theme, add post

3.2.1, gray admin theme, add post

3.2.1, blue admin theme, dashboard

3.2.1, blue admin theme, dashboard

3.2.1, blue admin theme, add post

3.2.1, blue admin theme, add post

3.2.1, Twenty Ten

3.2.1, Twenty Ten

Really Simple Gallery Widget 1.1

After several months of a severe reduction in the amount of “free” time I have, I finally managed to sit down and finish an update to the Really Simple Gallery Widget plugin. This update adds the ability to choose to use images from the entire media library and/or view only the images attached to the post/page being viewed. It also has some cleaner and safer HTML and should have a better memory footprint (not that it was a hog to begin with). Available in the WordPress plugin repository now.

* Download Really Simple Gallery Widget 1.1 *

Styling the Really Simple Gallery Widget

The Really Simple Gallery Widget has some very light CSS selectors in the HTML for you to apply your styles to. They amount to this: there is an outer div with the class “rsgallery”, each image is given a class of “rsg_image”, and captions are given a class of “rsg_caption”. There are no current plans attach stylesheets, but some better structure and/or options for classes may be provided in a future version.

Examples:

/* Add some space (20 pixels in this example) under each image */
.rsg_image { margin-bottom:20px; }
/* Add a border that changes when moused over
Important: don't forget that you need to add double the width of the border to the image width to get the total */
a .rsg_image { border:1px solid #00F; }
a:hover .rsg_image { border: 1px solid #F00; }
/* Create a grid of images - will not work with captions in the current version. Adjust the margins to fit in the width of the widget area - there will be leftover margin on some sides
Be careful - the floating may cause your layout to behave strangely, especially anything that follows the gallery widget */
.rsg_image { float:left; margin:0 20px 20px 0; }

To add CSS to a theme that you can’t edit, try using the the Simpler CSS plugin. Remember that if you edit a CSS file in a downloaded theme like Twenty Ten, it will probably get overwritten if you upgrade the theme in the future. Make a child theme instead.

Really Simple Gallery Widget

Yes, it’s yet another plugin born out of a specific work request that seems usable by the general public. We’ve got some pages that function as photo galleries and we like to show said photos in the sidebar in a random order with a link to an anchor on the gallery page or showing the full-size image in a Shadowbox overlay. Turns out that the built-in gallery shortcode doesn’t actually do random (as far as I could tell) and shows captions by default and all kinds of things that just weren’t working for me (or the people I report to). I looked through and tried out a pretty ridiculous number of plugins, many of which required the use of separate galleries or new posts of a custom post type, and none of which did what I needed them to do – just use the built-in attachment functionality.

So, I wrote a widget and then made it into a plugin that does more than what I originally needed. A couple examples:

Available shortly now in the WordPress plugin repository: http://wordpress.org/extend/plugins/really-simple-gallery-widget/. Here’s all the stuff from the readme file:

Really Simple Gallery Widget

Donate link: http://www.helenhousandi.com/wordpress/donate/
Tags: gallery, widget
Requires at least: 2.8
Tested up to: 3.1

Simple widget for displaying images attached to a specific post or page.

Description

Really Simple Gallery Widget adds a widget to display images that are attached to a post or page, no extra uploading or creating custom post types required. Especially helpful if you create photo gallery pages using the built-in WordPress gallery and just want to be able to display those images in a widget area.

Features

  • Add as many widgets as you want, wherever you want
  • Select a number of images
  • Select any registered size in WordPress
  • Display the images in ascending, descending, or random order
  • Show or hide captions
  • Link the images to the original file, post, anchor in the post, attachment page, or nothing
  • Add a prefix to the link and image title (appears as a tooltip)
  • Use a rel attribute for the link – great for lightboxes

Installation

Really Simple Gallery Widget is most easily installed automatically via the Plugins tab in your blog administration panel. Go to Appearance -> Widgets to set one or more widgets up.

Manual Installation

  1. Upload the really-simple-gallery-widget folder to the /wp-content/plugins/ directory
  2. Activate the plugin through the ‘Plugins’ menu in WordPress
  3. Head over to Appearance -> Widgets to set up one or more Really Simple Gallery Widgets

Frequently Asked Questions

How do I get the ID for the post or page?
The easiest way is to mouseover or click an edit link for the post or page in question. The ID number will appear in the URL; e.g. http://yoursite.com/wp-admin/post.php?post=41&action=edit indicates that the ID of the post or page you want to reference is 41.

Why is the anchor link not working?
The anchor link relies on the ID that WordPress automatically generates when you insert an image with a caption. If you inserted the image manually or without a caption, the anchor won’t jump you to the spot in the page. The ability to specify an anchor may be added at a later time, or you can just add the ID (attachment_##) to the img tag.

I selected a registered size but the images are showing up huge or in the wrong size.
The images may be missing the thumbnails of that size and by default will pull the full size image instead. Try using Viper007Bond’s fantastic Regenerate Thumbnails plugin to create new versions for any new or changed image sizes.

Screenshots

Really Simple Gallery Widget options

Widget options

Sample display with prefixed title showing

Sample display with prefixed title showing

Changelog

1.0

  • First version

Hide Admin Bar Search is now in the WordPress Plugin Directory

Woohoo, 1.0! Basically the same as my earlier post, with a little cleanup and some readme.txt action: http://wordpress.org/extend/plugins/hide-admin-bar-search/

Fresh from the readme:

Hide Admin Bar Search

Contributors: helenyhou
Tags: admin bar
Requires at least: 3.1
Tested up to: 3.1

Small plugin to hide the search box in the admin bar in both dashboard and site views.

Description

Hide Admin Bar Search is a small plugin that hides the search box in the 3.1 admin bar in both the dashboard and front-end site views. Useful for those who are not using the built-in WordPress search in the usual way or anybody who wants a more minimal admin bar.

Installation

Hide Admin Bar Search is most easily installed automatically via the Plugins tab in your blog administration panel. Activate to hide the search box – no settings required.

Manual Installation
  1. Upload the `hide-admin-bar-search` folder to the `/wp-content/plugins/` directory
  2. Activate the plugin through the ‘Plugins’ menu in WordPress
  3. Enjoy your cleaner admin bar

Frequently Asked Questions

Why would I want to do this?

The admin bar search uses the default WordPress search. If you are not using that search, or if you just want the admin bar to be more minimal, this is for you.

Can I choose to show the search box in the dashboard or site view?

Not at this time – this plugin is meant to be as simple as possible.

Changelog

1.0
  • First version

Hiding the search form in the 3.1 Admin Bar

I love the new admin bar in WordPress 3.1, but the search box just isn’t needed for Eastman thanks to a combination of things. For the Eastman site, we are not using the built-in WordPress search in the usual way. We are also not directing all searches through Google, so having search.php just completely redirect doesn’t. We also already have a site search box in the header, anyway, so it’s kind of redundant (even if it’s just web editors who are seeing the admin bar search).

I looked into the rendering code for the admin bar and didn’t see a hook to manipulate the search box like there are for other menu items. This seems rather unfortunate to me and I may ask the question on wp-hackers later on tonight to see if I’m missing something, but I figured I could probably use CSS to hide it for now. I mean, it’s not like ESM web editors are going to use Firebug and resurrect the form (and I’d have to admit that I’d be really impressed if any of them could do it), and it’s not like the search itself is nonfunctional, it just doesn’t quite behave the way you think it might when searching the entire site. Now, because I want to create a consistent experience, I want to be sure that the search box doesn’t show even if the rare network site uses a different theme, so I figured I’d make a simple plugin and network activate it. So, here goes the plugin:

<?php
/*
Plugin Name: Hide Admin Bar Search
Plugin URI: http://www.helenhousandi.com/wordpress
Description: Uses CSS to hide the search box in the admin bar. Helpful if you don't use the built-in WordPress search like usual.
Version: 1.0
Author: Helen Hou-Sandi
Author URI: http://www.helenhousandi.com
*/

if ( !function_exists('hide_admin_bar_search') ) {
	function hide_admin_bar_search () { ?>
		<style type="text/css">
		#wpadminbar #adminbarsearch {
		display: none;
		}
		</style>
		<?php
	}
	add_action('admin_head', 'hide_admin_bar_search');
	add_action('wp_head', 'hide_admin_bar_search');
}

What we are using the built-in search for: the News Room (a category) and Faculty (a custom post type). The one for Faculty does something pretty cool – to be written about more at another time.