how can version A of a software be released AFTER version B when A is (?) older than B - symfony

I have been reading a while on the subject and I came across an article which left me a little bit lost on software versioning/releases.
If you follow it you will see it's just a list of all Symfony releases with their respective dates. What prompted me to ask this question was the fact that I could not get why/how, for example:
Symfony 2.8.37 released | April 2, 2018
while
Symfony 4.0.6 released | March 5, 2018
Symfony is just the example, my question applies to software versioning in general looking for an explanation to the above.
I am (am I?) positive that 2.8.37 is older than 4.0.6 so this most certainly has nothing to do with me comparing them wrong, surely there is a fundamental aspect about the versions release process I'm unaware of.
Finally, just to be sure, if I were to compare two versions, how would I go about it, I don't need a computer-language-specific-solution, just an algorithm in general to compare two given versions like you could do even using paper and pencil (I know, what a heathen).

Typically, 2.8.38 would be a security or other patch to 2.8.37; and 4.0.6 is a patch to 4.0.5, where 4.0 is a newer, more powerful base version that requires a different license or runs only under Windows 10 or some other reason why some people would like to stay on the old version.
The patch to the current version would be published faster, and then the team adds the important security patch to the older versions.

Symfony has very good support for old versions of their framework. Basically Symfony 2 was released and went through various version changes similar to 2.1 -> 2.2 etc. All the while maintaining compatibility with previous Symfony 2 projects.
Further down the road Symfony 3 was released, and while a Symfony 2 project could be updated to a Symfony 3 project it involves some work and there can be project breaking coding changes required. Then Symfony 3 progress 3.1 -> 3.2 etc.
Just because Symfony 3 is out and available doesn't mean that all work or bug fixes are done on Symfony 2. So there will still be releases of Symfony 2, in addition to releases of Symfony 3. Here is a visual view from the Symfony Page to show the version overlaps.
This is common with most software, for example Microsoft Windows 10 is the current version but Microsoft still provides patches for Windows 7.

Related

Upgrading from Symfony 1.4 to Symfony 4

We have a Symfony 1.4 application and want to upgrade to Symfony 4. Is it possible or do we have to reprogram the application?
We asked a software company near us and they told us that we have to reprogram the application.
Symfony 1 is a completely different codebase using different concepts both inside the framework (or application) and with some libraries. For example it uses Propel (Active Record-approach) rather than Doctrine (Data Mapper-approach) for mapping php-objects to a database. The difference between Symfony 2 to 4 is considerably smaller, because they share the same underlying codebase and are therefore closer to each other. Upgrading can still be a lot of work because of deprecations (changed and removed parts of the code), but overall the upgrade process can be done inside the same application. Besides that, you can choose the newest version available and I would argue, if you are starting now/soon, even Symfony 5 beta would be a good candidate.
Basically, if you want to upgrade Symfony 1 you will do a migration to a new system and it will not make much difference if you move to for example Zend Framework 3/Laminas vs. Symfony 4. At least you can directly "upgrade" from Symfony 1 to 4, instead of gradually upgrading from over versions 2/3. It will require a whole lot of manual work, though. Essentially you are migrating between different applications. The Symfony docs have some general advice on how to start a migration project like this: https://symfony.com/doc/current/migration
Basically the approach would be to wrap a new application around the old one (a concept commonly called strangler application) and then move functionality to the new application, e.g. route for route, and falling back to the old application when the new functionality does not yet exist. The main reason for choosing an older version of Symfony, say 3.4, would be restrictions on for example the shared PHP version being used. There are other ways around it, but that would mean substantially more work.
Symfony Framework developer here:
Symfony does provide upgrade steps between versions. e.g:
https://github.com/symfony/symfony/blob/2.1/UPGRADE-2.1.md
But upgrading from 1.4 to 4 is BIG and will require tons of work.
I agree: writing the whole app from scratch will be faster from my experience.
Upgrading can take years for stable outcome (depending on your application size of course)
Have a look here:
https://symfony.com/doc/current/setup/upgrade_major.html
The difference between Symfony 1 and 4 might be to important, therefore you might consider starting a new project and take some of your previous code for a nicer and cleaner project.
Upgrading from 1.4 to 4 is a miracle .
Even if you can upgrade to the version 2 and then 3 untill here it's
could be nice , but the version 4 is totally different , so i can
advice you to rewrite your code directly instead of wasting time
updgrading from version to the upper one.
Disclaimer: I wrote and maintain an open-source tool that handles automated instant migrations called Rector.
Since 2018 these migrations are much easier with help of abstract syntax tree (AST). This technology allows to change one pattern in unlimited amount of files at speed of readfile/printfile.
E.g. 1000 controller from Symfony 1 to Symfony 5 will takes similar amount of time as 1 controller. All you need to do is write migration rules. Some of them are ready in Rector, e.g. Symfony 2.8 via Symfony 5 - see Rector sets on Github.
You can learn more about migration of old Symfony Applications
Upgrade symfony 2.8 or php 5.4 first?
How to Upgrade Symfony 2.8 to 3.4
How we Upgraded Pehapkari.cz from Symfony 4 to 5 in 25 days
For anyone still interested in this task, migrating a Symfony 1.x app to a modern Symfony 4.x and up (including Symfony 5.x), we faced exactly this same task with our company and I found this GitHub project that details how to do it using the Strangler Fig design pattern and the Legacy Route Loader approach that Symfony suggests on their website:
https://github.com/dkusmierek/symfony_migration_example
I can vouch that this DOES work, although there are some tweaks here and there you will need to make to make it work for your specific environment. But it should be enough to get you 90% of the way there.

