35-year-old Kiwi developer Hamish Friedlander is CTO at SilverStripe, and therefore Lead Developer of SilverStripe 3.0. He decides what features and functions get built in the upcoming CMS edition and knows the SilverStripe Suite inside out. At SilverStripe he works in the ‘Science Ninja’ team and his nick name is ‘Owl’. I wonder why that is. He says the key to keeping development innovative is openness. Hamish lives a fast pace lifestyle on his motorbike, has a heartfelt connection with the Indonesian island of Bali, and is really bad at telling jokes.
How and when did you get introduced to programming and what was it that made you stick with it?
When I was six my Dad brought home a Vic 20. If you wanted games you had to program them in, normally from the backs of magazines. I liked how easy it was to create something. There was this one off cost, but after that you could muck about as much as you liked and it didn’t cost anything except your time. You didn’t need a bunch of stuff, and if you made a mistake it wasn’t a problem, just try again. There was also a lot of ingenuity, getting these limited boxes to do all this cool stuff.
What programming languages can you write and if it is more than PHP, which one do you like most and why?
What was the first CMS you ever worked with?
Depends how you classify CMS - if you count Wordpress, then Wordpress. Otherwise Drupal.
What other CMS tools/frameworks have you worked with, aside from SilverStripe?
CMS: Wordpress, Drupal, Comatose (embedded Rails CMS), Plone. Frameworks: Rails, CakePHP, Turbogears
How does the SilverStripe CMS and Framework differentiate from the other tools you’ve worked with in the past?
It’s focused on being usable in commercial projects first, and designed for developers. As far as PHP CMS’s go, I think it’s got the best underlying framework and abstractions, and it’s got a really user friendly admin area, even amongst non-PHP CMS’s.
What motivated you to work for SilverStripe?
I wanted a job. I wasn’t really aware of SilverStripe before joining the company, but I’ve pretty much only ever used open source tools, and think the philosophy of openness is essential to ensure development is kept innovative. So, SilverStripe being so dedicated to open source as a concept was important in my decision to join. It’s also a fun place to work, and I think having a job you can have fun at is important.
You are CTO at SilverStripe and therefore lead developer of SilverStripe 3.0. What does the release of SS 3.0 mean for the company and the community?
For the company it’s about continuing to drive forward the product - both from a technological standpoint and a UX standpoint. When SilverStripe came out it was pretty advanced (and it’s still ahead of the pack, though these days I’d say “just” ahead). The browsers have become way more capable, and user’s expectations in terms of interface experience and design have really jumped. But SilverStripe development has mostly been driven by project requirements - incremental rather than revolutionary changes. This is our chance to really push SilverStripe back into “way ahead” territory, bringing several years of learning on best practises for frameworks right into the core of the product, along with support for all the emerging technologies that are really transforming how people view the web.
How do you decide on the feature/function list for SS 3.0?
Pretty much everyone here at SilverStripe has had a wish list of things they’d like to do for SilverStripe 3 - whether that’s a wrinkle in the framework that a developer has hit repeatedly, an issue with styling that irritated a designer or some missing feature or slightly clunky operation seen by a content administrator. So we sat down and said “this is the only time in a while we’ll be able to make major API changes or ignore project-specific drivers and fix this stuff that’s on that list”. We then wrote down a big list of all the features and ranked them by gain to users of the system.
In the mean time Felipe, our Creative Director, was talking to actual users, finding out the problems they had and thinking about how we could get the CMS to solve those problems more elegantly. We pretty much divided our time budget in half. The first half to improving these framework features that developers are exposed to, and the second half to improving the CMS that end users are exposed to. This wasn’t ever a conscious decision - it just worked out that way.
What challenges do you face while working on SS 3.0?
By far the biggest is resourcing. We’re a company that loves & embraces open source, but we’re also a commercial entity, and the reality is that sometime we need to work on things that pay the bills. Another is that we’re trying to be a bit more careful about how we design APIs. Some of the current SilverStripe Framework grew out of need rather than design, and it’s caused us some pain. But we’ve run into a problem the other way too; sometimes you get a kind of paralysis because you don’t want to start until you’ve got the API locked down, but there’s some problem that you can’t pick the right solution for until you’ve actually started work. So sometimes you just need to start writing code, even if everything is not quite locked down, in order to keep moving forward. Finding that balance has been a challenge.
Finally, and this is probably unique to open source projects, is trying to decide how much third party code you should use. There’s a lot of other great open source projects out there, and often the problem space they’re solving overlaps with our own. There’s no need to duplicate someone else’s effort. It’s inefficient for a start, and a bit arrogant to assume you can always solve a problem better than anyone else, but we still want to keep the soul of SilverStripe intact.
The biggest milestone for SilverStripe is the upcoming release of the SilverStripe Framework with SS 3.0. How did you make the decision to release the framework as its own entity?
The framework has always been there, and the plan was always that this should be able to be used by itself. But we haven’t used it like that before, and so that feature never got to the point that is was actually useful. If you currently want to use the framework you can do so, but you will always have the CMS component in there, whether you use it or not.
The web is more and more expanding beyond the traditional role of CMS - if it’s exposing content via a RESTful API for a mobile app, or aggregating user generated content, we’re moving away from a single “publisher -> consumer” model. We wanted SilverStripe to be capable of solving those problems. And with the release of the framework, we give the users the freedom to develop anything they want or need.
How does the SilverStripe Framework compare to other frameworks out there?
I don’t like to compare ourselves to other frameworks. It tends to lead to “checkbox” style analysis, where the presence of some feature (regardless of the design or completeness of that feature) is the determining factor in what’s best.
Ultimately, we (and all web designers) solve problems for our users. And we want a framework that makes it easy for us to solve those problems. So Framework is focused on making problems easy to solve. That doesn’t mean we discard elegance or performance or quality, but all of those things work together towards our main goal, they’re not goals in themselves.
What’s next after SS 3.0?
3.0 is a full redesign of the CMS, but we’re not going to be able to rewrite all our modules for the 3.0 release. So the next step is to look at bringing those modules up to the same quality as 3.0. Other than that, we don’t really have a long backlog of specific technical projects. One thing we’re keen on is not trying to solve imaginary future problems. There’s enough actual "now" problems to solve.
What is the role of the community for the product?
We’ve got a really strong community, and there’s a lot of people using the product - both developers and end users. That leads to a lot of third party modules, suggestions and discussions around future features and lots of testing.
Unfortunately we haven’t really managed to turn that into a lot of external contributor development on the core product. We have got some, and the guys that are helping out are doing great work, but it’s not to the same level as (for instance) Rails. I’m not sure why - perhaps it’s because there’s such a strong sense of ownership, or we’re just not providing the right tools. So, if anyone has an idea about what we can do to increase the amount of external code contributions, I would be happy to hear about it.
From now on, the blog will be the place for us to hear your SilverStripe news on a monthly basis. What topics can we expect to read about?
We’ve got a monthly meeting here at SilverStripe amongst all the developers, and everyone has to make a 3 minute presentation. The subject is simple - “something you thought was interesting”. Maybe some code you wrote, maybe an interesting bug solution or a new feature, maybe a new website or library you discovered, or just a book or something you enjoyed. But you should have found it personally interesting. So based on this, I will write about something that I think is interesting.
What’s your most favourite joke?
Depends. My favourite SFW joke is “why is a duck?” answer, ”because one of it’s legs is both the same”. I can’t tell you my actual favourite joke - it’s horrible (think: aristocrats).
What’s your favourite food?
Stolen from an old Footrot Flats book: “Anything except sand”.
What are your hobbies?
Driving motorcycles very fast. Playing the guitar (a real one, not a plastic rock-band one, although that’s fun too). Planning the subjugation of mankind.