Tell me about yourself and your project, Laravel.
I am a 26 year old developer currently residing in my birth state of Arkansas. I created the Laravel PHP framework - a web application framework striving to help developers create great applications using PHP. It’s currently one of the most popular open-source PHP projects on Github, and has a community of thousands of developers around the world.
What made you want to build a new PHP framework? What frameworks have you used in the past?
In developer circles, PHP has long been derided as crap, and perhaps, to some extent, rightly so. However, in recent versions of PHP, especially 5.3 and up, the language has markedly improved. Closures, namespaces, late static binding, traits, and other great features have been baked into the language. Composer, a new tool for PHP package management (think Bundler), is making distributing and using great packages a breeze. PHP is changing for the better.
However, when I started building Laravel two years ago, I didn’t think the existing frameworks, many of which were 5-6 years old (such as CodeIgniter), were aging well. I wanted to create a framework that was about developer productivity and happiness. A framework that didn’t get in the way of creating great PHP applications using the latest features of the language.
For a new framework, Laravel has seen an incredible uptake from the development community. Has this made working on it easier or more difficult? How do you deal with the growth?
Having a growing, thriving community surrounding Laravel has been great. I’m always intrigued to see what kinds of packages developers are building for Laravel, how they are using the framework in ways I never imagined, and how it’s helping their business, and, ultimately, satisfying their customers.
However, having a large community around a framework is also intimidating, especially when I am the only core developer working on the framework. Attempting to keep the original vision of the framework pure, while growing to meet developers’ needs is my primary focus. There are a lot more voices in the conversation, but I think we’re doing a great job of staying true to the framework’s roots while continuing to innovate.
You mention that you are the only core developer for the framework. Have you sought any help with development as the popularity of Laravel has grown? Either from a development perspective, or with people helping with documentation or design of the Laravel site?
Even though I am the only core developer, I of course accept and merge pull requests to the framework from the community, and I do counsel with a handful of people about the direction of the framework. All of our documentation is also hosted on Github, and has many community contributions, though I still write the majority of the documentation myself.
What has been the worst part of working on Laravel? What about the best?
Laravel has really been enjoyable to work on. I’ve tried to keep it enjoyable by not forcing myself to work on the framework. If I don’t feel like working on the framework on a given night, I just don’t, and I don’t feel guilty about it. I know I’m going to do my best work when I actually want to work, so I accept that my passion is going to ebb and flow, and I work according to that natural cycle.
You joined UserScape as an engineer and they talk about using Laravel on all new projects. Do you have the luxury of developing Laravel as part of your job, or is it still strictly a side project? Are there any concerns about UserScape influencing the direction of the framework?
I occasionally do Laravel development at UserScape. When I first came on board at UserScape, we knew Laravel would need some additional tooling for serious team development. So, I was graciously allowed time to build Laravel’s migration system, which is very similar to what is found in Rails. Several other features we needed for our development at UserScape have also been baked into the framework. But, in general, I do not work on Laravel during the day. My primary time for developing Laravel is still after my wife and kids go to bed.
I don’t have any concerns about UserScape negatively influencing the direction of the framework. We really have a situation analogous to the early days of Rails, when David was extracting the framework out of his work on Basecamp. UserScape provides a great testing and proving ground for the framework, since we use almost all of its features for our new help desk product, Snappy. It allows me to quickly identify any short-comings in the framework.
You used to do .NET development. Are you still a Windows guy or have you moved on to something else?
I use a retina MacBook Pro; however, there is still a soft spot in my heart for Windows. I also really enjoy using Ubuntu and wouldn’t mind using Ubuntu exclusively if it could land a few more pieces of software (Github for Ubuntu, Transmit, and a few others).
How has working with Laravel and PHP compared to working with .NET? Is there anything you miss from working on the Microsoft stack?
PHP and .NET are two different worlds. .NET is of course a much more robust and vast environment. I really enjoyed using Visual Studio. It was very fast - much faster than any of the IDEs available for PHP. I also miss LINQ greatly. However, the dynamic nature of PHP allows me to do things I could never do in .NET, such as write the Eloquent ORM, which is an ActiveRecord implementation.
Do you mess around with any other languages? You mention DHH a few times. Are you a Rails fan?
Outside of PHP and C# / VB.NET, I have tinkered with Ruby and Rails and I have glanced at Python. I want to learn more of both. I also am very familiar with COBOL. Really.
With all the recent improvements in PHP, what do you think the future holds for the language?
I hope PHP can continue incremental improvements over the next few years. The releases are coming in fast, so we’re getting a lot of improvements to the language very quickly. The simplicity, ubiquitousness, and affordability of PHP will continue to make it a popular language for the near future.
As I look at the Ruby community, I admire the amount of quality Gems. It seems like there is a cool Gem for everything. We’re seeing an increase in framework agnostic packages in PHP, but we could use even more. Honestly, I believe developers writing great packages is just as important as the language continuing to evolve.
What are your favorite hardware and software tools for working on projects?
I love my MacBook Pro and Thunderbolt Display. When developing Laravel, I use Sublime Text 2 and Github for Mac. I also run an Ubuntu Server virtual machine in VirtualBox, keeping my development environment separate from my Mac OS.
Do you have any other side projects? How do you balance obligations to friends and family with working on such a popular project?
I don’t have any other side projects right now. Laravel consumes most of my development free time and I only work on the framework after my wife and kids go to bed. So my development time on Laravel starts at about 10pm and wraps up at midnight, allowing me to work on it for a couple of hours per day without detriment to friends and family.
Who are some people that you look to for inspiration when you are working?
I appreciate anyone who is great at their craft - programmer or otherwise. In the tech world, I appreciate DHH from Rails, as he is great at cutting through BS and seeing real issues. Of course, I also admire Jonathan Ive at Apple for his attention to detail and seeing the little things that matter. I also enjoy great writing. All programmers should read The Elements of Style.
What is some advice you would give to someone who is building on their own time?
Do whatever you enjoy doing, regardless of what Hacker News makes you feel guilty about. In the end, all that matters is that you are happy.