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'...
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 ...
89
votes
Accepted
PM opting for an overly-complex setup which nobody has experience with
Once we were halfway the project, the PM stated we had to use third party message queue capabilities instead of threads and had to implement load balancing
This isn't an appropriate thing for a PM to ...
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 ...
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 ...
42
votes
Using third-party libraries - always use a wrapper?
By wrapping a third party library you add an additional layer of abstraction on top of it. This has a few advantages:
Your code base becomes more flexible to changes
If you ever need to replace the ...
30
votes
PM opting for an overly-complex setup which nobody has experience with
What would be stupid is to let yourself get death marched.
What you are describing is that you've lost critical feel. There is no sense of control and no clear way back to it.
The last thing you ...
25
votes
Accepted
Wrapping third party library is best practice
Imagine you have a complicated library that you depend on. Say the library exposes four different calls to its functionality, and your code base uses each of them three times.
If you use the raw ...
20
votes
Accepted
If there are two ways of approaching a task, how should one choose between them?
You perform a cost/benefit analysis on each of the approaches, and choose the approach that has the highest overall benefit/cost ratio.
In the case of competing libraries that perform essentially the ...
17
votes
If there are two ways of approaching a task, how should one choose between them?
As an addendum to Robert Harvey's excellent answer, here my 2 cents:
Pick the one approach which appears to be the least effort to start with, but make sure you keep the door open for switching to a ...
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.
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 &...
14
votes
Wrapping third party library is best practice
You are right to be suspicious. I haven't read this book, but I personally strongly disagree with this advice.
This approach adds both additional code and additional abtraction.
Code can add bugs ...
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 ...
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 ...
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 ...
10
votes
How can I reduce the manual effort for wrapping third party libraries with a larger object model?
Don't unit test that code. Write integration tests instead. In some cases, unit testing, mocking, is tedious and painful. Ditch the unit tests and write integration tests that actually make vendor ...
10
votes
PM opting for an overly-complex setup which nobody has experience with
This should really be on workplace.stackexchange.com, because the problem is not really a software development question, but about workplace relationships.
If you are sure that your simple approach ...
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 ...
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) ...
8
votes
Wrapping third party library is best practice
Disclaimer: I wrap the middleware of my own company...
There are multiple claims here, so I will address them separately.
Wrapping also makes it easier to mock out third-party calls when you are ...
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 ...
7
votes
Accepted
What is the difference between a 3rd party lib and a plugin
A "plugin" is a piece of code that's meant to be integrated with a specific application, and cannot be reused elsewhere. A "library" is some code that's meant to be used by other programmers for a ...
7
votes
Wrapping third party library is best practice
I feel that often this practice can be used badly.
For example, say you are using the MongoDB client to access your Mongo database. Wrapping the client itself while still exposing all its ...
7
votes
How can a programmer know whether he has to program a method or search for it in a library?
Search the official Java documentation.
No luck there? Then go to Stackoverflow and enter [java] Thing I want to do into the search bar. The most upvoted answer to the first question you find will ...
7
votes
Accepted
How do you use external libraries in git?
Adding a library in your git repo would make you a maintainer of another version of the library. You want to avoid that as much as possible.
Depending on the library and the target OS, the most ...
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 ...
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 -- ...
Only top scored, non community-wiki answers of a minimum length are eligible
Related Tags
third-party-libraries × 114libraries × 17
open-source × 11
licensing × 10
java × 8
design × 7
c++ × 7
git × 6
c# × 5
programming-practices × 5
.net × 5
version-control × 5
php × 4
api × 4
dependencies × 4
dependency-management × 4
design-patterns × 3
python × 3
unit-testing × 3
development-process × 3
interfaces × 3
github × 3
frameworks × 3
maven × 3
software-updates × 3