Join devRant
Do all the things like
++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatar
Sign Up
Pipeless API
From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple API
Learn More
Search - "backward compatibility"
-
"Kids, which organization has poorly documented projects?"
"Apache Software Foundation!"
"Kids, which organization has poorly maintained projects?"
"Apache Software Foundation!"
"Kids,Which organization breaks backward compatibility with each release?"
"Apache Software Foundation!"3 -
FUCK FUCK FUCK
Started working on devRantron after a month holiday.
Major version upgrade to 4 different packages. All the upgrades are breaking the current configurations.
I just fucking wish JS community would understand the importance of backward compatibility.5 -
Those who do not remember history are doomed to have serious backward compatibility problems. -- Expert C Programming2
-
this code is messy .. it has to be refactored..
abstact those classes to commom interfaces .. create a base class for all those common classes .. make this a parameter, make that a setting.. generalize this, pass a behaviour to that.. separate responsobilities..
hmm .. need to handle that special case .. let's just add a temp method for now to get it compiling .. //todo this later .. maybe add a couple virtual bools to handle the base class behaviour
238 compilation errors! .. let's do a static var for now on this.. and just add this for backward compatibility .. maybe hardcode that dll name, I know it'll NEVER change..
aah finally, all compiles..
oh..
this code is messy .. it has to be refactored.. -
Everybody is criticizing Microsoft for leaving too much legacy code in Windows, etc., but let me tell you that I prefer 100% that and have lifetime backward compatibility than having to deal with Google bullshit.
Google sucks ass.
It's one of the most dev unfriendly company on this planet (along with Facebook).
You can't fucking change BASIC stuff in Android SDK every fucking version.
You just can't!
You can't use a system of "PERMISSIONS" each developer has to set in its application and each user has to accept during the installation, that a few versions later become USELESS... because "Hmmm… no, It's not enough, let's make a new privileged permission that makes the old one fucking worthless".
YOU FUCKING, TOXIC, BASTARDS.
It's my app, my code, my device, my fucking conditions. If I want to install viruses on my device, I should be able to do it.
I shouldn't have to call fucking Sundar fucking Pichai fucking CEO of fucking GOOGLE.
USERS != BABIES.
DEVS != CRIMINALS
We are the reason you have a fucking job, fucking food on your fucking table.
I want a fucking GOD_MODE permission in the next SDK, assholes!
You can't REMOVE fucking "Android.OS.getSerial()" making it only for system apps.
It's not sensible data… and if It's in your opinion, you've already created a "android.permission.READ_PHONE_STATE", so what else do you want, fucking asshole?
Right, you want to introduce "android.permission.READ_PRIVILIGED_PHONE_STATE" to make obsolete the other one, son of a bitch!
I don't fucking use you're garbage Google Play Store, no worries! I won't upload my app on your servers, bitch!
They've created a monopoly in the industrial space (PDAs) and they keep making fucking wrong decisions every single year.
My job is already stressful, why you can't just stop making it worse? fml8 -
I want to explain to people like ostream (aka aviophille) why JS is a crap language. Because they apparently don't know (lol).
First I want to say that JS is fine for small things like gluing some parts togeter. Like, you know, the exact thing it was intended for when it was invented: scripting.
So why is it bad as a programming language for whole apps or projects?
No type checks (dynamic typing). This is typical for scripting languages and not neccesarily bad for such a language but it's certainly bad for a programming language.
"truthy" everything. It's bad for readability and it's dangerous because you can accidentaly make unwanted behavior.
The existence of == and ===. The rule for many real life JS projects is to always use === to be more safe.
In general: The correct thing should be the default thing. JS violates that.
Automatic semicolon insertion can cause funny surprises.
If semicolons aren't truly optional, then they should not be allowed to be omitted.
No enums. Do I need to say more?
No generics (of course, lol).
Fucked up implicit type conversions that violate the principle of least surprise (you know those from all the memes).
No integer data types (only floating point). BigInt obviously doesn't count.
No value types and no real concept for immutability. "Const" doesn't count because it only makes the reference immutale (see lack of value types). "Freeze" doesn't count since it's a runtime enforcement and therefore pretty useless.
No algebraic types. That one can be forgiven though, because it's only common in the most modern languages.
The need for null AND undefined.
No concept of non-nullability (values that can not be null).
JS embraces the "fail silently" approach, which means that many bugs remain unnoticed and will be a PITA to find and debug.
Some of the problems can and have been adressed with TypeScript, but most of them are unfixable because it would break backward compatibility.
So JS is truly rotten at the core and can not be fixed in principle.
That doesn't mean that I also hate JS devs. I pity your poor souls for having to deal with this abomination of a language.
It's likely that I fogot to mention many other problems with JS, so feel free to extend the list in the comments :)
Marry Christmas!34 -
FUCKING IE!
Anyone please remember to ask if the project|s that you're going to work on do|es need Internet Explorer support.
If it's the case just expect any resemblance of modern frontend development skills go backwards into the backward compatibility territory and never going forward.
I'll start looking for another job, can't be bothered for this payment and regressing my dev skills for client needs.
Again FUCK YOU IE!6 -
Solved a problem while maintaining backward compatibility using reflection... Then i had to spend half an hour to justify using reflection.
Reflection is your friend (just don't overuse it)3 -
Fuck backward compatibility
Because IOS 9 and Android 4.4 doesn't support arrow functions, I have to refactor almost 90% of the code4 -
!rant
That level of satisfaction when you successfully port a Python2 Project to Python3 and implement proper backward-compatibility - without 2to3! -
When java was facing extinction, during the JavaScript, Node, and reactive programming hype. It did what it had always done. just adapt to the hype and maintain backward compatibility. We can all learn a thing or two from the humble java. It never rushes, it's patient. Be calm and wait before you hype yourself.2
-
Rant..
Realised I was working with the outdated version of JavaScript library and all my months effort needs redo. Shit!!! Why do devs change code so much that backward compatibility becomes an issue.....2 -
Want to hear another joke?
Blue Prism allows you to export stuff from version 6.7 to 6.3.
However they changed 𝘷𝘦𝘦𝘦𝘦𝘳𝘺 slightly the way they store the position of the nodes. No new features -or at least nothing that you would care about- but the structure of the node itself want went from
```
<positionx>1</positionx>
<positiony>2</positiony>
<width>3</width>
<height>4</height>
```
To
```
<position x=1 y=2 w=3 h=4></position>
```
The whole project collapsed to a single point, catastrophic consequences as far as exception handling. A generic "fuck you" for no real reason other than the sheer malice of those beasts of burden who developed Blue Prism in the first place.
And I have two different versions of Blue Prism on dev and prod :)2 -
While attempting to quit smoking and after spending a full day trying to understand why the previous devs took this approach to encrypting a string and my lack of nicotine addled brain not allowing me to see that this was a “Secure”String and so uses a machine specific key (that’s why the code that worked locally wouldn’t run on production 😑) this is my rant on comments added to the helper I had to write
/// <summary>
/// If you are using this class and it's not for backward compatibility - then you probably shouldn't be using it
/// Nothing good comes from "Secure" strings
/// Further to this Secure strings are only "useful" for single user crypto as the encryption uses the login creds, transferring
/// this data to another client will result in them never being able to decrypt it
///
/// Windows uses the user's login password to generate a master key.
/// This master key is protected using the user's password and then stored along with the user's profile.
/// This master key then gets used to derive a number of other keys and it's these other keys that are used to protect the data.
///
/// This is also a broken crypto method via injection (see Hawkeye http://hawkeye.codeplex.com/) plus the string is stored in plain
/// text in memory, along with numerous other reasons not to use it.
/// </summary>
public class SecureStringHelper
{3 -
Y'all can bash me for it, but Python is one language that ought to be banned along with Javascript...
Amount of times that it breaks or have incomplete implementation is absurd. I just had to deal with idiotic developer who just love to break backward compatibility (looking at you numpy), by changing the type or function name by literally one letter which break older software written in Python that were still in use. (They never specify version for dependencies.) The best part is when they intentionally delete older dependency anyway even if the version is specified.
There's a reason why I do things in C language rather than any other languages, one of the big thing about it is that almost every libraries/code have kept backward compatibility in mind.19 -
I understand the reasoning behind switching to a new, maybe better, technology, but for fuck sake, it’s against typical Microsoft strategy to “kill and shoot to the dead corpse” something instead of maintaining backward compatibility. Why they’ve changed?
I still can develop VB6 software for Windows 11 that just works. But you removing newer tools for no reason.
In short: Xamarin is dead, and that’s alright, but they are even deciding to “remove” development tools from future updates of VS 2022. Why?? Keep it optional, allow me to write legacy code (just 4 years old actually) a bit longer. 🙃
And also, .NET MAUI doesn’t seem “great”, at least at the first sight.
Why you’re forcing me to switch to it if there are 0 benefit for my product?
It’s so bad the only way to bring developers is this one?!
What is incredible to me is that the “industry field”, which is HUGE is so often ignored because of the “customers field”. Keep them separated. If you don’t want to support old tools, just don’t, but leave them there.
They killed Windows Mobile 6.5 which was old but still alive and fine in the industries, you had the biggest market share in PDAs and decided to give it to fucking Google.
The manufacturers kept selling WM devices even in 2020… and they stopped just because you stopped selling licenses.
You acquired Xamarin, gave everyone for free the tools to keep writing .NET for Android and move the industry apps, and now you are saying “actually fuck you, do it again, even though nothing really changes, but convert your entire project to this bs we’ve created”. Why???
Microsoft response: it’s just a few clicks and everything works fine.
My response: No, it’s not… the entire UI is rendered in a different way, I have to rewrite the whole UI of my app and a lot of modules stopped working because of nuget packages I can’t install anymore…
I have to spend additional time to make it work THE SAME as before, not better. So what’s the fucking point?17 -
I recently tried to prototype a few pages for a new webapp I'm working on and--because I'm a masochist--decided to try something other than Bootstrap. It seems that no one can support backward compatibility and even Foundation's examples don't work with their current version.
Folks, add new stuff all you want, but don't break what works. If you do, at least update your damn example code! -
The absence of backward compatibility in php updates should be illegal and the developers responsible for that should be trampled by an elephant with the PHP logo painted on its side.12
-
C++ is the building blocks for many high-level programming languages, and since 1984 its first appearance in the markets the C++ core committee developers have introduced its 4 new versions which are C++03 (ISO/IEC 14882:2003 second edition), C++11 (third edition), C++14 (fourth edition) and C++17 is the fifth edition. With each new version, developers introduced new features, libraries and APIs in it.
C++ introduced as the extension of C programming language which made C++ as a compiled programming language, which means the developer required a C++ compiler to translate the C++ code to its equivalent machine or byte language, so the Operating system of the computer can execute the program.
There are various C++ compilers in the market and most of them are open source and free to use, however conventionally when we say C++ compiler, we basically talk about GCC which stands for GNU Compiler Collection.
What is GCC?
GCC stands for GNU Compiler Collection, and it is a collection of programming compilers which induce C, C++, Objective-C, Fortran, and some versions of Java. The first version of GCC introduced in 1987 and it was also known as GNU C compiler which became the standard compiler for C programming language, in that same year GCC also provided Compiler support for the C++ programming language.
Now GCC has various versions and each version give specific support for C++ versions, by now if we look at all the versions of GCC, we have a stable GCC for every version of C++, but there are some exceptions with C++11.
C++11:
C++11 introduced as the 2nd update version of C++, it suffixes 11 because it released in 2011 or because on August 12, 2011, ISO gives official approval to it. Formally C++11 known as C++0X because developers were expecting the new update released in 2010, but with its release in 2011, the core committee developer of C++ changed its name by C++0X to C++11.
C++ 11 replaced the old version of C++03, and it also brings many new features for the C++ developers. The main aim of designing C++11 to stabilize and maintain the backward compatibility of new C++ version with the C+98 and C programming language and that’s become the main reason why core committee developers only introduced new features in the old standard library rather than extending the core language.
GCC does not give Full Support to C++11:
GCC version GCC 4.8.1 purpose the first feature-complete implementation of the C++11 standard, however, the 4.8 and 4.7 does not give the full support for the C++11. The current version of GCC provides the major support for all the standard features of C++11 but if you are using the GCC 4.8 or 4.7 versions then your GCC only provide you with the experimental support for the C++11.
To use the Experimental support of GCC you need to enable it first before you compile or run you C++ 11 version code.
use code std=c++11 or -std=gnu++11 to enable the experimental support for C++11.17 -
We have an internal nuget package that wraps up the IConfiguration+ConfigurationBuilder for various .net core console/service apps (TL;DR, because people got creative), and it has a dictionary property for the common sections we use. AppSettings (for backward compatibility), ConnectionStrings, and ServiceEndpoints. If the need arises, I can add methods to return any type of object (no one has requested yet, we try to keep configs dead simple)
ex. var myDatabaseConnectionString = ConfigurationManager.ConnectionStrings["MyDatabase"];
Code review for someone who updated a .net framework app to .net core and they wrote their own IConfiguration wrapper for accessing the appsettings.json file, so I pointed out that we already had a library for that.
In the reply, he said he couldn't use our library because it had an 'AppSettings' property and since his appsettings.json file didn't have that section, he didn't want to cause a runtime exception.
OK, WTF...I even sent him a link to the documentation (includes explaining the backward compatibility part)...why the frack would you think because a property exists and you don't use it, that would cause some kind of runtime exception?
We have dozens of .net framework apps migrated to .net core with zero code changes and no one ever brought this up as a concern (because, why would they?)
Deep breath...ahhh...I respond that not having an AppSettings section in the appsettings.json file won't cause an exception, if you don't have one, don't need it, you don't have to use it.
He went ahead merged+committed his code anyway with his own IConfiguration+ConfigurationBuilder plumbing.
Code addiction is real kids...it's real.2 -
Why has nobody at Microsoft thought of implementing optional parameters for functions in SQL Server? I guess backward compatibility is something they haven't heard of. I mean hell, Postgres can do it easily.2