Granted, core language designers are very careful about what they add; but I don't think it is the main cause of the issue you mention (proliferation of incomplete and incompatible variants of useful libraries). De facto standards could have emerged wihtout PUC's blessings, and sometimes they do: luasocket comes to mind.<p>It seems to me that the main social reason is a love for poor, partial and repetitive wheel re-invention. People come and reinvent yet another OO framework, OS threading interface, preprocessor, bit shuffling lib, functional table handling lib, etc. again and again, instead of focusing their efforts on a couple of most promising candidates. Java, for instance, doesn't have this issue.<p>Why is it so? I'd guess:<p>- there's no std lib: therefore you look slightly less foolish trying to write a half-assed std lib for Lua than for Java or Python. For this reason Lua is probably doomed to consistently attract wheel re-inventors.<p>- the language is too fun for its own good, with all of its meta-mechanisms. You can have a lot of fun writing a bad library, much more than in Java or in Python. Java is dull, so people communalize their boilerplate; Python has an opinionated dictator, and a culture that frowns upon gratuitous reimplementations.<p>- Lua's canonical use-case is to provide logical glue around a C library. This means that "serious" Lua users don't need standardized libraries, and such wannabe-standard libs are therefore mostly written by "non-serious" Lua hackers.<p>I'm not sure that Lua presents enough advantages, compared to Python, to develop a high-quality "batteries included" libraries set. Python is good enough to prevent replacements from being completed, just as Emacs, or LaTeX, or Windows as a mainstream desktop OS, are good enough to prevent direct competitors from emerging.