Warning: Creating default object from empty value in /home/planetozh/planetozh.com/blog/wp-content/plugins/paged-comments/paged-comments.php on line 31

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /home/planetozh/planetozh.com/blog/wp-content/plugins/paged-comments/paged-comments.php:31) in /home/planetozh/planetozh.com/blog/wp-content/plugins/yourls-wordpress-to-twitter/plugin.php on line 73

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/planetozh/planetozh.com/blog/wp-content/plugins/paged-comments/paged-comments.php:31) in /home/planetozh/planetozh.com/blog/wp-content/plugins/yourls-wordpress-to-twitter/plugin.php on line 73

Warning: Cannot modify header information - headers already sent by (output started at /home/planetozh/planetozh.com/blog/wp-content/plugins/paged-comments/paged-comments.php:31) in /home/planetozh/planetozh.com/blog/wp-content/plugins/wp-super-cache/wp-cache-phase2.php on line 62

Warning: Cannot modify header information - headers already sent by (output started at /home/planetozh/planetozh.com/blog/wp-content/plugins/paged-comments/paged-comments.php:31) in /home/planetozh/planetozh.com/blog/wp-content/plugins/ozh-who-sees-ads/wp_ozh_whoseesads.php on line 630

Warning: Cannot modify header information - headers already sent by (output started at /home/planetozh/planetozh.com/blog/wp-content/plugins/paged-comments/paged-comments.php:31) in /home/planetozh/planetozh.com/blog/wp-content/plugins/ozh-who-sees-ads/wp_ozh_whoseesads.php on line 631

Warning: Cannot modify header information - headers already sent by (output started at /home/planetozh/planetozh.com/blog/wp-content/plugins/paged-comments/paged-comments.php:31) in /home/planetozh/planetozh.com/blog/wp-content/themes/planetozh/functions.php on line 172

Warning: Cannot modify header information - headers already sent by (output started at /home/planetozh/planetozh.com/blog/wp-content/plugins/paged-comments/paged-comments.php:31) in /home/planetozh/planetozh.com/blog/wp-content/themes/planetozh/functions.php on line 173
2008 Plugin Competition Review, Part 2 of 2 « planetOzh
In: , , ,
On: 2008 / 08 / 08 Viewed: 46471 times
Shorter URL for this post: http://ozh.in/iu

Here is part 2 (of 2) of my "reviewing", mostly from a plugin coder's point of view, the plugins running in the WordPress Plugin Competition.

Please, please and puh-leaaase, if you are a contestant and if you didn't read Part One, do read it before you proceed to part 2. There is a mandatory disclaimer that you and me don't want you to miss before you read any comment I could have made on a plugin of yours :) Thanks in advance. Now, let's go:

Picture Increment Cron System

Picture Increment Cron System turns a collection of pics inside a directory into one post a day
Fun idea. Alas, the plugin is encrypted with Zen Guard, which makes its source completely obfuscated and unreadable, which is in itself enough reason for me not to install a plugin. By the way, I think this infringes the Plugin Competition guidelines, as well as the WordPress plugin repository, which require plugins to be GPL compatible.
Yuck. Sucks.

Post Tabs

post Tabs splits posts into a tabbed interface
That is a rather cool idea that will probably find its audience. I could easily use something similar on my blog, for instance on plugin pages where I would have a first tab about the plugin concept, a second tab about detailed documentation, then a tab about download and install instruction, and finally a tab with a FAQ.
Good stuff: all the admin part is in a separate file that doesn't load in memory when someone views the public part of the blog. The 13 saved options of the plugin are all in the same DB entry. The code is fairly clean and well commented.
Weird stuff: all the javascript is old school code that seems to have escaped from a 1998 web page. I mean, I thought everybody was in love with jQuery nowadays, right? The color picker is pretty ugly too, with a very limited set of colors.
Bad stuff: hardcoded path to the plugin directory, nothing is sanitized or checked before being stored in options.
Improvable stuff: all the javascript could be improved and made less obstrusive, with behaviors added to span elements instead of making up links with href="javascript:something". This would also allow for more degradable stuff when javascript is turned off, instead of having hidden tabs you cannot read. The whole stuff could be more "semantic" too: having an unordered list of tab names followed by divs containing the tab contents seems ugly to me and will be unreadable when printed or with a screen reader. All the javascript should load only if a post on the page needs it, instead of being unconditionally added into the page <head>.

