An Interview with Vimeo’s Kevin Sheurs, Lead Application Developer
Vimeo is quickly becoming one of my favorite websites. You can find videos on just about any website but Vimeo is different: the site has personality and the user experience is second to none. I recently had the opportunity to chat with Kevin Sheurs, Lead Application Developer for Vimeo, about Vimeo, MooTools, and a variety of other web development topics. Enjoy!
There's no secret that Vimeo is a video sharing site. How would you describe your service? How would you describe Vimeo?
Vimeo is an online video sharing website dedicated to supporting the needs of people that make video. It is a service for anyone who really cares about how their work looks on the web. There's lots of good stuff to watch on Vimeo, but we also have the best tools, highest quality video, and best community for video creators.
Vimeo is currently using MooTools 1.11, which was released almost 3 years ago. It speaks volumes of MooTools that 1.11 is still more than adequate for a production environment. Why have you decided not to upgrade yet? Are there plans to move to MooTools 1.2 or 1.3?
What would Vimeo's engineering team like to see improved within MooTools? Has the engineering team customized anything with the site's MooTools build to better suit the Vimeo website?
Which MooTools classes have become essential for the Vimeo team? Can you share any details about important custom classes the Vimeo team has written?
Creating such an AJAX-heavy, dynamic web application must have presented many difficulties. What major issues has the Vimeo engineering team had to overcome to create a reliable, flexible website?
Vimeo's animated homepage background is a perfect example of a tasteful, unique effect. What can you share about the inspiration and difficulties behind creating the effect?
Why, thank you! The homepage background effect is a perfect example of an effect driven by design. I built the page not really thinking how the sun and clouds would "work", but I knew they needed to be fixed based on their various positions in the sky. I quickly saw this wouldn't work since the elements would stay fixed and collide with the footer illustration as the page scrolled vertically. So, I added a scroll event and set the top position on the elements as the page scrolled, which worked, but was pretty choppy. I ditched the scroll event and instead created a Fx.Style for each element and animated the top position in a function that was called periodically, to allow more flexibility in timing. Executing the function periodically paired with the Penner easeOut animation, the effect really felt awesome.
Can you provide any detail as to how Vimeo is constructed on the back end?
Sure, Vimeo is developed on the LAMP stack. The application itself is written in a custom PHP 5.3+ HMVC framework. We have a bunch of MySQL databases to store stuff like videos, users, channels, and statistics. We heavily use Memcached for our caching layer. We use it for caching objects, collections of objects, rate limiting, and session management. We also use cool things like Solr for search and tags, Beanstalkd for worker queues to offline certain tasks, and Scribe for logging and statistics aggregation. At the moment, our whole infrastructure is virtualized and we use Amazon Web Services extensively so we can scale transcoding and uploading capacity during the day. However, we are always experimenting with more efficient ways of doing things.
Vimeo provides an excellent API which allows anyone with programming knowledge to pull their user or video information. What difficulties did Vimeo encounter while creating the API system?
Does Vimeo plan on open sourcing any of its code in the near future? If so, what can we look forward to?
Being more open about our development is something we've been discussing recently. We are constantly developing and implementing new tools and techniques to help us grow and scale and we feel both the development community and Vimeo can benefit by being more open about it. Just recently, we rewrote our PHP application framework with more of a focus on performance, scaling, and security. I think we are are doing some pretty unique things with caching, HMVC, privacy, and data filtering/sorting in PHP to reduce database load. Hopefully in the next few months you'll be hearing a lot more from us.
What can we expect to see from Vimeo within the next year? Next 5 years?
You can expect to see us everywhere.
A special thanks to Kevin for taking the time to chat with me! Be sure to check out Kevin and the rest of his team's work at Vimeo!