I am Taylor Otwell. Ask me anything.
Taylor Otwell is the creator of Laravel PHP framework. He also created Lumen, Forge, and Envoyer. Shoot any questions you want Taylor to answer!
Learn Something New Everyday,
Connect With The Best Developers!
Great to see you here! How do you maintain and manage so many popular and widely used projects like Laravel, Lumen, Forge, Envoyer etc ?
I've developed a fairly consistent daily routine. I start work at 8:00am and I always tackle my e-mail first and answer all support requests that came in overnight for Forge and Envoyer.
Once I have that cleared I review the Laravel organization PRs on GitHub. I try to keep that under 20 across the entire organization. One key to this is not "waffling" on a PR... if you are leaning "no", it's important not to procrastinate just saying "no".
Once I've finished PRs for the day I don't really go back to them until the next morning. I move onto whatever I want to work on for that day. Usually it's about 9:30am by this point. Lately it's been Spark. I'll work on that for the rest of the day as well as answer anymore incoming support requests that come in throughout the day. Typically I will only check my e-mail once every 1.5 hours or so I'm not distracted by incoming messages. I'll typically also close Slack and sometimes my IM client as well so that I have no notifications to deal with at all.
Thanks for the question!
What are your productivity hacks? Building and managing so many successful projects must be stressful at times. How do you make sure you are productive and always up for challenges?
I make heavy use of Wunderlist and Trello to keep track of things. I also try to get a good night's sleep. However, I think one of the biggest factors is that programming is my main "hobby". I don't really play many video games or watch TV, etc. so I end up programming a lot in my "free" time simply because I enjoy it.
I also think the Pomodoro technique can be really helpful as just a daily productivity tool.
What's a feature from another language that you'd like to have in PHP? How could that feature make Laravel more awesome?
I would love to have short Closures that work similarly to the new
Something like this following:
array_map(foo => foo + 1, foos);
It would just clean up some noise in the code. I think certain aspects of testing could be cleaned up by the inclusion of a monkey patching extension like "uopz" in the core of the language. However, lately PHP is more focused on "safety" with static types and so on so I don't think such an extension would be viewed favorably in the current PHP environment. :)
Hi Taylor, thank you for your time.
I have a couple of questions here, hope that you can answer it.
What do you use to develop Laravel? Are you still using Sublime Text? If so, can you share your plugins/template/configuration?
What is the next awesome feature that you're going to implement in Laravel?
What do you think of AdonisJS http://adonisjs.com/ (NodeJS Framework inspired by Laravel)?
With what you gain from Envoyer and Forge did you work full time on Laravel?
- I use Sublime Text to do all of my PHP development. The only plug-in I use is SublimeLinter for PHP syntax errors.
- For Laravel, I'm always just trying to think of ways to get rid of boilerplate code and make things easier. Many of those ideas have been built into Spark since they wouldn't really be acceptable in a generic full-stack framework. Spark allows me to be more opinionated than I could be in the Laravel framework itself.
- I think Adonis looks cool!
- Yes, I work full-time on Laravel and am fully supported by revenue from Forge and Envoyer.
How do you manage your family and your popular products? How may hours do you work a day? What lifecycle/software tools do you follow on your products?
During weekdays, I almost never work past 5pm, and I only get back on my laptop to answer support requests at about 9:30pm once the kids are in bed and typically clearing out the support requests that have come in between 5pm - 9:30pm only takes about 10 minutes.
On weekends, I still spend about 30 minutes in the mornings clearing out support requests for Forge and Envoyer. I can sometimes sneak in extra time on the weekends if the kids are napping or we have some downtime.
I work 8am - 5pm so just a typical 8 hour work day.
How will php7 release influence Laravel? What do you think about using docker for Homestead?
PHP 7 is a big deal, especially since it basically halves the amount of servers you may have needed to run your application under PHP 5.x. That can save businesses a lot of revenue in server costs. And of course Laravel benefits from those speed improvements.
I have not done much experimenting with Docker so I'm not sure how it could be incorporated into Homestead.
Hi Taylor, What did you do before you create Laravel and how did it lead to creating it ?
Before I created Laravel I worked for a large corporation writing .NET and COBOL. I use both .NET WinForms and ASP.NET MVC. I knew I wanted to eventually start my own business and hosting .NET wasn't very simple at the time. I knew PHP was simple to host and I wanted some of the features I had used in .NET MVC in a PHP framework, especially automatic dependency injection via Reflection.
My first PHP open source project was actually a reflection based IoC container I released for CodeIgniter in 2010. AFAIK, this was the first reflection based container in PHP. Then I wrote Laravel after being unable to cleanly extend CodeIgniter to support this kind of dependency injection.
But, ultimately, the goal was simply to have a platform to quickly launch my own business and help others do the same.
When i was looking for js frameworks, I got paralysis from the large amount of choices. In the end, Because you and jefferey way recommend vue, I tried Vue, loved it and stopped searching further.
But I am curious, what exactly made you pick up vue over other js frameworks?
Vue is amazing. I think it's great because I can just sprinkle it on a single page without having to even have some fancy build tool or CLI or anything. It's just really fast to get started and be productive with even if you have never used another JS framework in your life.
It's the perfect mix of usability and power. I think because it is so approachable and has great documentation it will continue to gain popularity very quickly.
Being a creator of such a successful framework means commitment to the language it's written for. Given how innovative you are, have you ever been tempted to jump on another language, like Ruby, but you knew you couldn't because of Laravel?
What do you think about the opinion that PHP is historically one of the worst languages?
p.s. love Laravel, thank you very much for making our lives easier.
When I first started with PHP, I did sometimes wonder if I should use Ruby. I think many aspects of Ruby appeal to me more than PHP since I prefer dynamic languages and the PHP ecosystem has gravitated more towards strongly typed features lately as being the "best practice".
However, overall I really enjoy PHP and enjoy using it. I especially love Closure and traits and the speed improvements in PHP 7.
Juggling multiple projects myself, how do you time block between projects, jump in and out of the code, and remember where you left off? Roadmaps? Timelines? How do you deal with "coder's block" when you're feeling uninspired with a project?
Typically I will keep a text file in the project with where I "left off" to help jog my memory.
I do use Wunderlist and Trello quite a bit as well to keep a backlog of things I want to work on. If I'm feeling uninspired on a project I don't work on it. I don't like to work on things in that situation because I think forcing yourself to work when you don't feel inspired can lead to burn out. Of course, sometimes you have no choice but to work on something.
How do you want to see the Laravel framework evolve over the next 10 years? What long-term features would you love to see integrated, or other kinds of software/cms/tools that you'd love to collaborate with?
It's hard to say how things will evolve over 10 years. Laravel will turn 5 years old this year and has changed so much since it was first released. I think one thing that helps Laravel is we are never scared to push forward. I will always be listening to the community and identifying pain points to make sure that Laravel stays ahead of the curve so to speak.
Out of Beanstalkd, Amazon SQS, Redis what do you recommend for implementing async queues in Laravel?
Do you think you will still lead Laravel in about 5 years? Any plan about a lead team?
- What are your thoughts on Docker? Would you consider moving the Homestead experience™ from Vagrant to docker?
- In a the last 12 to 18 months a lot of "big" functionality was added to Laravel. Things like the cloud filesystem and ACL. Are you considering adding more big chuncks of functionality like that?
I have never used Docker but if I use it and it is easier for the average developer than Vagrant then I will move to it.
A lot of the more opinionated pieces of functionality I want on every project I have baked into Spark instead of Laravel. Spark allows me to be more opinionated than I could in a traditional full-stack framework.
What are the tools that you use to stay (or to force you to) productive ?
How do you motivate yourself to start a new project or in general to start working on your current project?
What percentage of your time is spent coding, and what percentage is spent managing all the products you've created? Which side do you prefer more?
When starting to plan out a new project do you use any tools to help you map out the structure? Or is it scribbled on paper/all planned mentally. I often start a project and think I have it planned out then have to keep making changes to my plans because I've overlooked something. Can you offer any tips to avoid this?
I scribble out notes on a notepad first and just try to map out an overview of the project. I also try not to over-architect things too much if I'm just feeling something out. Ripping through 10 layers of abstraction is a lot harder than just changing simpler code. Once I figure out a system that is working I can always come back later and "clean it up".
Will laravel have in the future more generators. For example for crud operations? I find myself wasting a lot of time with them, doing copy paste pretty much.
How do you iterate? When developing a feature or working on some project how do you build it? Do you make small changes or write lots of code then test or try?
I tend to spike out features first and then come back and clean them up. I'll take a first pass at a feature and write it somewhat "messy" just so I can see how I like it once it's implemented, then I will circle back around and decide how I actually want to implement it for release.
if you have enough resources (developers, fund,etc) what would be the next thing you will invest one?
As you always like simple and clean code, what features or stuff you think php should have to power Laravel and any other applications?
I've asked this on twitter before but had no answer. Laravel always creates Carbon instances directly, not through service container, which makes it harder for us, developers from non-English speaking countries, to use localized carbon or jenssegers/date. Is there something that stops you from changing this?
Your project is amazing, and so is your attention to detail. Thank you for all your hard work.
I have no serious questions, so how about a less than serious one: When using your now famous block comments style of "3 characters less than the previous line", do you sit with thesaurus.com open trying to find words that fill the space correctly?
Hahaha... I am very fast at finding the right words I need. I know common hacks to shorten or lengthen a line by 1-2 characters. I know that changing "we will" to "we'll" will save 2 characters on the total line length for example. I can write a comment like that almost as fast as I can write a normal comment.
Hi Taylor, glad to see you here. How did you manage to build such a huge framework on your own? I've seen a few videos of yours where you mentioned you made early Laravel version for a personal project while you were in working full-time somewhere else(if I recall correctly). What are the problems you faced while developing Laravel regarding coding practices as Laravel has most cleanest code including well formatted comments. Any tips, resources or suggestions for newbie programmers like me who are mostly dependent on tutorials from Jeffrey Way and StackOverflow.
I definitely owe a lot of Laravel's success to the community and their passion about it. Every video tutorial or blog about Laravel helps spread the framework. Building an ORM was definitely the most challenging aspect of building Laravel. Most other aspects have seemed fairly easy in comparison.
I'm no longer a PHP developer and a bit out of the loop with what's happening in the PHP world; so out of curiosity, how different are Zend and Laravel?
I have never used Zend so I don't think I could give you a fair comparison. Laravel simply tries to focus on developer happiness and ease of use. Note that this does not mean that it only offers simple functionality. Many of the features of Laravel (auto resolution IoC, async queues, event broadcasting) are unique among all other PHP frameworks and are fairly advanced.
How many hours would you say you invested in the initial Laravel Public Release? How were you able to juggle the project and everyday life responsibilities? Anything that kept you motivated? What setbacks did you have?
I worked on Laravel for about 6 months before the first public release. I spent a lot of nights coding. Programming is my main "hobby" that I do for fun so it wasn't hard to stay motivated. I was just doing what I enjoyed the most.
Deciding on which ORM to use was somewhat of a setback because I wanted an ActiveRecord ORM but there wasn't any obvious choice at the time so I had to write my own.
In one sentence, whats the best advice you can give for running your own small business or mindset as an entrepreneur?
Love your work !
What's your personal opinion about CQRS in a big (or medium ~1year dev) project involving 3-4 developper ?
Do you think it's too overwhelming for at the end just some use cases.
Maibe not so much a bad idea because we have to separate "concernes" at some point but there are many other approche less overwhelming.
Taylor first of all thanks for affecting so much my career.
So, how did you manage to handle your time schedule when started developing Laravel as a side project of yours some years ago? I mean apart from your day job, your family routine etc. Too many working hours right?
Right now, the main options for finding laravel compatible composer packages are really just Packagist and Packalyst. Do you have any plans for creating a more curated set of Laravel compatible PHP packages?
What inspired you to write laravel? Why not use symfony for your needs instead of building on it? What ultimately lead to you saying - ya know what, this laravel.
When reading documentation for other frameworks, if I couldn't figure out how to authenticate a user within about 5 minutes I just gave up and moved on. I figured such a common use case should be very easy. Basically I felt like a lot of common situations should be much easier across the board, and that still drives Laravel to this day (queues, Elixir, validation, Spark, etc.).
Hi Taylor, thank you for your Framework.
I have 1 question. We are a business running Production App on top of Laravel. Without Laravel, it would have taken us 3x more developers with 3x more headaches. Thanks for making our lives easier. There were many instances when laravel saved our lives. In Enterprise B2B it really helps to have a reliable framework. When we show the server-response times to our clients, it closes the deal faster. There was no question, just wanted you to read it. Thanks.
What kind of server infrastructure runs Forge and Envoyer? Looking at running a SaaS application, and wondering what kind of services you run for these to keep everything in sync.
I use DigitalOcean and both of the services have 3 servers a piece (1 Web, 1 DB, 1 Worker). All of them are 4GB instances. Envoyer also has some smaller 2GB instances in various regions for the health checks.
I also use Cloudflare, Mailgun, and Amazon SQS for most services.
I'd love to hear about Laravel's growth. Laravel has a great community but how did it get to the point it's at today?
Who were the first users? How did you convince them to try a new framework? Who used it in production first? How did you generate interest/traction?
I still remember some of the first users by name and always enjoy if I see they are still around. My first promotion of Laravel was on Forrst and Reddit.
I think Laravel continued to gain traction because I was very involved in its development, responding to feedback, etc. It also generally just came at the "right time" for PHP. Older frameworks built before PHP 5.3 were dying out or suffering from lack of documentation and Laravel was written exclusively for PHP 5.3 and has really, really thorough documentation even from the 1.0 release.
Hi Taylor, thanks for your time, and for the awesome work you do ! Where did the idea to create Lumen as an alternative to Laravel came from ? Don't you think most of the modern Frameworks should do the same and propose in the same time more light and "toolbox-like" framework like this ?
I am thinking of Angular, which is becoming way to overloaded nowadays, and will push you to use Frameworks like Backbone more for example.
Thanks a lot !
I got the idea for Lumen when I was developing Envoyer. I had to write a micro service using Slim and while I think Slim is really cool, I wanted to just drop something in with Laravel's database abstraction layer, better error handling, etc.
So, I coded Lumen to give a Laravel flavored Slim with a few more packages out of the box like validation, database, etc. that are almost always needed even on micro services.
What is something inside of Laravel that is used extensively that you would want to see used more often in other projects? I.e. helper functions, Collections, Eloquent, etc.
With FORGE,do you plan to partner up with more VPS servers for instant auth such as Vultr, 100TB, Netelligent, etc..?
I wouldn't mind doing so. The Custom VPS option of course allows you to always integrate with other providers.
I have almost finished integration with Vultr but because of how fluid their availability is across regions it is a little trickier than the other providers.
What is the best way to approcah when we have to organize ideas and write code. What i meant was, how do you thibk when you have to put everything toguether.
Hey Taylor! With so much new stuff going on these days with JS, go, and other new/popular languages, how do you feel about the longevity of PHP and it's place in the future of web development?
Hi Taylor, how did you choose to use so many components from Symfony?
It just made sense not to re-invent the wheel on something like HTTP parsing. We can still build on top of it to offer convenience methods, etc. I choose to use Symfony for some of the more "boring" parts of the framework and we write our own custom components for more interesting things like database access, templates, queues, authentication, etc.
What are some other projects/technologies/side projects you are working on these days?