It’s now been one year since Automattic acquired Gravatar. “Gravatar now lives on about 20 servers. 2 Database servers, 1 File server, 2 Load balancers, 5 Caching servers, 9 Web servers, and 1 Development server. That combination of servers is handling an average of 7,214 of your requests every second of every day. That’s a whopping 623,293,056 requests daily!” Wowza!
Tags: database, serverWow it’s really been 1 year since Gravatar joined the Automattic family. Time sure flies when you’re having fun!
Gravatar has come a long way from the service that it was back in October 2007. My wife likes to laugh at me because I’ll pick something up in one room, like a remote control, and move around the house fidgeting with it. Then I’ll absentmindedly leave it in some random place like the bathroom, or the freezer. One year ago we picked up a small struggling avatar service with a great name and an awesome fan base. Now, in an attempt not to leave it in a random location, we’re looking back on the last year (and letting you look with us.)
The service was running version 2.0, and set up on two rented (or collocated, I don’t honestly know) servers. The servers were running at loads of around 20, and could spike to well over 100 (that’s a lot.) It was obvious that we needed both some stop-gap fixes and a plan. The first thing we did was throw some caching servers in front of the service — a couple of varnish servers as I recall. This dropped the workload of the two boxes considerably, and allowed us to look at Gravatar without bringing the service down. Next we replicated the setup 1 for 1 to two of our own (more powerful) servers. This gave us a bit more breathing room. And we began to plan.
It was obvious, from the very beginning that the service was going to have to handle a constant torrent of requests from the internet. Most of those requests would be for email addresses with no Gravatar and come from URLs that could be crafted in an unlimited number of ways. On top of that we knew that we wanted to make all the paid features free, and expand the size a Gravatar could be from 80 pixels to 512 pixels. So basically instead of our goals being to make the undertaking less daunting we we’re actively making it a more intense challenge than it could have been. But that was OK with us, because our goals for Gravatar weren’t to make it easier but to make it better. We wanted to make Gravatar the kind of free service that we could use, would want to use, and would be proud to share with the world. I know that last bit sounds like marketing crap, but that’s really what we wanted to do and is really how we look at Gravatar.
Pretty much the next thing we did was port Gravatars code from RoR (Ruby on Rails) to PHP. As I mentioned when we announced this change the reason for this wasn’t about Ruby or Rails. Simply put we’re a PHP shop, and once rewritten in PHP we have many more great minds that we can easily throw at it than if it were still in RoR. Since we ported it *pretty much* directly from rails there are some left-over rails-isms in Gravatars code that you wont find in, say, WordPress. Shh…. Don’t tell Matt
In the rewriting we tried to tackle the largest scalability problems with the design of the service. You can imagine that for an avatar serving service… storing, searching, and serving avatars is paramount. Gravatar 2.0 (pre PHP) suffered from some pretty significant inefficiencies in this regard, and I think that a big part of that was limited resources (time and servers.) Luckily we we’re now not significantly limited by either of those things.
– warning beginning technical details which may be safely skipped over if you don’t care –
The way that images were stored originally was: a complete image was made for all sizes between 1×1 and 80×80 pixels, a directory made for each rating, and a symlink placed from the rating to the appropriate image (either the users image or the default image in case the rating was too high.) So that’s 80 images, 5 directories, and 240 symbolic links. The reason for this, I believe, was to attempt to serve the avatar content without any database interaction whatever. The files were then archived, uploaded to Amazon S3, and an entry added to Amazon SQS. Finally the SQS entry was retrieved by the serving server, the file downloaded, extracted, and placed on the filesystem. So this is why it took several minutes once you uploaded and cropped your image for you to be able to browse the rest of the site again. You can imagine how many files Gravatar was comprised of by the time we got a hold of it! We knew that this would simply NOT work for our new 512×512px avatar sizes. Lastly there were a couple of directories which had several hundred thousand entries (either files or other directories) which were nearly impossible to even get a listing inside of. So we had a list of things NOT to do. We just needed to figure out what TO do
So we decided that we would render all our avatars dynamically from the highest quality copy of the image we can manage… down. We would only store one version of the image, though we would store it in multiple places (a local file server for speed, and S3 for redundancy.) We would still rely heavily on caching. And we would asynchronize as much of the workload as was possible, so that you don’t have to wait for things to happen after you finish cropping (to do this we employed various techniques and hacks best left for another day and another story.)
– ok this batch of details has been concluded –
So the problems were many, one year ago, and the challenges were fascinating. I recall being overwhelmed by support requests for quite some time. I would get 40 emails on a good day, more on a bad. And believe it or not your emails very much shaped the future of Gravatar. I would group them into specific problems, and always fix at least the largest problem (volume wise) each week. Over time the service has grown quite stable, support requests have gone down to just a handful every day, and things are generally peppier than ever.
We had some some bumps tuning our caches… for a while there we accidentally told your web browsers never EVER to re-validate an image. But we got that handled in short order… and things are zipping along quite nicely.
Gravatar now lives on about 20 servers. 2 Database servers, 1 File server, 2 Load balancers, 5 Caching servers, 9 Web servers, and 1 Development server. That combination of servers is handling an average of 7,214 of your requests every second of every day. That’s a whopping 623,293,056 requests each and every day! 96% of all of those requests are served directly from cache. These days we get around 5,000 uploaded images every day. Even with this staggering increase in the number of requests we’ve been able to make Gravatar faster, and more reliable than it’s ever been.
So here we are, one year later, looking out over the vast frontier of the internet and contemplating the future of Gravatar. There are a great many things that it could become. We know that we don’t want to loose focus on the core of the project: Serving your avatars (that’s what it’s all about!)
We know that an avatar is “a graphical image that represents a person, as on the Internet,” But it’s also “an embodiment or personification, as of a principle, attitude, or view of life.” And that is exactly where we are headed: Making Gravatar a place where you can do more than just store an image, making it a place that can be your presence online. So we’ll be rolling out more features in the near future to allow you to store more data inside Gravatar — and more importantly to allow you to use that information in other places on the internet through open standards.
We hope that you’ve had as awesome a time using your Gravatars as we’ve had making it all work. And we look forward to the future — to when your identity doesn’t have to be cemented to a specific site, but is fluid and flexible, and persistent. We hope to see you there!
Cheers!
The Gravatar Team.
vBulletin 3.8.0 Beta 1 Released
75 Views Published 3 months ago in News and Announcements, vBulletin.orgvBulletin 3.8.0 Beta 1 Released
87 Views Published 3 months ago in vBulletin Announcements, vBulletin.comThe next installation in the bbPress 1.0 alpha series has been released. bbPress 1.0 alpha 2 introduces new features and fixes most of the issues raised by testers from the previous release.
A lot of the features were covered in a previous post. You can view the changes in bbPress between 1.0-alpha-1 and 1.0-alpha-2, as well [...]
(I had intended to get this posted early last week, but pushing all of the meetings, etc. from the week prior to WordCamp Utah to last week torpedoed that pretty effectively.)
WordCamp Utah was a great event - well organized by Joseph Scott (thanks Joseph!), well attended and with some very good speakers.
I gave a presentation about WordPress plugins. This was a challenging talk because of the vastness of the topic combined with the variety of the interest and technical background of the audience. Here are the slides.
Some folks seemed upset that I didn’t give a technical demo of how to build a plugin. However, I chose to keep the talk at a high level based on the make-up of the audience.
Instead of getting into the code, I talked about techniques and approaches, and different kinds of plugins. My intent was to give people an idea of what they can do with plugins; and a little start on how to approach writing one. We may change this at WordCamp Denver and have some technical presentations.
I also announced a couple of goodies at the end of the talk. We pulled an all-nighter on Friday getting everything ready for release. My presentation might have suffered a bit as a result.
We’ve released some development tools for other WordPress developers to use. These are things we’ve had to build over the years, and thought others could make good use of.
- WordPress Install (SVN Checkout) Script - a shell script will walk you through a checkout of multiple versions of WordPress from SVN and set up the requisite config file and database structure. This makes it easy to create a series of installs for testing purposes.
- WordPress Compatibility Plugin - sets some constants and some other little things that provide backward compatibility for older versions of WordPress.
- Quality Assurance (QA) Checklists - checklists to help guide plugin and theme testing. Includes considerations such as WordPress version, theme compatibility, browser type, WordPress settings, etc.
The biggest announcement - and the one I’m most excited about - was the Carrington theme, but I’ll have a follow-up post about that as there is just too much to cover here.
Thanks again to everyone who made WordCamp Utah a success.
<!–
–>
Tags: comments, database, plugin, release, test, testing, Wordpress, wpvBulletin Blog 2.0.0 Beta 3 Released
61 Views Published 3 months ago in Announcements, vBulletin FansvBulletin Blog 2.0.0 Beta 3 Released
59 Views Published 3 months ago in Announcements, vBulletin FansvBulletin Blog 2.0.0 Beta 3 Released
102 Views Published 3 months ago in Announcements, vBulletin FansvBulletin Blog 2.0.0 Beta 3 Released
75 Views Published 3 months ago in News and Announcements, vBulletin.orgWeblog Tools Collection: WordPress Plugin Releases for 10/06
110 Views Published 3 months ago in WordpressRaven’s antispam is a WordPress plugin, powerful and invisible fighter against comment spam.
This plugin shows you all active WP cronjobs (scheduled tasks) of your weblog in the “Site Admin” area and if you want, you can stop the cronjob(s)
FTP Plugin for WP Database Backup Plugin
This plugin adds a fourth way to save the database backup files of the WP Database Backup plugin. With the standard WP Database Backup plugin you can save the database tables of your weblog a file. This backup file can stored on the server of your weblog, send to an email account or saved (manually) to your local hard disk.
When you move WordPress to a new domain or directory, the permalinks are not updated. This plugin updates all permalinks. In addition, it also gives the user the option to update any links within posts and pages.
Allow your visitors to add articles to the sidebar or anywhere else. Complete with moderation panel and a settings page, you can sit back while you have full control about the look and articles that being posted.
Caption Disabler is a WordPress plugin that removes and disables captions feature in WordPress so that all caption shortcode is not been parsed or translated, and no and HTML entities are automatically added while editing or writing.
Add “reply” and “quote” features on each comment list.
Redirection is a WordPress plugin to manage 301 redirections, keep track of 404 errors, and generally tidy up any loose ends your site may have.
WP Double Opt-In List Management
This WordPress email list management plugin allows the visitors of your blog subscribe to your mailing list using a double opt-in method. The signup form (Email, Name and other fields) is placed on the WordPress blog sidebar. After a user fills in the form and clicks “Subscribe”, WP double opt-in plugin sends an email with the subscription confirmation link to the user.
Tags: database, features, manage, plugin, release, server, Wordpress, wpWeblog Tools Collection: Ian Stewart On Child Themes - Part 1
294 Views Published 3 months, 1 week ago in WordpressChild themes are a trend which appears to be gaining traction everywhere you look. Theme authors such as Ian Stewart, Justin Tadlock and Darren Hoyt are just a few of the influential people pushing this concept. In order to try and grasp an understanding of child themes, I interviewed Ian Stewart of Themeshaper.com. His responses were so long, this interview will end up being published in two parts. Here is part 1.
1. First off, could you please explain what Child themes are in the simplest way possible?
A Child Theme is a WordPress theme that installs and activates just like any other WordPress theme—with 2 crucial differences. Firstly, it requires no PHP template files of it’s own to work. That’s because it uses the template files of a defined Parent Theme. The Parent Theme must be installed—but not activated—in your blog’s themes directory for the Child Theme to work.
Secondly, as of WordPress 2.7, template files located in your Child Theme folder will be used instead of the template file in your Parent Theme folder. Don’t like how the header is coded up for a particular theme you want to edit? Copy the header.php file from your Parent theme into your Child Theme folder and make the change there. WordPress, as of 2.7, will look for header.php (or any possible template file) in the Child Theme first and use the Child Theme template file instead. This new feature in WordPress 2.7 makes custom theming really exciting and even easier.
It’s really very simple to make your own Child Theme. So simple, I can tell you and your readers how to do it right here in four ridiculously easy steps. It’ll help you get your head around using a Child Theme if you follow along (with a test blog—this’ll be easy but our test theme isn’t going to be pretty).
1. Make a folder in your blog themes directory called “achildthemetest”.
2. Create a “style.css” file in that folder with the following code copy-pasted into that “style.css” file.
/*
Theme Name: A Child Theme Test
Theme URI:
Description: Trying out a Child Theme with the classic theme
Author:
Author URI:
Template: classic
Version:
*/
/*
For the sake of simplicity we're going to import
the classic stylesheet and override the styles.
You don't have to do this though. You can just
start fresh with new CSS or copy over large chunks of
the original styles and edit them here.
*/
@import url(../classic/style.css);
/*
Now, for a demonstration, let's make all the anchors red.
*/
a {
color:red;
}
3. Refresh your blog’s theme directory in the WordPress admin. You should see a theme called “A Child Theme Test”. It’s using the classic theme as a Parent Theme. If you look at the code above you should see a line that starts with “Template” it’s there that we defined that Parent Theme as “classic”, the folder name of our Parent Theme (which could be any installed theme).
4. Activate your new Child Theme and check out your blog. Are all the links in the main content area red? Congratulations. You just made a WordPress Child Theme. You can now edit your WordPress theme of choice—in this instance, the Classic theme—through CSS alone without having to modify any of the original template files. (If you’re a more advanced WordPress developer you can also include a functions.php file in your Child Theme that lets you interact with WordPress and your themes just like a plugin. But that’s another story altogether.)
2. What are some of the benefits that child themes offer versus stand alone themes?
There’s 2 main benefits for the end user when it comes to using a Child Theme versus editing a theme directly: Simplicity and Upgrade-readiness. To explain, I’ll tell you why I use a Child Theme of my own theme, Thematic, on ThemeShaper.com. That’s right, I’m not even editing my own theme directly on my own WordPress Theme blog.
Firstly, it really is just simpler. I currently have only 2 files in my Child Theme folder: style.css and functions.php. Everything else is coming from the same Thematic template files anyone can download and use. When I want to change the look of my theme, I do it in style.css. If I want to get really serious with theme changes, like, plugin-serious, I write some simple code in functions.php. I don’t think about my Parent Theme and, excepting the XHTML it eventually outputs and displays in my browser, I don’t even look at it. Except! Except when it comes time to upgrade.
When I need to upgrade Thematic, my Parent Theme, I can do so without worries. That’s because I haven’t touched the original template files. I haven’t edited the header. I haven’t edited the footer. I haven’t edited single.php. Or index.php. All my theme edits have been made in the stylesheet and functions file of my Child Theme.
Look at it this way: I have another blog I manage with a really fresh and distinctive design that I get compliments on all the time. Unfortunately, I made that design by hacking up and heavily modifying The Sandbox version 0.6. If I wanted to upgrade to a newer version of The Sandbox I’d have to recreate that design. That means I’d have to pull the theme apart, find all my changes, and reintegrate it with a newer version of the theme. If I’d made the modifications in a Child Theme upgrading would mean uploading a newer version of The Sandbox and, well, that’s it really. How long does it take to upload a theme? 10 seconds? When you’re using a Child Theme, upgrading turns from a day long affair into a 10 second chore that can be done while you’re reading weblogtoolscollection.com.
3. Based on what I’ve seen, the child theme trend is really starting to gain traction thanks in large part to you and other theme designers. How long has the ability to develop child themes been available for WordPress? If it’s been available to develop for some time now, why is it that we are only now starting to see heavy development in this area?
As far as I can tell, Child Themes have been available since version 2.1. But I first heard about Child Themes when I entered the Sandbox Designs Competition (http://sndbx.org/). Every entry there is a Child Theme that defines The Sandbox as it’s Parent Theme and modifies the theme with CSS alone. Consequently, I think a lot of the credit for popularizing Child Themes needs to go to Scott Wallick (http://www.plaintxt.org/), co-creator of The Sandbox and organizer of the Sandbox Designs Competition.
But that brings us to why I don’t think there’s been much talk about Child Themes: I think there’s sort of a lack of faith amongst theme authors and users when it comes to what you can actually do with CSS. WordPress developer and theme author Ben Eastaugh thinks that “one reason it hasn’t been more widely publicized is that [modifying Parent Themes with CSS] wasn’t, as it stood, terribly useful” (http://extralogical.net/2008/08/theme-inheritance/). I’d disagree with that in principle but that sort of sums up the feeling of theme authors that have been ignoring this feature.
And, by the way, if you don’t think Child Themes can really do anything with CSS alone make sure you check out the winning entries in The Sandbox Designs competition (http://sndbx.org/results/) or the oft-mentioned and linked to CSS Zen Garden (http://www.csszengarden.com/).
But regardless of what you think you can do with CSS alone, now that WordPress 2.7 let’s you overwrite Parent template files from your Child Theme I expect we’ll be seeing more and more people using them.
Plus, there’s a few other WordPress developments in the works that’ll likely further popularize this method of theme modifying. Namely, the WordPress.com Themes Marketplace and allowing GPL Child Themes to be released through the WordPress Theme Directory.
4. Before we move on, could you explain what a theme framework is? Perhaps providing a few examples for the readers.
In my mind, a Theme Framework would be a theme that, at the very least, was made with clear intentions of being used to develop further themes. A starting point theme if you will. I think a good Theme Framework also shows consideration of, or planning for, what can be done with Child Themes, now and in WordPress 2.7+. And that’s because, really, you shouldn’t be touching a framework if you can help it.
Think of WordPress as a framework where the contents of the database are output in a controlled fashion by your theme. We don’t go in and tinker with the WordPress core in order to make our themes work better (well, some people do but that’s another story again). The same thing with a theme framework. We can modify the theme framework with our Child Themes and leave the framework pristine for easy, safe upgrades.
This concludes part 1 of the interview. Stay tuned for Part 2 which will be arriving shortly.
Tags: database, manage, modification, plugin, release, template, test, Wordpress, writeSearch
Delve Deeper
You are currently browsing the The Staff Lounge weblog archives for .
Longer entries are truncated. Click the headline of an entry to read it in its entirety.Archives
- January 2009
- December 2008
- November 2008
- October 2008
- September 2008
- August 2008
- July 2008
- June 2008
- May 2008
- April 2008
- March 2008
- February 2008
- January 2008
- December 2007
- November 2007
- September 2007
- August 2007
- July 2007
- May 2007
- April 2007
- March 2007
- January 2007
- October 2006
- September 2006
- August 2006
- October 2005
Categories
- Categories
- Announcements
- bbPress
- CinVin
- Development
- ExtremePixels
- Invision Power Board
- Meta
- MyBB
- News and Announcements
- Phorum
- phpBB
- Releases
- SEO vBulletin
- Simple Machines Forum
- Site Announcements
- The vB Geek
- Transverse Styles
- UseBB
- vBadvanced
- vBDrupal
- vBSEO
- vBSEO Announcements
- vBSkinworks
- vBStyles
- vBulletin 3.7 Add-ons
- vBulletin Add-ons
- vBulletin Announcements
- vBulletin Fans
- vBulletin Quick Tips and Customizations
- vBulletin SEO
- vBulletin Setup
- vBulletin Setup Announcements
- vBulletin Tips
- vBulletin.com
- vBulletin.org
- Wordpress
- YaBB
- YaBB Chat and Support Community/YaBB News and Announcem
Popular Resources
- Phorum-5.2.9a released (6 replies) - 13582 Views
- Phorum-5.2.8 final released (13 replies) - 6035 Views
- Phorum-5.2.9 released! Security Upgrade! (1 reply) - 3057 Views











