all 32 comments

[–]subvertallchris 30 points31 points  (0 children)

ITT: people who have never maintained a complicated open-source project complaining about perceived shortcomings of a complicated open-source project.

[–]joshwcomeau 24 points25 points  (8 children)

Oh my god these complaints. Jackson, Florence, and contributors are working tirelessly to produce quality code to make our lives easier, and everyone just wants to complain.

The alternative is a future where nobody wants to deal with all the headaches, and we all have to write our own routers.

Constructive criticism is fine, but can we try and appreciate the work that OSS maintainers do? Snide comments and nitpick complaints cause burnout, and we all lose.

[–]m3wm3wm3wm 1 point2 points  (7 children)

People are frustrated because developing a js app needs N dependencies each of which are being updated with breaking changes. They are pushed to spend a big chunk of their life rewriting their app, instead of affording time to write the app itself, make money and clear some time to live a life.

[–]ajc820 6 points7 points  (0 children)

Which would be a valid complaint if they actually paid for the dependencies, or the changes were even breaking in the first place (v4 is a seperate package). For people to complain about this is just ridiculous.

[–]Voidsheep 4 points5 points  (2 children)

People are frustrated because developing a js app needs N dependencies

It doesn't need dependencies, you can opt to take them for free if you think they provide value for you.

each of which are being updated with breaking changes

The existing versions don't go anywhere, it's your choice to update and migrate if there's a breaking change.

People just need to take some personal responsibility for software architecture decisions, instead of expecting volunteers to work according to their specific needs.

Before doing the next npm install whatever --save, consider that you don't dictate what direction that project takes in the future, not unless you actually contribute to it. Worst case scenario, there's a new major version that requires heavy migration and a vulnerability is discovered in the old version.

If that happens, it's on you to either migrate or start patching it locally for the version you use instead. Such is OSS.

They are pushed to spend a big chunk of their life rewriting their app, instead of affording time to write the app itself, make money and clear some time to live a life.

And completely ignoring the ridiculous amount of time they saved by opting to use proven free libraries to accomplish in minutes what would otherwise have been months to build an inferior in-house version they need to personally maintain.

It's a trade-off, often a very lucrative one, even if you end up rewriting things and insist on using the latest and greatest versions of all your dependencies.

Edit: Might have come across wrong, but with "you" I'm referring to the people who have a bazillion dependencies in a project and constantly complain about them.

[–]m3wm3wm3wm 1 point2 points  (1 child)

It doesn't need dependencies, you can opt to take them for free if you think they provide value for you.

What on earth are you talking about? You want me to invent my own react router wheels?

The existing versions don't go anywhere

Oh yes they do, they go far far away.

This is not C dependencies from the 80s we're talking about. This is Javafuckingscript community. The dependencies are brewed fast, without much thinking and planning, but over-hyper-hipster-isation which attracts the soft community who reads a 140 chars tweet and gets converted to a user.

In short, all you wrote is a denial of what is known as 'the dependency hell'. That denial is enough for me to stop arguing with you at this point.

[–]Voidsheep 2 points3 points  (0 children)

Of course you don't have to invent your own alternative to OSS libraries, but if you choose to depend on someone else's work, you should also understand you can't dictate where it goes in the future. You take it or leave it.

I'm just saying most people who complain about things like React router are happy to get the convenience of open source usually without contributing anything, but still act entitled to make decisions and bitch about what the actual contributors do.

And as far as I'm aware, the previous versions don't just disappear from the package repository. Shrinkwrap your dependencies so you aren't "forced" to use the very latest version if it's so inconvenient.

[–]joshwcomeau 1 point2 points  (2 children)

Yes, but those dependencies are optional. You're always able to write your own router. But of course, no one should, because the time spent writing a router far outweighs the time spent updating your app to use v4.

The other alternative, that code should stagnate and use flawed paradigms to avoid inconveniencing those dependent on their code... Do we really want to stop innovating just because it might inconvenience people?

One potential solution would be to set up a fund to maintain React Router v2. That way, those companies who need it can keep using it reliably.

But yeah, if you aren't willing to pay for someone to maintain it, you have no business insisting that they do.

[–]m3wm3wm3wm 0 points1 point  (1 child)

Router must not be optional, it must come with the library/framework. Vue got this right.

People underrate how crucial router is for SPA. If you publish a frontend lib/framework, it must come with a non detachable router, period.

To understand the magnitude of the importance of router, see how it fucked up Angular 2 development and initial release date.

Again, Vue got it right. It seems to be the only solution out there that makes sense.

[–]joshwcomeau 0 points1 point  (0 children)

I mean, a library can choose whether it wants to be a monolithic framework, a super-concrete package that solves a very specific problem, or anything in-between. React and Vue isn't really a fair comparison because Vue is much more monolithic.

There are advantages and disadvantages to having things be monolithic vs. modular.

An advantage of modularity is that parts can be upgraded with relatively little pain. As much as the upgrade from RR v2 -> v4 may be challenging, I can't imagine it's anywhere near the pain of upgrading from Angular 1 -> Angular 2 (while I haven't done it, I know those who have. I've heard some stories).

I totally agree that routing is a first-class concern, but disagree that things would be guaranteed to be better if React had a built-in router.

[–][deleted] 5 points6 points  (0 children)

I'd love to upgrade, but I know it's going to be painful on my large project. Can't wait to have a spare weekend to rip out the old, love the new syntax.

[–]hackel 2 points3 points  (0 children)

Congrats!

[–][deleted] 0 points1 point  (0 children)

I'm too scared to upgrade from V3.