What is the best strategy and language to keep your projects updated?

ferhh80

Beta member
Messages
2
Location
Guatemala
Hi all. In the company I work for, we have had some discussions about the best strategy to keep our products up to date. Actually, we develop comercial software using PHP 5 or 7, with Symfony 3.4 as our framework.

Nevertheless, Symfony as well as PHP, tend to change to fast and abrupt from version to version. For example, if you develop an app in Symfony 2.x, there is no easy way to upgrade it to Symfony 3.x or 4.x. The problem we see here, is that in 2 or 3 years we will be using Symfony and PHP, but with 3 or 4 different Symfony versions (Symfony 2.4, 2.7, 3.4, 4.0 and so on). Even though it's the same language and framework, maintenance could get really difficult, specially if you have 15 or 20 projects going on at the same time.

I have developed software using ASP.net and upgrading an old project to a newer version is really easy (basically you open the old project using the new version of Visual Studio). Someone told me that the same goes for Java, that makes really easy to upgrade a project developed in java 8 to java 11, for example, whereas in Symfony this is not like opening the project in a new Symfony version.

Ultimately, we are thinking about choosing a new language / framework that is capable of ensuring certain level of compatibility between versions, in order to ensure that jumping from older to newer versions won't be a headache in 3 or 4 years.

With that in mind, here are my questions:

1) Do you know other language / framework / technology that handles this "version changes" in a better way, so it makes you easy to update older projects?

2) What would you advice me to do in this scenario regardless the technology / framework or language used to develop software, in order to keep our projects up to date in an easy way?
 
I might be dumb but assembly code C and whatnot is pretty universal and lots of open source software is written as source code and distributed and the user compiles the binary he needs for whatever os he runs or you offer.
 
1) Do you know other language / framework / technology that handles this "version changes" in a better way, so it makes you easy to update older projects?

2) What would you advice me to do in this scenario regardless the technology / framework or language used to develop software, in order to keep our projects up to date in an easy way?

I'm a .NET Developer, primarily C#. Languages, frameworks, and platforms always evolve. We have VB6, VB.NET, C# (our current standard) based apps, that are written in a mix of ASP.NET Webforms, MVC, and a couple recent ventures into .NET Core.

There'll always potentially be breaking changes in newer versions, no matter what language/framework you're using. Always be newer/better things (i.e. MVC over Webforms). Migrating from VB6 to VB.NET/C# isn't necessarily a simple task. Migrating from VB.NET to C# isn't either. Migrating from Webforms to MVC definitely isn't (we do a lot of all of these).

Best thing to do? Make your applications modular. It's more about the architecture, rather than the language/framework. If you architect your applications in a way that they're modular (i.e. having a separate front end project that simply makes backend calls to a REST API), is more important. Because then you can update the components individually/more quickly.
 
Thanks for the anwers. Perhaps that's the best strategy, make modules and include the use of APIs, nevertheless, that doesn't eliminates the fact that you are always going to have those modules in different versions of the software.

I understand that you can't totally avoid this, but for example if you developed some software using Visual Studio 2005 with C#, it's easy to update the project and continue its development using Visual Studio 2017, with C#. That means you can upgrade projects that are at least 10 years old. That is not something you can do between Symfony 2.4 and Symfony 4 for example, and there are just 4 years between both of this versions.


Migrating between languages (C# vs visual basic) is a totally different topic.
 
Thanks for the anwers. Perhaps that's the best strategy, make modules and include the use of APIs, nevertheless, that doesn't eliminates the fact that you are always going to have those modules in different versions of the software.

I understand that you can't totally avoid this, but for example if you developed some software using Visual Studio 2005 with C#, it's easy to update the project and continue its development using Visual Studio 2017, with C#. That means you can upgrade projects that are at least 10 years old. That is not something you can do between Symfony 2.4 and Symfony 4 for example, and there are just 4 years between both of this versions.


Migrating between languages (C# vs visual basic) is a totally different topic.

The VS2005 -> VS2017 example isn't necessarily true either. There can be breaking changes in compiler versions (MSBuild) - and in the real-life scenario of VS2010 -> VS2012+, it required a different solution format and broke backwards compatibility to anything before VS2012. There's also issues with things like Report Viewer tooling/controls, SSIS projects, database projects and such like that, that aren't always compatible between versions (and for new versions of VS, you have to wait for the new version to come out of your tooling).

Going by just pure source language tho; you'd most likely be fine. But if there's any other modules, packages, tooling, etc. that's used - there's still compatibility snags for older/newer versions. Gotta watch for those.
 
Back
Top Bottom