Update: With release of TYPO3 10.4.8 the problem is gone because the dependencies were adjusted. Apparently there were problems not only with Surf, but also with Solr and dependencies on PHP 7.2. Nevertheless, I will not install Surf with composer in the project, but instead globally in the DDEV container.
Yesterday a planned maintenance update of TYPO3 was published. Version 10.4.7. The best content management system that I know. And of course all projects should get the new version. What was previously possible without any problems with a hearty 'composer update' without any other effort. Just not yesterday.
composer absolutely refused to integrate the new version into the projects. Okay, no problem, let us approach the whole thing systematically. First with
composer clear-cache && composer update
force composer to forget everything, go through all the sources and try again. But this did not bring any new TYPO3 onto the hard drive.
Then I would look around and with the question
composer why-not typo3/cms-core:10.4.7
it became clear that typo3/surf has a dependency with symfony/console which finally has a dependency with symfony/event-dispatcher-contracts that prevented going to a larger version than 2.0. But what typo3/cms-core absolutely requires. npm, what the hell!
This morning I tried another time to find a solution but maybe I should think about another job in my elderly age. So there was only Twitter left, my grief complained and minutes later the two heroes @t3easy_de and @chriwode came around the corner.
The first attempt to run Surf locally on Windows failed miserably. Yes, Windows. I don't want to talk about that here. The whole thing fails because, among other things, Windows does not know awk and even if you install this, you will be hit with further errors.
To get to the point: so far I have setup projects using DDEV and not only installed TYPO3 and the extensions used via composer, but also Surf. In order to be able to deploy a project via the command line, for example, if no corresponding CI/CD system is available. My solution now looks like this: Surf has removed of this composer.json and is installed globally via the DDEV start hook:
hooks: post-start: - exec: composer global require hirak/prestissimo - exec: composer global require typo3/surf:^2.0
So TYPO3 10.4.7 can be installed and I can move the project to another system via surf.
There are investigations for everything. Also for how the loading time of a website affects the possible bounce rate of the visitors. And it's hard to believe, but the bottom line is that the longer it takes a website to load, the higher the chance that the visitor will close the tab. Incredible.
The AssetCollector has been integrated with TYPO3 10.3. With this, scripts and stylesheets in Fluid files can be added to the rendering process with the ViewHelpers f:asset.script and f:asset.css. They behave similar to the renderAssetsForRequest already added in 8.6, with which you could render the corresponding code via the two Fluid sections HeaderAssets and FooterAssets.
But with the simultaneous use of HTTP/2, which ensures that the resources for rendering the website are delivered to the browser before it even knows that it needs them, a speed advantage is still achieved in conjunction with the small data size and is especially noticeable in a faster rendering of the page. It is not at all bad that the resources are not integrated into the concatenation or compression process of TYPO3, as you were used to when you integrated your resources using TypoScript.
And so you have already made a few more visitors to your website happier.
And yes, I know, I have unfortunately not yet activated HTTP/2 on this page. It's not me. I'm sorry.
I always plan to do more with this blog. To tell something and perhaps give some input to others that will help them. Like the other tens of thousands of blogs and websites I can learn from every day.
The past few weeks I have been quite offline during my free time. We have build a new terrace, which was already planned when we moved into this house a few years ago. At that time, I just didn't think we would do it all alone.
Next to building and plastering a wall (at least 3,5 x 2 m in size), the extraction, the gravel, pulling of the grit and cutting the plates I've learned that there is simply no need to ask a craftsmen. If you ask how to do one or the other, you get two or three answers which are obsolet one week later. Almost like developers.
And then I taught myself how to solve a Rubik's Cube. My little son brought them in and actually wanted to learn it too. Because I can't help him, I had to have learn it by myself and so I can now solve the cube in a little bit over two minutes with the beginner method. If I will learn other algorithms to solve it in under a minute... I do not know yet.
I will start learning again for the certification of a TYPO3 developer (TCCD). I was able to extend the TCCI certification by one year last Friday, whereby I think that the procedure is worth considering. Just because I took part in a presentation of the innovations of TYPO3 10, which I held in my department in a similar way shortly after its appearance, I have collected a lot of suggestions, but I don't master them. Perhaps this is because I was one of the last ones where the certification is normally valid for three years, the new certificates are only valid for two years.
For the preparations I work through the Exam Study Guide for the Official TCCD Certification of the TYPO3 Association (https://leanpub.com/typo3certifieddeveloper-en) and this time I decided for me to write a blog post for each topic or question that I don't answer correctly when I was studying, in which I then work on this topic. The best way to learn is to write a cheat sheet. There will definitely be some posts. ;-)