Skip to main content
187 votes

Why do library developers deliberately break existing code?

A major version upgrade literally means they intend to break things. You shouldn't upgrade to a new major version unless you're prepared to deal with it. Most build systems have a way to specify you'...
Karl Bielefeldt's user avatar
94 votes
Accepted

How to deal with fear of taking dependencies

... We are forced to stay on the lowest API level of the framework (.NET Standard) … This to me highlights the fact that, not only are you potentially restricting yourselves too much, you may also be ...
David Arno's user avatar
  • 39.6k
55 votes

Why do library developers deliberately break existing code?

My point, and question, is: Why do library developers knowingly break existing code like this? Why not at least have it default to either true or false, whichever is the most reasonable? Because ...
Flater's user avatar
  • 59.5k
51 votes

How to deal with fear of taking dependencies

We are forced to stay on the lowest API level of the framework (.net standard). The reasoning behind this is that a new platform could one day arrive that only supports that very low API level. The ...
berry120's user avatar
  • 1,747
16 votes
Accepted

Why are developers still using proprietary third-party libraries?

Three obvious reasons: There's no open source equivalent, The company wants paid-for support that they can rely on. They are a bit behind the times and do not yet trust open source libraries.
David Arno's user avatar
  • 39.6k
16 votes
Accepted

How do I handle malformed compressed input data, which crashes external library?

If you are going to use a native library which might crash (regardless whether the input data is malformed, or that library has a bug), the only safe way to prevent your own application against being &...
Doc Brown's user avatar
  • 220k
12 votes

Why do library developers deliberately break existing code?

Some good answers already, however, let me add my two cents from some real-world experience. More than often, though usually acting in good faith, some API designers are pretty ignorant what kind of ...
Doc Brown's user avatar
  • 220k
11 votes

How to deal with fear of taking dependencies

On the whole these things are good for your customers. Even a popular open source library might be impossible for them to use for some reason. For example, they may have signed a contract with their ...
Ewan's user avatar
  • 84.4k
11 votes

What to do when third party won't fix bug

This is one of the drawbacks of using third-party libraries: as you get more and more dependent of them, you're at the mercy of the company which develops those libraries. Not only they can set the ...
Arseni Mourzenko's user avatar
10 votes

What is the correct way of adding third-party code into a C or C++ project?

@17of26 gave a lot of good reasons why #2 is dangerous, and why #1 makes more sense. But I think there is one thing missing, for which I recommend the following: download the code of the library you ...
Doc Brown's user avatar
  • 220k
9 votes
Accepted

How do open source libraries like Apache Commons fit into the microservices architecture?

It's about libraries created by you to share common functionality when you're trying to avoid rewriting the same code in your multiple microservices. It creates a situation where you have a (loose) ...
Kayaman's user avatar
  • 1,980
8 votes
Accepted

Need to call private method in third party library. Copy all class or use reflection?

If the functionality is not part of the library's API, you shouldn't use it. There's no guarantee it will still be available in future versions, and that it won't change. So using reflection to access ...
amon's user avatar
  • 136k
8 votes
Accepted

Software Design: Decoupling when highly dependent on a third party library

heard that coupling is a bad thing and should be avoided as much as possible I think this is overly dogmatic. In some cases it makes more sense to just accept the tight coupling. This is especially ...
JonasH's user avatar
  • 6,339
7 votes

How to deal with fear of taking dependencies

Short answer is that you should start introducing third-party dependencies. During your next stand-up meeting, tell everyone that the next week at work will be the most fun they have had in years -- ...
Double Vision Stout Fat Heavy's user avatar
7 votes
Accepted

Put source code for dependencies within the project itself

Yes, this is called bundling. It has known weaknesses (for instance, you don't get security updates or bugfixes for the third-party library unless you re-import their sources, and it is probably more ...
Kilian Foth's user avatar
7 votes
Accepted

Best practice for storing third party tools

It makes fully sense to store and keep installers of any third party tools you are using in your development process (not just your build process) in a location under your control. It does not matter ...
Doc Brown's user avatar
  • 220k
6 votes

What is the correct way of adding third-party code into a C or C++ project?

You always want to package any dependencies with your project. Your software is going to be built and tested with a particular version of a specific library. It's not guaranteed to work with any ...
17 of 26's user avatar
  • 4,850
6 votes
Accepted

Should we include the entire sources of the libraries used in our project?

Putting the entire source of a library in your project allows you to: Maintain and update the library in the event that it is abandoned. Make alterations to the library to advance goals for your ...
Robert Harvey's user avatar
5 votes

Using third-party libraries - always use a wrapper?

This is one of those things they tell you to do in school, and it sounds reasonable in theory, but there simply aren't many cases where it's worth your time in practice. Don't waste your time writing ...
Beefster's user avatar
  • 303
5 votes
Accepted

Should you "rebrand" the exception of the library you're using?

Generally speaking, it's fine to use a language's own exceptions, since these are commonly understood. I wouldn't use 3rd party exceptions, since using that 3rd party library isn't part of the API you'...
Glorfindel's user avatar
  • 3,167
5 votes
Accepted

Is it a good idea to have a fork of a library's public repo in my solution?

There are two aspects to your question that I want to answer separately Having a copy of a library in your repository If you store a copy of a third-party library in a repository that you own, you ...
Bart van Ingen Schenau's user avatar
5 votes

Designing a third-party web solution

I'm getting blocked on some architecture decisions No you aren’t. Being blocked means you can’t work until you get something you need. You have what you need. You have so much of it you can’t make up ...
candied_orange's user avatar
4 votes

How can I painlessly upgrade my team's codebase to Visual Studio 2017?

It may be a viable option to branch off a "legacy master" in git for those still using 2013. This is especially good since you know that the branch will eventually be closed, as everyone has moved to ...
Kayaman's user avatar
  • 1,980
4 votes

How can I painlessly upgrade my team's codebase to Visual Studio 2017?

At our site, we maintain a range of projects over VS2010 and VS2015 (concurrently). This works OK, obviously you have to double compile stuff and make sure the VS2010 compiler doesn't cough on any ...
Martin Ba's user avatar
  • 7,862
4 votes
Accepted

How to avoid messy code when working with different libraries

You say that’s messy code. I might say it’s great because it draws a clear distinction between your own code base and the 3rd party code base. Good or bad isn’t at all clear cut in this situation. ...
besc's user avatar
  • 1,163
4 votes
Accepted

DDD: Viable approaches to integrating with external systems (Adapters, ACLs, Bounded Contexts)

These all are not wrong, and have some value, but I feel you're going at it with a wrong attitude. The domain doesn't care whether something is external to the application or not. Separating "...
Robert Bräutigam's user avatar
4 votes
Accepted

Use of internal interface around paid APIs

Have a look to the facade pattern: https://refactoring.guru/design-patterns/facade Is just for that: Facade is a structural design pattern that provides a simplified interface to a library, a ...
X.Otano's user avatar
  • 622
4 votes
Accepted

Is there a way to detect if the guest user on web page has opened my mobile application to enhance his user xp

No, you will not be able to get any reliable identifier to link users across devices unless they log in. While smartphones do hold a lot of such information, the operating systems and browsers will ...
amon's user avatar
  • 136k
3 votes

What should I use for @Nullable if I used the lombok @NonNull?

Per the lombok documentation: Lombok has always treated various annotations generally named @NonNull on a field as a signal to generate a null-check if lombok generates an entire method or ...
mernst's user avatar
  • 131

Only top scored, non community-wiki answers of a minimum length are eligible