Role Scoper

Role Scoper lets you define roles and groups to manage privileges amongst several users
This seems to be a very ambitious plugin that will seriously help multi user blogs. To be honest I didn't test it and gave a quick glance at the code, which looked clean and very well commented, but this is obviously not a plugin you can really judge in a few minutes.
What I did like though, and hence this mini review despite my lack of insightful comments, is the explanations, their content and their tone. Very well put, clear, detailed but not overwhelming. Or maybe it's just that this plugin rang some bell in me? I'm pretty sure that this plugin will be something I'll remember and point to when I get questions about role managing.

SEO Smart Links

SEO Smart Links automatically interlinks your posts and pages on keywords matching category, or tags, or posts names
To be honest, whenever I see a plugin with "SEO" in its name, I want to trash it. While a small fraction of people truly understand SEO, everybody and their mother seem to have awesome ideas and invent new tricks. Want to make a popular plugin? Use this pompous keyword and you're almost done.
OK, enough for the rant, what about this plugin anyway ?
Coding style is so-so, with a lot of indenting inconsistencies and no comment to help the reader understand what's going on. The plugin seems to add between 1 and 4 queries to every post displayed, depending on options, but also seems to hopefully use WP built in query cache to reduce impact.
Generated links are either with target="_blank", which is a pain to me as a reader, or nofollowed, which has exactly zero SEO impact. I don't get why on Earth you would chose between these two modes and why they should be mutually exclusive.
The plugin seems to be a potential candidate for update problems via WordPress' notifier: depending on where you look (plugin name, directory or plugin filename), the name is either "SEO Smart Links", "SEO Links" or "SEO Automatic Links", which is not the best way to ensure that WP will always detect when a new version is available (at least according to my empiric observations)
On the plus side, I'll mention that all options are stored within, everybody says it loud with me, just one DB entry.
All in all and despite my negative remarks, probably not a bad plugin. I just can't help having negative feelings towards the implied "man you're gonna get so goodly rank0red in Google you won't beeleeeeve it !!!1"

Show Me Options

Show Me Options detects the URL to a plugin option page when you activate it (no more wandering through Settings then Manage then Plugins to find the darn submenu)
This plugin is a gem.
Even if you shouldn't really need it (I mean, you're all using Admin Drop Down Menus now, right? so searching for a submenu is just a matter of hovering), this is the kind of short plugin that provides just a little help, in just one place, just sometimes, but that will make the whole experience more pleasant. This is the kind of plugin that adds features that don't look like plugin features: they look like something WordPress does, or should do, out of the box.
I would move everything to a conditionally included file that would load only if (is_admin()), but the plugin is so short that it's negligible. I would also hook with 'load-plugins.php' instead of 'admin-head'. The biggest complaint I have here would be to add more inline commenting, but again, this is a short plugin.
The whole job is done in a smart way. Or at least it must be fairly smart, since I cannot think of any other simple way to do so, and I probably would have not find any simple way at all to do it if someone asked me to code something similar.
Things are not perfect, since the plugin will be fooled by plugins which add multiple pages (one under Manage and another one under Settings for instance) but things will be fine in most cases.
Overall: a simple feature, a short plugin, a great result. No fancy stuff, no amazing interface, nothing that looks like it needed 3 months of work and a ton of files, just a simple idea to improve a simple task with a very smart piece of code. I really like it.

Simple Flash Video

Simple Flash Video does something with Flash videos. I guess.
I didn't review nor try this plugin, but want to highlight something very important when designing a plugin: once you're pleased with your code and the features, don't botch up the packaging, ie the page that will "sell" the plugin. Don't let people (or competition judges) guess what your plugin is about, tell them.
This plugin page lacks a clear brief intro that will say "this plugin does this and that, and it's cool because of this and this". All you see is at first glance is irrelevant information, and features. Features are important to highlight, but it's not the first thing you want to tell. The first stuff your page has to be about is… what your plugin is about. Starting by features is like saying to a potential customer "my product has 4 wheels!" when this customer doesn't even know if you're talking about a car, a quad bike or a wheelchair.

Snazzy Archives

