compare this with another hypothetical framework that requires you to manually add routes to a table. sure that's annoying, but there's no magic to confuse us.
every time you pick a framework, or add a depencency, you're getting some magic. magic you need to know from the outset if you're going to be able to understand the behaviour of the program. should we be expecting people to RTFM when there are 100 manuals for the 100 dependencies?
consider some web server framework that automatically finds route handlers by searching through every defined function and matching against a pattern. convenient, but how would you debug this if you add a new route and it doesn't work, and you weren't aware of the magic route handler finder?
I think we should think about "reverse engineerability" when we design software. it should be possible for a programmer to read through code and get an understanding of data and code paths
the most severe example is ruby on rails. there are conventions for how classes need to be named, and if you're not aware of those conventions it's nearly impossible to figure out what code is going to be run and when
@SuricrasiaOnline You might like George Sheldrick's "Zero dependency philosophy"; every program he writes is 100% stand alone, no dependencies other then the core libraries of the language (and at the start, not even that!)
That's let him maintain Shelx since the *early 70s*. Like, he still puts out new versions of it when the first versions were distributed by *mailing people punch cards* (I believe it has had two-three major upgrades in the 80s, 97 and 2013), but still by sticking to whatever the basic Fortran features were of each era he's made this thing run on everything from 1970s mainframes to PDP-11s, to WIndows and Linux to Android!
@Canageek@SuricrasiaOnline This is why #forth programmers prefer not to use standard libraries for anything. We're one of the few programming language communities where "roll your own" has survived.
@SuricrasiaOnline a good dependency library isn't magic, other than in the sense that like ... friendship is magic, and thru the magic of friendship I can benefit from this thing despite not having written it myself.
@SuricrasiaOnline Thus my "Other Peoples' Code is the work of the devil" pinned post.
I try to work as far down a stack as possible, and not use libraries unless I sorta understand them and could make them myself. Takes longer but I've got some time. My programs are less surprising to me.
@SuricrasiaOnline I think there are some possibly not terrible ways to pile abstractions higher, like algebraic effects, or using advanced type systems and basically letting a constraint solver figure things out, but uuh, they aren't very mainstream. Weirdly enough, champions of simplicity like the Plan 9 community also produce some fragile code, like all the undocumented requirements on inputs. Basically everything breaks if you have spaces in file paths.
@SuricrasiaOnline isnβt that just the basic concept that absent very good reasons you should write your code for the next person who has to read it ans not for the computer, again?
@SuricrasiaOnline i fuckin love how parsing the English language and determining plural/singular variants of every single word is crucial rails infrastructure... LOVE IT
@SuricrasiaOnline I am absolutely offended that youβre picking on Ruby on Rails, a framework I greatly enjoy.
β¦ but I also have to admit Iβve spent non trivial amounts of time figuring out if a class name should be plural or singular, or if it should be capitalized. This situation completely breaks the code if you get it wrong.
So.. Iβm not happy about it, but you have a very good point.