From a technical point of view, how difficult is it to perform automatic Laravel version update? Should be almost “artificial intelligence” inside? A lot of people consider Shift an ambitious project. Maybe it's because I've written a lot of code generators or syntax parsers before, but I don't think it is. Laravel applications have a very specific file structure and syntax. You can use this as a foundation. Combined with the official Upgrade Guide and Git commit history, it's mostly a matter of sniffing out changes and then applying patches. Shift definitely gets smarter as more people use it. While by no means artificial intelligence it is collective intelligence. Meaning the more Shift runs, the more insight I receive into how people are writing Laravel applications. In addition, I ask for feedback after every Shift. All this allows me to continually tweak what changes to sniff out and how to apply the patches so Shift can automate even more updates.
Was there any Laravel version or particular function that caused the most trouble in Shifts? Until recently Laravel 4.2 was probably the most troublesome Shift. There were just so many changes between Laravel 4.2 and Laravel 5.0. I feel at this point, all of them have been resolved. More recently, the Laravel Package Shifts have been the most troublesome, which I'll discuss shortly.
Were there any cases that Shift “screwed up” and you had to refund the money? In general, you probably do a lot of customer support for such a project, right? Actually there have only been a few refunds - like less than 10 total. A majority of these had to do more with issues connecting to the repository (GitHub's access model constantly changes). Only a few refunds were because Shift "screwed up". I put that in quotes because these were very unconventional Laravel applications or a situation where the expectation was Shift literally upgraded everything. It's important to note that Shift isn't designed to upgrade everything. This is clearly stated in Shift's FAQ. For me, it's about numbers. I'd rather Shift be able to upgrade 80% of Laravel applications 80% of the way, than 40% of Laravel applications 100% of the way. That's not to say Shift can't upgrade an application 100% of the way. In fact, if you stick with the defaults and do things the "Laravel way" it's very likely. But be assured anything Shift can't upgrade it will list in a comment on the Pull Request. In fact, it seems many people use Shift just for these comments, as it's like a personalized Laravel Upgrade Guide.
You recently introduced shifts for Laravel Packages (free for limited time). Do you have customers for that? What are the first results here - any particular success story? Honestly both the Laravel Package Shifts and the Lumen Shifts have fallen pretty flat. I think combined there's been maybe 100 of these Shifts. The reality is, not as many people use Lumen or write Laravel Packages, so they're aren't many of these Shifts. I have taken a very lean, MVP approach with Shift. I make a very simple version of each Shift so I can release it quickly. Then I wait to spend more time on it until it reaches certain amount of usage. I definitely don't see the Lumen Shifts getting much usage. I expect I'll make a Lumen to Laravel Shift as I don't see a place for Lumen as Laravel continues to evolve. That's just my opinion. I hope to revisit the Laravel Package Shifts though. I think with so many packages in the community it makes sense to use Shift to keep them upgraded.
Would you call Shift a business or a side-project? Are you planning to make it your primary source of income? Shift is a side-project, that I treat as a business. What that means is I put more time into Shift than I get "paid" for. I think that is true of all side-projects. However, Shift is run as a business. I support all of it's services. In fact, I pride myself on answering every email or tweet. I also make plans for it's future. So it's doesn't get neglected like a side-project. Shift would need to grow a lot more for it to be my primary source of income. It's possible. Laravel has over 17,000,000 installs, so there's a lot of room for growth with just 2,000 Shifts run. But I have no misconceptions every Laravel developer will use Shift. What is more likely is Shift will become a platform, offering more Shifts and other services. For example in recent months I have offered Human Services. This includes coaching, where devs receive my full-support via live video chats to help you complete the upgrade or upgrade services where I update your Laravel app for you.
Speaking of income, you have “Donate” link on the website - for those who want to donate more than Shifts cost. Do you have many people contributed like this? Pretty weird business model - wouldn’t it be better to raise prices? I do suppose it's a little weird to have a paid service which accepts donations. That's one of the reasons the link to donations is buried. But I created the donation option based on user feedback. I had people saying they used Shift while consulting or for their company and wanted to pass through a higher cost. So I started accepting donations. There haven't been many, but I will so those that do, donate the highest donation amount of $100. I intentionally keep Shift affordable despite nearly everyone telling me I could charge more. Price is funny, it brings expectations and sentiment. If I were to charge more, users might expect Shift to do more, leaving them with a negative experience if it didn't meet their cost expectation. In addition, too high of a price and devs might not see the value - thinking they'll just do the upgrade themselves. I want everyone to use Shift, so I balance this with charging enough to ensure the project keeps going.
Finally, what is the future vision of Shift? Where do you see it in a few years? It was always my vision to move Shift into other languages. Very early on I created PHP Shift. Unfortunately it has not received the same recognition as Laravel Shift. As such, I haven't dedicated much time on it. In the very short term, I plan to release a redesign which will include a user dashboard for managing Shifts. This will also provide a foundation for achieving the next vision I have for Shift. Which, taking a page out of Taylor's book, for now I will just offer a teaser and say it helps build the platform. So maybe when that's available, hopefully in early 2017, I can do another interview. In the meantime, please follow @laravelshift for future updates and Laravel upgrade tips and, of course, go to upgrade your Laravel projects. * * * * * We thank Jason for the interview - really fascinating, but, on the other hand, ordinary story. Good luck with Laravel Shift!