Snazzy Archives displays your blog archives as a compelling mosaic of text and images
The result of this plugin is quite aesthetic, inspired by the way Tumblr displays post archives. The plugin in itself is mostly CSS and JS, the PHP part of it is minor and trivial, yet neatly done: using shortcodes, adding JS and storing options are done the way they should.
The Javascript work might be a bit incomplete, as for instance all the "toggle" links seem to do nothing on my Firefox, but I have to admit that the result is pretty anyway.
Here on this blog, the result out of the box was totally terrible, so I think depending on your theme you might have some CSS work for better integration. Will look best on blogs embedding a lot of images.

Tabbed Widgets

Tabbed Widgets enhances sidebar widgets with visual "Tabs" or "Accordions" effects
As far as I can tell about the code, this is mostly state of the art coding. Everything is clean, wrapped into a class, with correct use of API functions to inject javascripts and everything. The few improvements I can suggest are the use of nonce functions and sanitizations of options before they're stored, a more WP 2.6 compliant way of guessing the plugin's path, and moving admin stuff into a separate file that won't load in memory when viewing a blog page.
As expected from anything by Kaspars, the interface of the plugin is sexy and appealing. I would suggest a more dynamic way to add widget wrappers, instead of having by default 8 blocks each containing 6 rows. As of now, that makes a lot of empty spaces, and a gazillion "Update Options" button that might be a bit scary.
I don't exactly have a smart suggestion about it, but I think it would be better if the whole stuff was more integrated with the Widgets page, rather than having to deal with 2 pages (Widgets and Tabbed Widgets). Something like adding at the bottom of the Widgets page a field for "How many Tabbed widgets to you want?" and creating new widgets accordingly.
All in all, a very clean and pleasant plugin.


tWPtter allows you to publish short posts via a widget or a page within your blog, or via email
The first things that popped in my head were: Wow, fun name, how the f*ck you pronounce that? Wow, totally cool logo. Things start really better when you go "wow" on first sight :)
Then I started to "de-wow" a bit since I could find a download link on the page. Honestly, I had to view the page source, search for "download", to find out that the tiny link was totally hidden under an ad. There has to be a better way to do this!
The code is compact, more or less randomly indented and difficult to read. The usual mistakes are there: each option generates one entry in wp_options, plugin path is hardcoded, the author didn't understand how plugin translation works (it's not just using _e($string))
The plugin is cute and probably fun to use, but from a coder's perspective could be improved a lot. Which wouldn't make it any cuter or more fun to use, actually, but you know, geeks, they like when everything under the hoods is neat and ordered :)


Vent is an event manager that uses the scheduled posts functionality to manage future events
This plugin looks like a piece of serious work, in a field (managing events) that will certainly meet an audience.
Very nice code, clean, commented, structured. As everything is already splitted into a public and an admin class, it would make sense to even put these classes into separate files so the admin functions wouldn't load and compile when viewing the blog. Really nothing more to say about the code as this is obviously a pretty big work that can't be evaluated in a few minutes.
What I want to outline here, once again, is the plugin page. Clean and clear, with a small screenshot of all the key aspects and features of the plugin: by the time you've read the page, you already have the feeling you've started using the plugin.
This really looks like an impressive plugin, with smart integration of its features into the existing admin pages (namely, the Write page)

WP 125

WP 125 is a 125x125pixels ads management plugin
Code is ugly and totally unindented, if such a word exists. Let me be clear on something that may not be obvious for everybody: having clear, commented and neatly indented code is not just a geek useless odd mania, it's a must have for maintainable code. A few months after you've written a plugin, you mostly forgot how things run, how you handled this damn problem or how super smart was your super long regexp. After a few months, you need your code to be easily readable.
Coding wise, the plugin seems to be improvable in several areas. There's a click tracking function that stores into a MySQL table something right from the $_GET parameter without any sanity check, which is a loud call for exploit. There's an install function triggered by plugin activation, that's fine, but the install file gets included anyway on every page view, that's a waste. Same thing for the admin menu stuff: they are in a separate file, fine, that's always included, not fine.
The plugin creates 2 tables, one for ads and one for settings. Having a table for ads is probably a good idea, since you'll probably want to keep track of a lot of thins. But creating a table for options doesn't look like a good idea to me: this will add an extra query on every page view, to read options, and this query would be avoided using wp_options to store them. Queries are expensive, always code as if you were paying for each one.
Feature wise, I think the plugin lacks a bridge with Paypal to automate billing, in order to truly save time on cumbersome tasks.

