So, I was doing some work on Heimdallr, and I notice that I was using Laravel 12, and should upgrade to Laravel 13. Upgrades from one major version of a another for frameworks in PHP projects always seems to be "painful" for some reason. In Zend Framework, they dropped core components, from what I have heard, for Drupal 7 to 8, you practically had to rebuild things from scratch. For L12 to L13, they talk about doing it in an estimated 10 mins, but my experience was far from it. My development VM runs on a hefty server, and is pretty hefty itself. Most of my VMs get a single core and a modest amount of memory, but like my web/mail server, my development server gets a larger amount of memory and multiple CPUs, since I also run my IDEs there. Indeed, it has more power than my high-end laptop, or any tower server I have owned. But running their Laravel Boost, which is a MCP server, inside of JetBrains Junie AI, it took far longer than 10 minutes to run (it was well over 30min, probably pushing 45), and it ran into conflicts trying to upgrade my dependencies, like DataTables or Laravel Breeze (more on that in a sec), and fell flat on its face. Like much of my AI experience, be it using it like this, asking it to give me a function which does X, or even just doing a Google search asking "can I do X with Python", I am far from impressed, because I spend more time filtering out the crud and incorrect answers (like referring to some "feature" which a language/package dropped years ago or maybe never had), than making progress. About the only good it is for is when I type "try" and it suggests the entire "try/catch" or "try/except" block depending on which language I am using. And then, I manually tried to upgrade. So starting off what Junie came up with running Boost, I upgraded to the latest versions, then started with the composer why-not command, asking about upgrading to laravel/laravel:^13. It too was not that happy. But I decided to take a stab at it. But, I have been thinking, which always leads to trouble, before I spend much more time on my current path.
One thing going on is that from Laravel 12 to Laravel 13, they moved from using Laravel Breeze (which they introduced in Laravel 11) for their starter kit to using new starter kits, such as one which uses Livewire, React, Svelt or Vue and is built on top of the more robust Laravel Fortify, which was introduce back in Laravel 8. Indeed, official word is, that Breeze is "deprecated" and will no longer receive updates from the Laravel team. They have even removed it from their documentation, and "recommends migrating to their modern application starter kits". And given how small Heimdallr is right now, now would be the time to do it. But, given its size, should I:
- Fall back to pre-Boost/pre-Junie, upgrade to the latest 12.* versions, get things under some serious code coverage, and then manually upgrade, and then migrate to use the same packages a starter kit comes with?
- Should I continue forward from where I am, but get that code coverage before I progress, and then migrate?
- Fall most of the way back, start a new orphan tree, just like when I switched from Python/Django to PHP/Laravel, but start with one of the Laravel starter kits? Then cherry pick the changes over, putting them under test as I go??
- Fall all the way back, go back to Python/Django, and start from scratch with Django and allauth, use what I learned in doing my multi-user Job Application Tracker, and rewrite things in Python, putting them under test as I go??
Right now, I am inclined towards option 3. In spite of being laid off, I have learned a lot over the past 3 years. And I could even go so far as to fork my selected starter kit (I am debating between React and Livewire, where I could continue to style using Bootstrap and my current menu look/functionality, and even work towards the same look/feel of my Job Application Tracker). And if I do, I think I will also write some integration tests on the forked starter kit which leverage Selenium, before importing my forked starter kit, and starting to pick things off the current Heimdallr version. Oh, and then there is the fact that pretty much use the same database and migrations as before without having to go to the trouble of fighting to match the schema.
Decisions...decisions... I think I will play a bit with the Laravel React Starter Kit fork, see what it looks like with horizontal menus instead of chewing up so much screen space with the menu on the left side like this...
Oh... and there is a reason why some folks make some very serious money doing major upgrades like this, and why it is taking me so long to complete a rewrite of Medusa (besides my job hunt and projects like my Job Application Tracker). And this also makes me think... what would Medusa 4 look like going this route.