{"id":510,"date":"2007-04-08T17:20:29","date_gmt":"2007-04-08T22:20:29","guid":{"rendered":"http:\/\/www.bytebot.net\/blog\/archives\/2007\/04\/08\/wordpress-plugin-architecture-makes-it-great-but-a-long-way-to-go-for-release-engineering"},"modified":"2007-05-11T21:43:29","modified_gmt":"2007-05-12T02:43:29","slug":"wordpress-plugin-architecture-makes-it-great-but-a-long-way-to-go-for-release-engineering","status":"publish","type":"post","link":"http:\/\/www.bytebot.net\/blog\/archives\/2007\/04\/08\/wordpress-plugin-architecture-makes-it-great-but-a-long-way-to-go-for-release-engineering","title":{"rendered":"WordPress: Plugin architecture makes it great, but a long way to go for release engineering"},"content":{"rendered":"<p>I especially enjoyed reading Steve Yegge&#8217;s blog rant, titled <a href=\"http:\/\/steve-yegge.blogspot.com\/2007\/01\/pinocchio-problem.html\">The Pinocchio Problem<\/a>. If you haven&#8217;t read it, you should, as he believes that world class software systems have two things in common: an <strong>extension language<\/strong> and a <strong>plug-in system<\/strong>.<\/p>\n<p>Updating WordPress a couple of days ago (this is now becoming a regular chore, spanning over 14 steps, not all of which can be automated (deactivating plugins, reactivating them in the correct fashion to not watch them bomb), I was thinking about the WordPress plugin architecture. Its very nifty, allowing one to make WordPress just rock totally harder. Some that I can&#8217;t live without are:<\/p>\n<ul>\n<li>The <a href=\"http:\/\/www.mutube.com\/projects\/wordpress\/adsense-manager\/\">AdSense Manager<\/a> &#8211; after implementing the Sidebar Widgets plugin, this is now a necessity, otherwise I won&#8217;t get AdSense on the sidebars<\/li>\n<li><a href=\"http:\/\/akismet.com\/\">Akismet<\/a> &#8211; I hate spam, and I&#8217;m sure, you do too<\/li>\n<li>del.icio.us widget &#8211; its always nice sharing what I read with all of you, thanks to the Sidebar Widgets<\/li>\n<li><a href=\"http:\/\/orderedlist.com\/wordpress-plugins\/feedburner-plugin\/\">Feedburner Feed Replacement<\/a> &#8211; redirects my default rss feed, to feedburner<\/li>\n<li><a href=\"http:\/\/donncha.wordpress.com\/flickr-widget\/\">Flickr Widget<\/a> &#8211; with the Sidebar Widgets, there&#8217;s no way I&#8217;m displaying the usual flickr widget, without maintaining an out-of-tree sidebar.php, which I don&#8217;t want to be hacking on regularly<\/li>\n<li><a href=\"http:\/\/svn.wp-plugins.org\/widgets\/trunk\">Sidebar Widgets<\/a> &#8211; very cool stuff, that you see on WordPress.com, finally for all of our consumption<\/li>\n<li><a href=\"http:\/\/www.ilfilosofo.com\/blog\/wp-db-backup\">WordPress Database Backup<\/a> &#8211; because sometimes, dumping the database bores me<\/li>\n<\/ul>\n<p>The plugin system probably makes WordPress one of the best pieces of blogging software out there. In fact, WordPress has made <a href=\"http:\/\/photomatt.net\/\">Matt<\/a>, the most popular Matt in Google! The sheer energy of all the folk using and developing on WordPress is amazing, as I witnessed at the inagural <a href=\"http:\/\/2006.wordcamp.org\/\">WordCamp 2006<\/a>.<\/p>\n<p>It amazes me, that companies regularly, commercially offer WordPress <a href=\"http:\/\/wordpress.org\/hosting\/\">hosting<\/a>. They come up with these &#8220;1-click installs&#8221; and upgrades, that I&#8217;m wondering what I&#8217;m doing wrong with upgrading WordPress regularly. Sure, most of the 14 steps I stated earlier, include silly things like cd&#8217;ing to the correct directory, moving it and so on &#8211; all of which are script-able. But the plugin deactivation, and correct activation (like, you don&#8217;t want to start the Flickr Widget without the Sidebar Widgets, which would seem the alphabetical thing to do, but clearly make the plugin system whinge), as well as running the upgrade itself, happens via a Web browser. Manual intervention to me, sucks.<\/p>\n<p>Now, on to release engineering. We users get a lot of WordPress releases. A PHP blogging system, looks like it can be a lot of work, if you&#8217;re going to manage multiple blogs. Or websites &#8211; I&#8217;m starting to see a lot of websites that are just blog based, with pages that link to &#8220;permanent&#8221; content. Companies are doing this, regularly now. I&#8217;m of the camp, that its a big mistake, as good &#8216;ole HTML is probably better for a website (fine if you need sidebars, a standard top toolbar, etc&#8230; &#8211; use Apache SSI, or a little amount of PHP templating). The announcement list, is one that everyone running WordPress should be on (ditto, with MediaWiki, but I&#8217;ll save that rant for another day &#8211; though most of what I mention about the plugin architecture, also plagues MediaWiki).<\/p>\n<p>A good plugin system, will have a mechanism to provide <strong>updates<\/strong>. Firefox has this &#8211; at the very least, when you upgrade Firefox, it looks for newer plugins. When you upgrade WordPress, you could still be running age old plugins. And when you manually check to see if these plugin versions match, sometimes the websites themselves aren&#8217;t too direct without you using your mouse and hovering over a link.<\/p>\n<p>I find some plugins critical &#8211; Akismet, so my comment spam level stays down, to a manageable state. I&#8217;ve been bitten by an update before, that I didn&#8217;t know about. Easy fix? The moment you feel you&#8217;re getting too much spam, visit the website to look for an update. Too manual for me. Just recently, the AdSense Manager &#8211; over a span of a couple of weeks, there have been two releases. One of which, is significant enough to warrant an update &#8211; the Google AdSense ID was not being passed to Google. Suddenly my traffic stats at Google, for the blog, seemed to drop to zero.<\/p>\n<p>What&#8217;s missing with WordPress, is a <strong>plugin updater<\/strong>. With release engineering such that one can run a SVN checkout version of the Sidebar Widgets, and have to visit a website to get the latest code from HEAD for the Flickr Widget, it would rock, if an updater regularly spidered the SVN repository and informed you if there was a new release, or something sitting in HEAD (okay, trunk, whatever).<\/p>\n<p>Technorati Tags: <a href=\"http:\/\/technorati.com\/tag\/wordpress\" class=\"performancingtags\" rel=\"tag\">wordpress<\/a>, <a href=\"http:\/\/technorati.com\/tag\/rant\" class=\"performancingtags\" rel=\"tag\">rant<\/a>, <a href=\"http:\/\/technorati.com\/tag\/plug-in\" class=\"performancingtags\" rel=\"tag\">plug-in<\/a>, <a href=\"http:\/\/technorati.com\/tag\/plugin\" class=\"performancingtags\" rel=\"tag\">plugin<\/a>, <a href=\"http:\/\/technorati.com\/tag\/adsense\" class=\"performancingtags\" rel=\"tag\">adsense<\/a>, <a href=\"http:\/\/technorati.com\/tag\/google\" class=\"performancingtags\" rel=\"tag\">google<\/a>, <a href=\"http:\/\/technorati.com\/tag\/google%20adsense\" class=\"performancingtags\" rel=\"tag\">google adsense<\/a>, <a href=\"http:\/\/technorati.com\/tag\/adsense%20manager\" class=\"performancingtags\" rel=\"tag\">adsense manager<\/a>, <a href=\"http:\/\/technorati.com\/tag\/flickr%20widget\" class=\"performancingtags\" rel=\"tag\">flickr widget<\/a>, <a href=\"http:\/\/technorati.com\/tag\/sidebar%20widgets\" class=\"performancingtags\" rel=\"tag\">sidebar widgets<\/a>, <a href=\"http:\/\/technorati.com\/tag\/wordpress%20hosting\" class=\"performancingtags\" rel=\"tag\">wordpress hosting<\/a>, <a href=\"http:\/\/technorati.com\/tag\/web%20hosting\" class=\"performancingtags\" rel=\"tag\">web hosting<\/a>, <a href=\"http:\/\/technorati.com\/tag\/update\" class=\"performancingtags\" rel=\"tag\">update<\/a>, <a href=\"http:\/\/technorati.com\/tag\/plugin%20updater\" class=\"performancingtags\" rel=\"tag\">plugin updater<\/a>, <a href=\"http:\/\/technorati.com\/tag\/spam\" class=\"performancingtags\" rel=\"tag\">spam<\/a><\/p>\n<div class=\"sharedaddy sd-sharing-enabled\"><div class=\"robots-nocontent sd-block sd-social sd-social-icon-text sd-sharing\"><h3 class=\"sd-title\">Share this:<\/h3><div class=\"sd-content\"><ul><li class=\"share-email\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"\" class=\"share-email sd-button share-icon\" href=\"mailto:?subject=%5BShared%20Post%5D%20Wordpress%3A%20Plugin%20architecture%20makes%20it%20great%2C%20but%20a%20long%20way%20to%20go%20for%20release%20engineering&body=http%3A%2F%2Fwww.bytebot.net%2Fblog%2Farchives%2F2007%2F04%2F08%2Fwordpress-plugin-architecture-makes-it-great-but-a-long-way-to-go-for-release-engineering&share=email\" target=\"_blank\" title=\"Click to email a link to a friend\" data-email-share-error-title=\"Do you have email set up?\" data-email-share-error-text=\"If you&#039;re having problems sharing via email, you might not have email set up for your browser. You may need to create a new email yourself.\" data-email-share-nonce=\"6fa1dc6ce9\" data-email-share-track-url=\"http:\/\/www.bytebot.net\/blog\/archives\/2007\/04\/08\/wordpress-plugin-architecture-makes-it-great-but-a-long-way-to-go-for-release-engineering?share=email\"><span>Email<\/span><\/a><\/li><li class=\"share-facebook\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"sharing-facebook-510\" class=\"share-facebook sd-button share-icon\" href=\"http:\/\/www.bytebot.net\/blog\/archives\/2007\/04\/08\/wordpress-plugin-architecture-makes-it-great-but-a-long-way-to-go-for-release-engineering?share=facebook\" target=\"_blank\" title=\"Click to share on Facebook\" ><span>Facebook<\/span><\/a><\/li><li class=\"share-linkedin\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"sharing-linkedin-510\" class=\"share-linkedin sd-button share-icon\" href=\"http:\/\/www.bytebot.net\/blog\/archives\/2007\/04\/08\/wordpress-plugin-architecture-makes-it-great-but-a-long-way-to-go-for-release-engineering?share=linkedin\" target=\"_blank\" title=\"Click to share on LinkedIn\" ><span>LinkedIn<\/span><\/a><\/li><li class=\"share-twitter\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"sharing-twitter-510\" class=\"share-twitter sd-button share-icon\" href=\"http:\/\/www.bytebot.net\/blog\/archives\/2007\/04\/08\/wordpress-plugin-architecture-makes-it-great-but-a-long-way-to-go-for-release-engineering?share=twitter\" target=\"_blank\" title=\"Click to share on Twitter\" ><span>Twitter<\/span><\/a><\/li><li class=\"share-end\"><\/li><\/ul><\/div><\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>I especially enjoyed reading Steve Yegge&#8217;s blog rant, titled The Pinocchio Problem. If you haven&#8217;t read it, you should, as he believes that world class software systems have two things in common: an extension language and a plug-in system. Updating WordPress a couple of days ago (this is now becoming a regular chore, spanning over [&hellip;]<\/p>\n<div class=\"sharedaddy sd-sharing-enabled\"><div class=\"robots-nocontent sd-block sd-social sd-social-icon-text sd-sharing\"><h3 class=\"sd-title\">Share this:<\/h3><div class=\"sd-content\"><ul><li class=\"share-email\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"\" class=\"share-email sd-button share-icon\" href=\"mailto:?subject=%5BShared%20Post%5D%20Wordpress%3A%20Plugin%20architecture%20makes%20it%20great%2C%20but%20a%20long%20way%20to%20go%20for%20release%20engineering&body=http%3A%2F%2Fwww.bytebot.net%2Fblog%2Farchives%2F2007%2F04%2F08%2Fwordpress-plugin-architecture-makes-it-great-but-a-long-way-to-go-for-release-engineering&share=email\" target=\"_blank\" title=\"Click to email a link to a friend\" data-email-share-error-title=\"Do you have email set up?\" data-email-share-error-text=\"If you&#039;re having problems sharing via email, you might not have email set up for your browser. You may need to create a new email yourself.\" data-email-share-nonce=\"6fa1dc6ce9\" data-email-share-track-url=\"http:\/\/www.bytebot.net\/blog\/archives\/2007\/04\/08\/wordpress-plugin-architecture-makes-it-great-but-a-long-way-to-go-for-release-engineering?share=email\"><span>Email<\/span><\/a><\/li><li class=\"share-facebook\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"sharing-facebook-510\" class=\"share-facebook sd-button share-icon\" href=\"http:\/\/www.bytebot.net\/blog\/archives\/2007\/04\/08\/wordpress-plugin-architecture-makes-it-great-but-a-long-way-to-go-for-release-engineering?share=facebook\" target=\"_blank\" title=\"Click to share on Facebook\" ><span>Facebook<\/span><\/a><\/li><li class=\"share-linkedin\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"sharing-linkedin-510\" class=\"share-linkedin sd-button share-icon\" href=\"http:\/\/www.bytebot.net\/blog\/archives\/2007\/04\/08\/wordpress-plugin-architecture-makes-it-great-but-a-long-way-to-go-for-release-engineering?share=linkedin\" target=\"_blank\" title=\"Click to share on LinkedIn\" ><span>LinkedIn<\/span><\/a><\/li><li class=\"share-twitter\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"sharing-twitter-510\" class=\"share-twitter sd-button share-icon\" href=\"http:\/\/www.bytebot.net\/blog\/archives\/2007\/04\/08\/wordpress-plugin-architecture-makes-it-great-but-a-long-way-to-go-for-release-engineering?share=twitter\" target=\"_blank\" title=\"Click to share on Twitter\" ><span>Twitter<\/span><\/a><\/li><li class=\"share-end\"><\/li><\/ul><\/div><\/div><\/div>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true,"jetpack_social_options":[]},"categories":[1],"tags":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p4vJD-8e","jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":2479,"url":"http:\/\/www.bytebot.net\/blog\/archives\/2012\/09\/05\/testing-the-wordpress-facebook-plugin","url_meta":{"origin":510,"position":0},"title":"Testing the WordPress Facebook plugin","date":"5\/9\/2012","format":false,"excerpt":"This is me testing the WordPress Facebook plugin. It was generally missed when I could sync posts to facebook notes, but I guess this is the first step for that to happen again. Great use of a lunch hour as I wolf down some grandma-made\u00a0malaysian-style chee cheong fun.","rel":"","context":"In &quot;General&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":751,"url":"http:\/\/www.bytebot.net\/blog\/archives\/2008\/03\/19\/on-the-importance-of-british-english","url_meta":{"origin":510,"position":1},"title":"On the importance of British English","date":"19\/3\/2008","format":false,"excerpt":"I like to spell with British English. Its probably because of my upbringing doing the O Level Examinations, at my high school. For the last few days that Mac was annoying me, so I found out how to have British English available for all my applications. System Preferences -> International\u2026","rel":"","context":"In &quot;General&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2169,"url":"http:\/\/www.bytebot.net\/blog\/archives\/2011\/07\/26\/make-sure-your-wordpress-plugins-are-up-to-date","url_meta":{"origin":510,"position":2},"title":"Make sure your WordPress plugins are up-to-date","date":"26\/7\/2011","format":false,"excerpt":"This is probably stating the obvious, but make sure your plugins in WordPress are up-to-date. You keep up with the latest WordPress releases (and you should -- there are lots of security fixes within releases), but you also have to make sure that the plugins are updated. I deploy some\u2026","rel":"","context":"In &quot;General&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":684,"url":"http:\/\/www.bytebot.net\/blog\/archives\/2007\/12\/18\/wordcamp-melbourne-making-money-with-wordpress-bbpress-caching-wordpress-sandbox","url_meta":{"origin":510,"position":3},"title":"WordCamp Melbourne: making money with WordPress, bbPress, caching, WordPress Sandbox","date":"18\/12\/2007","format":false,"excerpt":"On November 17 2007, I went to the inaugural WordCamp Melbourne. It was a truly interesting event - crowded, filled to the brim, and held at the pretty amazing Watermark Bar, in Docklands. It was a really warm day, and the only complaint would be that Watermark put is in\u2026","rel":"","context":"In &quot;General&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3209,"url":"http:\/\/www.bytebot.net\/blog\/archives\/2016\/04\/13\/major-post-ga-features-in-the-5-7-release","url_meta":{"origin":510,"position":4},"title":"Major post-GA features in the 5.7 release!","date":"13\/4\/2016","format":false,"excerpt":"Interesting developments in the MySQL world - it can now be used as a document store and you can query the database using JavaScript instead of SQL (via the MySQL Shell). There is also a new X Plugin (see: mysql-5.7.12\/rapid\/) (which now makes use of protocol buffers (see: mysql-5.7.12\/extra\/protobuf\/)). I\u2026","rel":"","context":"In &quot;MySQL&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":634,"url":"http:\/\/www.bytebot.net\/blog\/archives\/2007\/10\/02\/wordpress-23-wordpresswp_post2cat-error-is-sitemap-plugins-fault","url_meta":{"origin":510,"position":5},"title":"wordpress 2.3 &#8211; wordpress.wp_post2cat error is Sitemap plugins fault","date":"2\/10\/2007","format":false,"excerpt":"I updated Wordpress yesterday, so am currently trying out 2.3, Dexter. No major dramas, all, really thanks to the Automatic Upgrade plugin, which I've been using recently (second Wordpress version it's upgraded). One annoying bug, was seeing: WordPress database error: [Table 'wordpress.wp_post2cat' doesn't exist]. If only I'd read the release\u2026","rel":"","context":"In &quot;General&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"amp_enabled":true,"_links":{"self":[{"href":"http:\/\/www.bytebot.net\/blog\/wp-json\/wp\/v2\/posts\/510"}],"collection":[{"href":"http:\/\/www.bytebot.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.bytebot.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.bytebot.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.bytebot.net\/blog\/wp-json\/wp\/v2\/comments?post=510"}],"version-history":[{"count":0,"href":"http:\/\/www.bytebot.net\/blog\/wp-json\/wp\/v2\/posts\/510\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.bytebot.net\/blog\/wp-json\/wp\/v2\/media?parent=510"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.bytebot.net\/blog\/wp-json\/wp\/v2\/categories?post=510"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.bytebot.net\/blog\/wp-json\/wp\/v2\/tags?post=510"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}