WP Comment Remix

WP Comment Remix adds functions and options to the default WordPress commenting system.
This plugin appears to borrow some code and ideas from my own Absolute Comments as well as throwing a few other features in the mix.
The lack of file and directory structure in the archive is a bit overwhelming: that's 20 files in the same directory, JS, CSS, .mo and .php all partying together. I find things easier to maintain and understand when files are logically put and ordered. Other than that, the code is very clean and well commented.
This is by far a too complex plugin to be reviewed here: too much code to ponder, too much features to test, a two paragraphs review wouldn't do it justice, and given that I'm the author of a plugin in this field, I have a pretty established opinion of what lacks and what would be cool. I will definitely have a later deeper look at this plugin when I have some time (maybe I'll end up borrowing a few ideas as well!) but after a 3 minutes run on my test blog, I gave it its 5 stars.
Given the audience this plugin meets (basically: anyone with a WP blog), this well may be a winner for the plugin competition.

WP Easy Uploader

WP Easy Uploader lets you upload themes, plugins and anything from within WordPress
Code looks serious at first glance: clean, using nonces and paying attention to user privileges, things that are a must when you are dealing with a plugin that, basically, will let you overwrite your wp-config.php if you say so.
The PEAR files inclusion may be troublesome on a few installs because of the way they are included (not using a full path to the files, but instead toying with ini_set(), which can be unavailable for security reasons). The choice of getting some PEAR library files to handle some parts of the job seems sensible to me, as they are probably fairly tested, secure and maintained.
The plugin might lack some file browsing functions (like, when you want to delete or move something you've just uploaded) but that would broaden its actual scope (it's supposed to be just an uploaded after all).
Overall : a plugin I would probably not use or recommended because of the scary factor (any security hole in this plugin would be disastrous) unless it would go through a serious security review, but this does really look like a very nice job.

WP Wall

WP Wall adds a commenting "wall", just like in your sister's Facebook profile
Yet another plugin from Vladimir Prelovac who appears to be running something like 285 plugins in this competition.
Regarding the plugin code, same comments as from previous Vladimir's plugins apply (read for instance my thoughts on Live Blogroll).
This wall uses the commenting system to handle replies: that means that spam, moderation and managing in general will be done by WP and any Comment plugin you may run, which is a smart choice. Walls are an easy target for abuse and spam, so you'd better not try to re-invent the wheel here.
If I had to use a Wall plugin, or when asked about one, I'll head to this plugin.

And that's it

Overall it's been fun to have a look at all the plugins. I like to compare how coders do things and I would have done them, and how ideas and codes can cross-pollinate to get better.

Thanks for reading if you did, but first of all thanks for participating in the contest and for coding plugins. And of course, thanks to the contest staff, I know how hard it will be to judge and rate all the plugins. This competition far the best moment of the plugin year, I hope I'll be able to throw some plugins in next year!

Shorter URL

Want to share or tweet this post? Please use this short URL: http://ozh.in/iu


This entry "2008 Plugin Competition Review, Part 2 of 2" was posted on 08/08/2008 at 5:13 pm and is tagged with , , ,
Watch this discussion : Comments RSS 2.0.

12 Blablas

  1. 1
    Jason DeVelvis United States »
    wrote, on 08/Aug/08 at 5:24 pm # :

    Hi Ozh, thanks for the review of WP Comment Remix

    You know, when I started coding it, it wasn't supposed to have so many files, so I though "I'll just put them in directories later…" Unfortunately, a few files turned into lots of files, and later turned into never, and here we are :)

    I'm glad you like it, and thanks for the 5 stars!

  2. 2
    Josh Chesarek United States »
    wrote, on 08/Aug/08 at 5:31 pm # :

    I guess wanting a description at the top makes sense. I have moved the about section from below the demo code to the top of the page.

  3. 3
    Ozh France »
    wrote, on 08/Aug/08 at 5:42 pm # :

    Wow, you guys were camping on my blog waiting for part 2 or what ? :)

  4. 4
    Josh Chesarek United States »
    commented, on 08/Aug/08 at 5:47 pm # :

    Ping backs… they are quick… Sorry that you were not able to review my plugin but it was probably best. I have a love hate relationship with programming but I needed something that worked for me and it did not exist. As such the code is not like poetry as one would hope but rather like a piece of fine grit sandpaper. I am hoping to find the time to re-write the plugin from the ground up properly so others will find it easier to follow.

  5. 5
    Barry Spain »
    commented, on 09/Aug/08 at 12:17 am # :

    Hey Ozh
    Thanks for the kind words for Vent. I do get a bit carried away with my plugin page descriptions sometimes :)

    I was surprised you didn't enter this year. I was looking forward to seeing what you would come up with.

  6. 6
    TIAFO Team China »
    replied, on 09/Aug/08 at 3:14 am # :

    Hi Ozh,

    We are big fans of your work over here at TIAFO. On our personal blogs we use many of your great plugins.

    The code of our plugin is indeed obfusticated. We did that for many reasons, the main one was that we released a plugin under a different name once and within a week we found 3 other versions of it with little to no change to our original code and not a single hat tip back to us. It kind of pissed us off that we went through all that work just to have it so easily and blatantly taken credit for by others.

    In any case, we do have a new version of this plugin coming out in the next few days. It will have a ton of new features. Also, we have a companion plugin coming out as well in the next few days that should prove fun for a lot of bloggers out there.

    In any case, than you for the review and keep up the outstanding work that you are famous for.

    TIAFO Team

  7. 7
    Chris Jean United States »
    thought, on 09/Aug/08 at 4:23 pm # :

    I'm glad that you reviewed my WP Easy Uploader plugin Ozh. I'm a big fan of your blog and your projects and have used information I've learned from you on numerous occasions as I've developed my plugins.

    I really appreciate the comments about potential problems and will use that information to work on future versions. I'll use methods other than ini_set() to load the includes and will look at ways to protect the core WordPress files from overwriting. I'm also working on having the uploads bind to the Media Library so that they are accessible for use later and deletion.

    Thanks again for the review.

  8. 8
    redwall_hp United States »
    commented, on 09/Aug/08 at 5:15 pm # :

    Thank you for your comments on WP125. I will most certainly look into them and work at improving the plugin. Especially your security and performance concerns.

    As for the indents, that's something I really need to start doing again. I used to indent by code "properly" but got out of the habit for some reason. I don't have much trouble reading and maintaining it most of the time, but I do think it would help if I forced myself into the habit of indenting again.

  9. 9
    Leo Germani Brazil »
    commented, on 10/Aug/08 at 7:34 am # :

    Im very happy to know that someone spent time testing the plugin and reading the code. Your review is very objective, technical, fair and helpful. thanks!

    Yes, it is oldschool javascript!

    Thanks for the tips! I know I need to update my code style, this was a good incentive.

    One thing you might have not noticed: I played a little with the CSS and the plugin does display properly when you want to print the post/page. The top ul disapears, and all the tabs are displayed as if each of them was a normal paragraph, each one with its own title. The same behavior is also applied to rss feeds. Basically every time the content is loaded without the attached css, it will display properly.

    About the color picker, I just look for one I could use. I would also like a better one.



  10. 10
    Twincascos Spain »
    replied, on 09/Nov/08 at 3:55 am # :

    Love the reviews,
    first question if I may.
    how do you do this? : javascript should load only if a post on the page needs it, instead of being unconditionally added into the page

  11. 11
    Ozh France »
    said, on 09/Nov/08 at 3:55 pm # :

    Twincascos ยป Read http://planetozh.com/blog/2008/04/how-to-load-javascript-with-your-wordpress-plugin/

  12. 12
    8+ Things You’d Like To Know Just ... United States »
    pingback on 13/Dec/08 at 1:22 am # :

    […] Not spidered: Ozh reviews the WordPress Plugin Competition 2008: Part One and Part 2 of 2. […]

Leave a Reply

Comment Guidelines or Die

  • HTML: You can use these tags: <a href=""> <em> <i> <b> <strong> <blockquote>
  • Posting code: Post raw code (no <> &lt; etc) within appropriate tags : [php][/php], [css][/css], [html][/html], [js][/js], [sql][/sql], [xml][/xml], or generic [code][code]
  • Gravatars: Curious about the little images next to each commenter's name ? Go to Gravatar.
  • Spam: Various spam plugins on patrol. I'll put pins in a Voodoo doll if you spam me.
  • I will mark as Spam test comments, all comments with SEO names (ie "My Cool Online Shop" instead of "Joe") or containing forum-like signatures.

Read more ?