Legacy Projects
-
Pisses me off when (in this case, my own project that is being resurrected from 6 years ago) uses third party dependencies from DevExpress and Divelements, and now, trying to install the exact DevExpress version from then, my registration key is no longer valid. And Divelements keeled over in 2013, and of course their online registration doesn't work either. Not to mention that even their DLL, when installing it as "evaluation", does with
Invalid pointer
compiler error. Then there's the usual nightmare of .NET version. This code was built with .NET 2.0 and 3.5, neither of which I have installed (I only have 4.5 - 4.6.1), so got to fix all the framework references in a bunch of projects. I suppose there's a utility to do that, maybe even VS2015 has a function for that, but I didn't bother looking. So far, I've got 2 of the 4 applications running - the server app and the schema designer. The form designer is a b*tch because of the DevExpress and Divelements references, I'm keeping my fingers crossed that upgrading the DX references to their latest works, but I'm a pessimist. The Divelements Sandock thing will be a PITA, I'll probably have to replace it with the open source WeifenLuo docking manager, or, IIRC, .NET exposes their docking system now. And of course I get a bunch of deprecation warnings on the Oracle .NET references, but the stuff still works. Though figuring out the tnsnames.ora was a blast to the past, NOT! Word to the wise - when you archive a project, create a VM and put everything there, and make sure it all compiles and builds in the VM. I did that, creating a VM, and the VM still worked, but I appear to never have tried compiling the code. :doh: :sigh: :mad: at myself. MarcImperative to Functional Programming Succinctly Contributors Wanted for Higher Order Programming Project! Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny
.NET 2.0? You lucky bastard! :D I've had VB6 legacy projects that worked with libraries that are long gone, and third party tools that have advanced by 10 (non-compatible) versions, written for hardware that can't be bought anymore, not to mention the 80's database (forgot the name)... Luckily I had a coworker who worked with this sort of stuff almost daily... And liked it (I don't think he learned anything new after 1999 or something, his .NET code was horrible) :wtf: What do you mean this isn't a competition? :D
Read my (free) ebook Object-Oriented Programming in C# Succinctly. Visit my blog at Sander's bits - Writing the code you need. Or read my articles here on CodeProject.
Simplicity is prerequisite for reliability. — Edsger W. Dijkstra
Regards, Sander
-
Wow! Good to know that I'm not the only one in this boat! :laugh: I've finally got the mix to where I'm working in .NET more than VB6 IDE. But there's still two large (330K loc) projects and around 6 dozen modules and utilities that need to be rebuilt... :sigh:
"Go forth into the source" - Neal Morse
-
Pisses me off when (in this case, my own project that is being resurrected from 6 years ago) uses third party dependencies from DevExpress and Divelements, and now, trying to install the exact DevExpress version from then, my registration key is no longer valid. And Divelements keeled over in 2013, and of course their online registration doesn't work either. Not to mention that even their DLL, when installing it as "evaluation", does with
Invalid pointer
compiler error. Then there's the usual nightmare of .NET version. This code was built with .NET 2.0 and 3.5, neither of which I have installed (I only have 4.5 - 4.6.1), so got to fix all the framework references in a bunch of projects. I suppose there's a utility to do that, maybe even VS2015 has a function for that, but I didn't bother looking. So far, I've got 2 of the 4 applications running - the server app and the schema designer. The form designer is a b*tch because of the DevExpress and Divelements references, I'm keeping my fingers crossed that upgrading the DX references to their latest works, but I'm a pessimist. The Divelements Sandock thing will be a PITA, I'll probably have to replace it with the open source WeifenLuo docking manager, or, IIRC, .NET exposes their docking system now. And of course I get a bunch of deprecation warnings on the Oracle .NET references, but the stuff still works. Though figuring out the tnsnames.ora was a blast to the past, NOT! Word to the wise - when you archive a project, create a VM and put everything there, and make sure it all compiles and builds in the VM. I did that, creating a VM, and the VM still worked, but I appear to never have tried compiling the code. :doh: :sigh: :mad: at myself. MarcImperative to Functional Programming Succinctly Contributors Wanted for Higher Order Programming Project! Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny
The question what other Options do we have? I think we do not have an other Option. Develope each and everting by ourselves... it takes to much time. I think we have to live with some dependecies, like we depend on MS, Borland and in worst case (from my Point of view) on some open source source. Bruno
-
.NET 2.0? You lucky bastard! :D I've had VB6 legacy projects that worked with libraries that are long gone, and third party tools that have advanced by 10 (non-compatible) versions, written for hardware that can't be bought anymore, not to mention the 80's database (forgot the name)... Luckily I had a coworker who worked with this sort of stuff almost daily... And liked it (I don't think he learned anything new after 1999 or something, his .NET code was horrible) :wtf: What do you mean this isn't a competition? :D
Read my (free) ebook Object-Oriented Programming in C# Succinctly. Visit my blog at Sander's bits - Writing the code you need. Or read my articles here on CodeProject.
Simplicity is prerequisite for reliability. — Edsger W. Dijkstra
Regards, Sander
Last fall I was handed an MFC project from the late 90's originally created - by a company that long since went poof (hence why we got the work)- by porting from an even older C/*Nix (probably Solaris) application. One of it's dependencies was for something called the Black Ice Imaging SDK[^]. Once we replaced the include block for all the 15yo headers with an include block for the headers in their newest version (at some point they shuffled where what was exposed); everything just worked. :cool:
Did you ever see history portrayed as an old man with a wise brow and pulseless heart, waging all things in the balance of reason? Is not rather the genius of history like an eternal, imploring maiden, full of fire, with a burning heart and flaming soul, humanly warm and humanly beautiful? --Zachris Topelius Training a telescope on one’s own belly button will only reveal lint. You like that? You go right on staring at it. I prefer looking at galaxies. -- Sarah Hoyt
-
Pisses me off when (in this case, my own project that is being resurrected from 6 years ago) uses third party dependencies from DevExpress and Divelements, and now, trying to install the exact DevExpress version from then, my registration key is no longer valid. And Divelements keeled over in 2013, and of course their online registration doesn't work either. Not to mention that even their DLL, when installing it as "evaluation", does with
Invalid pointer
compiler error. Then there's the usual nightmare of .NET version. This code was built with .NET 2.0 and 3.5, neither of which I have installed (I only have 4.5 - 4.6.1), so got to fix all the framework references in a bunch of projects. I suppose there's a utility to do that, maybe even VS2015 has a function for that, but I didn't bother looking. So far, I've got 2 of the 4 applications running - the server app and the schema designer. The form designer is a b*tch because of the DevExpress and Divelements references, I'm keeping my fingers crossed that upgrading the DX references to their latest works, but I'm a pessimist. The Divelements Sandock thing will be a PITA, I'll probably have to replace it with the open source WeifenLuo docking manager, or, IIRC, .NET exposes their docking system now. And of course I get a bunch of deprecation warnings on the Oracle .NET references, but the stuff still works. Though figuring out the tnsnames.ora was a blast to the past, NOT! Word to the wise - when you archive a project, create a VM and put everything there, and make sure it all compiles and builds in the VM. I did that, creating a VM, and the VM still worked, but I appear to never have tried compiling the code. :doh: :sigh: :mad: at myself. MarcImperative to Functional Programming Succinctly Contributors Wanted for Higher Order Programming Project! Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny
At my second professional development job, my boss said that if we can't get the source and compile it, we don't use it. Since then, I've warned colleagues and companies about this. Most agreed. Some didn't and are now in the same situation.
-
Last fall I was handed an MFC project from the late 90's originally created - by a company that long since went poof (hence why we got the work)- by porting from an even older C/*Nix (probably Solaris) application. One of it's dependencies was for something called the Black Ice Imaging SDK[^]. Once we replaced the include block for all the 15yo headers with an include block for the headers in their newest version (at some point they shuffled where what was exposed); everything just worked. :cool:
Did you ever see history portrayed as an old man with a wise brow and pulseless heart, waging all things in the balance of reason? Is not rather the genius of history like an eternal, imploring maiden, full of fire, with a burning heart and flaming soul, humanly warm and humanly beautiful? --Zachris Topelius Training a telescope on one’s own belly button will only reveal lint. You like that? You go right on staring at it. I prefer looking at galaxies. -- Sarah Hoyt
Dan Neely wrote:
everything just worked
You're not supposed to say that. This is a legacy-complain thread ;p
Read my (free) ebook Object-Oriented Programming in C# Succinctly. Visit my blog at Sander's bits - Writing the code you need. Or read my articles here on CodeProject.
Simplicity is prerequisite for reliability. — Edsger W. Dijkstra
Regards, Sander
-
Dan Neely wrote:
everything just worked
You're not supposed to say that. This is a legacy-complain thread ;p
Read my (free) ebook Object-Oriented Programming in C# Succinctly. Visit my blog at Sander's bits - Writing the code you need. Or read my articles here on CodeProject.
Simplicity is prerequisite for reliability. — Edsger W. Dijkstra
Regards, Sander
What do you think the part where I mentioned MFC was. X|
Did you ever see history portrayed as an old man with a wise brow and pulseless heart, waging all things in the balance of reason? Is not rather the genius of history like an eternal, imploring maiden, full of fire, with a burning heart and flaming soul, humanly warm and humanly beautiful? --Zachris Topelius Training a telescope on one’s own belly button will only reveal lint. You like that? You go right on staring at it. I prefer looking at galaxies. -- Sarah Hoyt
-
What do you think the part where I mentioned MFC was. X|
Did you ever see history portrayed as an old man with a wise brow and pulseless heart, waging all things in the balance of reason? Is not rather the genius of history like an eternal, imploring maiden, full of fire, with a burning heart and flaming soul, humanly warm and humanly beautiful? --Zachris Topelius Training a telescope on one’s own belly button will only reveal lint. You like that? You go right on staring at it. I prefer looking at galaxies. -- Sarah Hoyt
I was feeling sorry for you, until you said "everything just worked" (that's where the envy kicked in) ;p
Read my (free) ebook Object-Oriented Programming in C# Succinctly. Visit my blog at Sander's bits - Writing the code you need. Or read my articles here on CodeProject.
Simplicity is prerequisite for reliability. — Edsger W. Dijkstra
Regards, Sander
-
The question what other Options do we have? I think we do not have an other Option. Develope each and everting by ourselves... it takes to much time. I think we have to live with some dependecies, like we depend on MS, Borland and in worst case (from my Point of view) on some open source source. Bruno
0x01AA wrote:
I think we do not have an other Option.
Agreed. I wish I all the pieces properly working in my VM! Marc
Imperative to Functional Programming Succinctly Contributors Wanted for Higher Order Programming Project! Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny
-
Eddy Vluggen wrote:
Simpeler; don't use DevExpress, and try to eliminate any other dependency.
Indeed - the whole app should have been coded with Excel macros! :) Marc
Imperative to Functional Programming Succinctly Contributors Wanted for Higher Order Programming Project! Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny
Sure. Just make sure the version and localization of all Excel installation matches: it's a pain to fix macros that don't work because the commands in the macros themselves are localized ... X|
GOTOs are a bit like wire coat hangers: they tend to breed in the darkness, such that where there once were few, eventually there are many, and the program's architecture collapses beneath them. (Fran Poretto)
-
Sure. Just make sure the version and localization of all Excel installation matches: it's a pain to fix macros that don't work because the commands in the macros themselves are localized ... X|
GOTOs are a bit like wire coat hangers: they tend to breed in the darkness, such that where there once were few, eventually there are many, and the program's architecture collapses beneath them. (Fran Poretto)
That's the most absurd design choice I ever saw in all my life. It's a special stupid kind of stupid, the epitome of what could be wrong.
GCS d--- s-/++ a- C++++ U+++ P- L- E-- W++ N++ o+ K- w+++ O? M-- V? PS+ PE- Y+ PGP t++ 5? X R++ tv-- b+ DI+++ D++ G e++>+++ h--- ++>+++ y+++* Weapons extension: ma- k++ F+2 X If you think 'goto' is evil, try writing an Assembly program without JMP. -- TNCaver When I was six, there were no ones and zeroes - only zeroes. And not all of them worked. -- Ravi Bhavnani
-
My only comment: You are a lucky man to handle "only" 6 year old legacy Projects. I Need to handle 14 years old legacy Projects. Please a can of mercy with me :laugh: Bruno
I've seen ``COPYRIGHT 1966-2015``... That particular program was born on an ``S/360`` and is still alive (not ``GLaDOS`` though :) )
-
At my second professional development job, my boss said that if we can't get the source and compile it, we don't use it. Since then, I've warned colleagues and companies about this. Most agreed. Some didn't and are now in the same situation.
Very reasonable. We do just that, but in some cases (specifically the expensive libs, think 5 or 6 digit price tags) we go a slightly different route: we set up a contract that would guarantee us the right to access their source code in the case the third party devs are no longer available, able or willing to maintain their lib. We don't expect this to happen anytime soon, but our application is already 25+ years old, and it might last for another 10+ years easily. So better be safe than sorry. Of course for versioning it's also a challenge to make sure each version is checked in in such a way that it uses the correct versions of the third party libraries. For those with source code it's easy, for those without, we have a mixed approach of either versioning the binaries (for those that change a lot) or keeping all versions available in separate paths (for those that are mostly stable).
GOTOs are a bit like wire coat hangers: they tend to breed in the darkness, such that where there once were few, eventually there are many, and the program's architecture collapses beneath them. (Fran Poretto)
-
Pisses me off when (in this case, my own project that is being resurrected from 6 years ago) uses third party dependencies from DevExpress and Divelements, and now, trying to install the exact DevExpress version from then, my registration key is no longer valid. And Divelements keeled over in 2013, and of course their online registration doesn't work either. Not to mention that even their DLL, when installing it as "evaluation", does with
Invalid pointer
compiler error. Then there's the usual nightmare of .NET version. This code was built with .NET 2.0 and 3.5, neither of which I have installed (I only have 4.5 - 4.6.1), so got to fix all the framework references in a bunch of projects. I suppose there's a utility to do that, maybe even VS2015 has a function for that, but I didn't bother looking. So far, I've got 2 of the 4 applications running - the server app and the schema designer. The form designer is a b*tch because of the DevExpress and Divelements references, I'm keeping my fingers crossed that upgrading the DX references to their latest works, but I'm a pessimist. The Divelements Sandock thing will be a PITA, I'll probably have to replace it with the open source WeifenLuo docking manager, or, IIRC, .NET exposes their docking system now. And of course I get a bunch of deprecation warnings on the Oracle .NET references, but the stuff still works. Though figuring out the tnsnames.ora was a blast to the past, NOT! Word to the wise - when you archive a project, create a VM and put everything there, and make sure it all compiles and builds in the VM. I did that, creating a VM, and the VM still worked, but I appear to never have tried compiling the code. :doh: :sigh: :mad: at myself. MarcImperative to Functional Programming Succinctly Contributors Wanted for Higher Order Programming Project! Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny
You remembered me back old days when a .NET version changed and I was getting so many assembly errors in Visual Studio that was really annoying. I love Microsoft and backwards compatibility in all their products. :) :) :)
-
I feel your pain... We're philosophical about power outages here. A.C. come, A.C. go.
-
I was feeling sorry for you, until you said "everything just worked" (that's where the envy kicked in) ;p
Read my (free) ebook Object-Oriented Programming in C# Succinctly. Visit my blog at Sander's bits - Writing the code you need. Or read my articles here on CodeProject.
Simplicity is prerequisite for reliability. — Edsger W. Dijkstra
Regards, Sander
The codebase as a whole was lots of 'fun' ("our training will make sure the user never tries doing any steps out of order or stop a procedure halfway through in favor of something else", "I fixed all the graphics glitches by stuffing some extra calls to repaint the control, it's all good now") in ways that kept me and a coworker busy fixing stuff for a while; it was just the library upgrade that went smoothly.
Did you ever see history portrayed as an old man with a wise brow and pulseless heart, waging all things in the balance of reason? Is not rather the genius of history like an eternal, imploring maiden, full of fire, with a burning heart and flaming soul, humanly warm and humanly beautiful? --Zachris Topelius Training a telescope on one’s own belly button will only reveal lint. You like that? You go right on staring at it. I prefer looking at galaxies. -- Sarah Hoyt
-
Very reasonable. We do just that, but in some cases (specifically the expensive libs, think 5 or 6 digit price tags) we go a slightly different route: we set up a contract that would guarantee us the right to access their source code in the case the third party devs are no longer available, able or willing to maintain their lib. We don't expect this to happen anytime soon, but our application is already 25+ years old, and it might last for another 10+ years easily. So better be safe than sorry. Of course for versioning it's also a challenge to make sure each version is checked in in such a way that it uses the correct versions of the third party libraries. For those with source code it's easy, for those without, we have a mixed approach of either versioning the binaries (for those that change a lot) or keeping all versions available in separate paths (for those that are mostly stable).
GOTOs are a bit like wire coat hangers: they tend to breed in the darkness, such that where there once were few, eventually there are many, and the program's architecture collapses beneath them. (Fran Poretto)
How much effort do you put into monitoring the vendors to make sure if they go under that that provision of the contract is actually executed? I could easily see a scenario where: 0) several years pass from when you sign the contract with that extra provision and everyone involved in it leaves the vendor. 1) the vendor goes out of business. 2) the liquidator can't find anyone willing to buy ownership of the library and just formats the source control server obliterating the code. 3) a few more years pass. 4) you have a problem, try to contact the vendor, and discover you're elephanted.
Did you ever see history portrayed as an old man with a wise brow and pulseless heart, waging all things in the balance of reason? Is not rather the genius of history like an eternal, imploring maiden, full of fire, with a burning heart and flaming soul, humanly warm and humanly beautiful? --Zachris Topelius Training a telescope on one’s own belly button will only reveal lint. You like that? You go right on staring at it. I prefer looking at galaxies. -- Sarah Hoyt
-
Pisses me off when (in this case, my own project that is being resurrected from 6 years ago) uses third party dependencies from DevExpress and Divelements, and now, trying to install the exact DevExpress version from then, my registration key is no longer valid. And Divelements keeled over in 2013, and of course their online registration doesn't work either. Not to mention that even their DLL, when installing it as "evaluation", does with
Invalid pointer
compiler error. Then there's the usual nightmare of .NET version. This code was built with .NET 2.0 and 3.5, neither of which I have installed (I only have 4.5 - 4.6.1), so got to fix all the framework references in a bunch of projects. I suppose there's a utility to do that, maybe even VS2015 has a function for that, but I didn't bother looking. So far, I've got 2 of the 4 applications running - the server app and the schema designer. The form designer is a b*tch because of the DevExpress and Divelements references, I'm keeping my fingers crossed that upgrading the DX references to their latest works, but I'm a pessimist. The Divelements Sandock thing will be a PITA, I'll probably have to replace it with the open source WeifenLuo docking manager, or, IIRC, .NET exposes their docking system now. And of course I get a bunch of deprecation warnings on the Oracle .NET references, but the stuff still works. Though figuring out the tnsnames.ora was a blast to the past, NOT! Word to the wise - when you archive a project, create a VM and put everything there, and make sure it all compiles and builds in the VM. I did that, creating a VM, and the VM still worked, but I appear to never have tried compiling the code. :doh: :sigh: :mad: at myself. MarcImperative to Functional Programming Succinctly Contributors Wanted for Higher Order Programming Project! Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny
The one mistake you made was not actually working from the VM you built! Nowadays, we do all of our development from our VMs. We save copies of them in folders dated to the major releases, by customer, and clean them up after a final release. Plus SVN/Git for the source. We USUALLY buy source with 3rd party components. I wish you luck!
-
How much effort do you put into monitoring the vendors to make sure if they go under that that provision of the contract is actually executed? I could easily see a scenario where: 0) several years pass from when you sign the contract with that extra provision and everyone involved in it leaves the vendor. 1) the vendor goes out of business. 2) the liquidator can't find anyone willing to buy ownership of the library and just formats the source control server obliterating the code. 3) a few more years pass. 4) you have a problem, try to contact the vendor, and discover you're elephanted.
Did you ever see history portrayed as an old man with a wise brow and pulseless heart, waging all things in the balance of reason? Is not rather the genius of history like an eternal, imploring maiden, full of fire, with a burning heart and flaming soul, humanly warm and humanly beautiful? --Zachris Topelius Training a telescope on one’s own belly button will only reveal lint. You like that? You go right on staring at it. I prefer looking at galaxies. -- Sarah Hoyt
In our most recent contract that's been taken care of by an escrow who will make sure we get the code when push comes to shove. Sell-outs and liquidation won't change that - whoever buys the company or their assets will have to accept that we will get the code no matter what. (and probably most of the other clients as well).
GOTOs are a bit like wire coat hangers: they tend to breed in the darkness, such that where there once were few, eventually there are many, and the program's architecture collapses beneath them. (Fran Poretto)
-
.NET 2.0? You lucky bastard! :D I've had VB6 legacy projects that worked with libraries that are long gone, and third party tools that have advanced by 10 (non-compatible) versions, written for hardware that can't be bought anymore, not to mention the 80's database (forgot the name)... Luckily I had a coworker who worked with this sort of stuff almost daily... And liked it (I don't think he learned anything new after 1999 or something, his .NET code was horrible) :wtf: What do you mean this isn't a competition? :D
Read my (free) ebook Object-Oriented Programming in C# Succinctly. Visit my blog at Sander's bits - Writing the code you need. Or read my articles here on CodeProject.
Simplicity is prerequisite for reliability. — Edsger W. Dijkstra
Regards, Sander
The legacy project I am working on right now is in Core PHP/jquery. No Framework, Just Core PHP.