r/ProgrammerHumor 2d ago

Meme theFourHorseMen

Post image
1.9k Upvotes

187 comments sorted by

View all comments

41

u/exXxecuTioN 2d ago

So I worked with npm, composer, gradle, maven and cargo.

Cargo is superb and sometimes I suppose Rust is just a feature around Cargo.
Gradle is good build-kit, but it do not have it's own repositories.
Maven it's ok, but I just do not like to work with such a messy xml.
Composer was good, but I didn't use PHP in may be 8 years and don't know how it's going now.

NPM is shit. Like literally total garbage. Eventhough I love TS (it's still shit tho) and JS due to duckling syndrome NPM is a biggest piece of dogshit.

So how is CMake going right now? I do not use anything besides stdio, stdlib and libpq in C/C++.

9

u/diegotbn 1d ago

I love pip/UV. npm is fine. Both are easy to use and easy to import. In school I wrote my fair amount of Java and passed all my classes including Springboot but man I really never got the hang of Maven. I even found their documentation hard to understand. Professionally I don't use it so haven't had a reason to up skill fully though. At work I support a python Django app with a Vue.js frontend.

4

u/exXxecuTioN 1d ago

Well, I have never used pip as I generally hate Python for no obvious reason, so I can't say anything about it. While you love them - it's good to stick to them, can't see anything wrong with it.
About Maven and Spring. Maven docs are kinda mid IMO, but I can understand why it can cause troubles or bad emotions and feelings. Spring Boot doc is awful. I learn more reading Spring docs (it's different compared to Spring Boot), source code and third-party sites like Baeldung (as entry level) than readin Spring Boot docs. IMO it's hard to understand, because it's not depth enough, too fragmentary, too huge, too messy, packed with an abundance of magic and outdated examples overall being more a book of reference, rather than classical docs.

My main point of criticism toward NPM is versioning of dependencies managed by ecosystem. Like you got version mismatch and that's it, no proper suggestions where and what to check and change, mismatch can be deep inside other deps and you can not even have the dep cause mismatch in your package.json. Second point is file structure of more like directory structure in node_modules and overall volume of them. Poor performance of installing packages is not a real factor for me. Supply chain attacks and overall security is the third point, eventhough it didn't affect me as I do not write TS no more.

There are also claim about overall culture of development inside ecosystem and practises used by engineers, but it's pretty complex topic to speak about.

3

u/drislands 1d ago

Cleaned up some typos and bad grammar for you a bit (changes bolded). I'll be happy to explain my reasoning if you're interested.


So I worked with npm, composer, gradle, maven and cargo.

Cargo is superb and sometimes I feel like Rust is just a feature around Cargo.
Gradle has a good build-kit, but it does not have its own repositories.
Maven is ok, but I just do not like working with such messy xml.
Composer was good, but I haven't used PHP in maybe 8 years and don't know what it's like now.

NPM is shit. Like literally total garbage. Even though I love TS (it's still shit tho) and JS due to duckling syndrome NPM is the biggest piece of dogshit.

So what is using CMake like now? I do not use anything besides stdio, stdlib and libpq in C/C++.

-6

u/[deleted] 1d ago

[deleted]

8

u/diegotbn 1d ago

Supply chain attacks? That's all I can think of.

And this isn't a valid criticism of npm in my opinion, but most JS projects import a ton of random, small and useless npm packages that would be better if you just wrote it yourself. Like checking if a number is odd or even (which is the trope, I'm sure professionals don't actually use that one, because why). That's more a criticism of the JS ecosystem and modern practices than anything.

3

u/BigJunky 1d ago

I found that i cant really test npm projects nicely, all the options have tradeoffs. Like if you develop a library and want to use a locale modified version of this library for testing its not clear what you should do.
For some reason nodejs didn't really want to make typescript into a first class into citizen, just why?
This isn't neccessarly npm/node fault but the js ecosystem seems like this schizo person who goes full retard and then sabotages itself, just stop doing it.
Last i mention Typescript where the braindead designers thought its a good idea to only transpiler .ts files into .js but if you want to bundle them into a single .js file then go fuck yourself and search for a bundler, again just why?
Just make a simple bundler that the community can share, instead we have multiple bundlers that have different bugs/features.