5 ms·
Wow, I kinda work in a legacy (3-4 years old), not very easy codebase, where new releases affect other parts and bring new bugs, but I cannot imagine the state
by kostarelo 7y ago
Wow, I kinda work in a legacy (3-4 years old), not very easy codebase, where new releases affect other parts and bring new bugs, but I cannot imagine the state of yours. Not being able to do an update?
- joefourier 7y agoHow can a 3-4 year old codebase be legacy? That's not a lot of time for the platform or technologies it uses to become crusty and obsolete.
- defined 7y agoSome codebases are legacy from the word go. Legacy is more about the maintainability than the age of the codebase.
- randallsquared 7y agoMaybe it wasn't built with containerization in mind. ;)
- bdcravens 7y agoI often surprise myself - I see commits that are 4 years old that I could have sworn I implemented just a few months ago
- notdang 7y agomaybe it's javascript
- davidjnelson 7y agoIn the book Working Effectively With Legacy Code the author defines “legacy” as “code without tests”.
- joefourier 7y agoThat's not really a popular or even useful definition. According to that author, a Go microservice I wrote yesterday would be legacy code, while a 25 year old Turbo Pascal scientific instrumentation program running on MS-DOS, which some poor soul still has to maintain is not, because the programmers wrote a few tests for it back in the day?
- davidjnelson 7y agoInteresting. Is your definition of legacy code “code that was written <x> time period ago”? Wikipedia defines legacy code in several ways. So sure, that term has multiple meanings. Code without tests is a definition mentioned in the “modern representations” section. Wikipedia indicates the original meaning was code that was dependent on a deprecated underlying foundation such as on os / framework / etc. This is a snippet from the “modern representations” section of the Wikipedia entry. Basically the idea is legacy code is code that is hard to change: “Eli Lopian, CEO of Typemock, has defined it as "code that developers are afraid to change".[1] Michael Feathers[2] introduced a definition of legacy code as code without tests, which reflects the perspective of legacy code being difficult to work with in part due to a lack of automated regression tests. He also defined characterization tests to start putting legacy code under test.” https://en.m.wikipedia.org/wiki/Legacy_code https://en.m.wikipedia.org/wiki/Legacy_code
- goto11 7y agoCorrect, because the Turbo Pascal program can be safely modified and extended. If the need arises you can port it to a more modern environment. Code without any tests can't be modified without risk of unexpected breakage, so it is basically legacy the moment it is written.
- joefourier 7y agoHaving tests is not a panacea. There's no guarantee that any of the tests are automatically well-written - they could be too narrow in scope, overly brittle, or be so numerous that each minor change requires hours of automated testing, making progress a huge chore. That's not to say you can even run, let alone compile some legacy code without a large amount of effort. That's the whole point of the term, that they rely on obsolete, unsupported or just ancient OS, hardware or platform, often requiring emulation, special development environment. Redefining it to mean "code without tests" just confuses things.
- c-smile 7y agoI am working on Sciter (https://sciter.com https://sciter.com) that appeared in Norton Antivirus in 2007, so it is used in production 12 years already. And I never did full rewrite. The development started as "C with classes" when std:: was not the thing so I had and still have my own array<T>, string<T>, hash_map<T>, etc. Since then I've added GPU support, Mac and Linux versions, scripting … a lot of features. But not full rewrite and no need for that that far. Only incremental refactorings when they needed, e.g. when all platforms got reliable C++11 compilers I started using std::function instead of those ugly inner structures. Am I lucky or what?
- novok 7y agoWhy do you think electron is more popular than sciter? They seem to target similar things? Is 'sciter html' a bit different than 'chrome html', so you can't make a web app out of the same code base too?
- c-smile 7y ago"They seem to target similar things?" No - different. Electron was designed to run web sites pretty much as they are. It is a standalone browser combined with server (Node.Js) under common umbrella. So it the same client-browser thing - client in one process, server part in another process. Communication between them uses IPC rather than over-the-wire as in case of browser/remote-server. And Sciter is an embeddable thing - it runs in the same GUI thread as the application. So Sciter is for native applications where window layout is defined in HTML/CSS terms. So the only common things between Electron and Sciter is use of HTML/CSS. Sciter actually is closer to WPF (HTML/CSS instead of XAML) than to Electron. Or to GTK for that matter - GTK also uses CSS styled DOM as does Sciter.
- bdavis__ 7y agothe usual definition of "legacy system" is a system that uses tools, technologies, and techniques that an organization would not use for new development. so, in SF, things change on a time scale of weeks. your 'go microservice' might be considered a legacy system. here in fly over country, COBOL on the 360 might be considered apropro for use today.