Berkeley Db 4 and later versions compatibility

For Berkeley db, some distro like fedora have both libdb4 and libdb(version 5), so why is this, is version 4 not compatible with future versions? Does my application need to support both versions?
There was a log file format change between version 4 and 5 that requires an upgrade. Essentially, yes, version 4 databases are not strictly compatible with the version 5 runtime. The on-disk data must be upgraded. Not all applications are ready to handle this, so libdb4 is still floating around.
You can find the changelog on Oracle's BDB site, here: http://www.oracle.com/technetwork/database/berkeleydb/downloads/index-082944.html
BDB version 6 has been out for about four years now. That's not much time in the life of a 20+ year old database. So, if you're finding that version 5 is still the widely distributed version (it probably is), then you should write your application to that. It has numerous bugfixes. If you want maximum compatibility with (much) older distros, write your application to version 4.

How to upgrade symfony from 1.1.9 to 2 or 3?

My current working project is an old project (written on 2008). It uses symfony 1.1.9 which is stable version that time.
I have explored on upgrade symfony 1.1.9 to latest version. But couldn't get any documentation related on that. Please help on the same.
It's not possible to upgrade symfony1 project to Symfony2/3. You need to do a rewrite.
Symfony2 was created as a completely new framework. Its concepts are fundamentally different from those known from symfony1. On the other hand, the difference between Symfony2 and Symfony3 is not that big. Backward compatibility is maintained and the update is very easy.
You need to assess if it's worth to do the rewrite. If the project is not heavily developed perhaps it's better to keep it on the old platform.
there is a huge difference between symfony 1 and symfony 2.
you will never find an easy way to make an easy update.
if you want to remain with 1.x branch, my advice will be to update to symfony 1.4.20the last stable version on symfony 1.
but if you have the time and energy, I think that you have to extract database schema from the the actual project and build a new project base on symfony 2.8the last stable version for branch 2.x

What if anything, is Symfony 3

I keep hearing about Symfony 3, in particular the new directory structure, but I can find nothing about a release date. Are there plans to release a new major iteration of symfony?
Yes there are plans but nothing definite yet.
The community section of the Symfony 2 site has plenty of information on these sorts of things.
From: http://symfony.com/doc/current/contributing/community/releases.html
The work on a new major version of Symfony starts whenever enough
major features breaking backward compatibility are waiting on the todo-list.
The next major version will be 3.0.
The next major long term release will be S2.7 schedule for May of 2015. I would not be surprised if serious work on S3.0 starts after that release but that is just a guess. Check the development mailing list and chat rooms for more information.

The downside of using a preview release framework

I'm thining about using symfony 2.0 for my new project. It's only preview a release at the moment, the final release is due in March which is around the same time I expect my project to go live.
Are there any reasons why I shoulnd't be using 2.0?
Reasons? Yes you shouldn't use it because Sensio who "make" Symfony tell you not to.
Even though it close to thier slated march release they could still make wholesale changes to the api which would leave you stranded and with a lot of rewriting on your hands. 1.4 is very stable and well documented and will be supported until at least 2012 and so unless there is something in the S2 technology that you cannot deliver you project without then stick with 1.4.
I was in two minds myself as i am developing app that will not get release until April or later and so was tempted. My plan is to build the apps in 1.4 but to build stripped down skeletons that match the 1.4 builds to see how they perform and to then build into later in 2011 when 2.0 has notched up a few revision numbers, and stabilised, and got a better body of documentation behind it.
The documentation for Symfony2 is really lacking at the moment, and seeing as it's so very different from symfony 1.4 (well of course, it's a total rewrite) it's rather hard to just pick up and use in its current state.
I'd say use 1.4 for now, and when the documentation picks up, give 2.0 a try. 2.0 does look exciting though, I can understand the temptation!

Resources