- Tedious
- Quickly gets ridiculous if libraries have their own dependencies
- No way to see why something is there.
- Problematic to update
- Not cleanly separated from the rest of your source code
most of your points aren't lua's fault. it's only tedious if the user hasn't made it easy for the library to be required in one line, rather than having to require multiple files. and sometimes, there are reasons you have multiple files, if you only need part of a library. as for the downloading part of the library, you only need to download it once, and then copy it over when you need to use it again. can still get tedious, but just a small side effect.
and yeah, i've ran into the second problem in the past. i wanted to use a library called "LUBE" and it needed "SECS" in order to run. i didn't know where to get SECS or which version of it i had to have. but again, that's the developer's fault. he could've packaged SECS in the library and LUBE would require it on it's own, however this could lead to problems if the programmer is already using a class system. however that class system might not work with LUBE and replacing it would break the coder's entire project-
my point there is that, it's usually the programmer's fault for making such a broken addon.
and if you want to see why something is in the library, just look in the source. if it's a dll, hopefully there'll be more info about it on it's website. if not, it's not much a problem if you only want to just use the library.
it's not really important to update a library if your project is already using all of it's functions correctly. if there's something broken in the library, or if you want to use a new feature in an update of the library, it's not really required to update all of your instances where the library is used, only where it's needed. i understand what you mean though, can be annoying and it sucks that there's no automatic system for doing so.
i don't know about you, but most normal people put all of their requires at the top of their main lua file, like "import"s and "using"s. the rest of the code is easily readable.
but yeah, the system does have its fallacies, i agree. no system is perfect.