Hey there,
I’m not sure why the Forest folks are plugging their product here, but the overarching request is about support for multiple languages on Roblox. So, I’ll address that question, as the question about using package management for those languages only really makes sense to ask if Roblox was built on multiple programming languages. There’s lots of ways to imagine “support for multiple languages,” but I’m going to address two: the one that is most similar to how Roblox works today, and the one that you’ve actually suggested here.
It is certainly possible to imagine a product similar to Roblox that was built intrinsically with a multilingual approach in mind where the core runtime of the platform was built around something like the JVM or the CLR. In such a world, Studio would’ve been designed around being a multilingual editor, and the whole product would probably look quite different (in some ways better, in some ways worse). There’d be different security tradeoffs between the different runtime choices, we’d probably have had a number of existentially critical security vulnerabilities over the history of the company, and the destiny of the whole platform would be fundamentally beholden to the whims of the companies that own the runtimes we built on (Oracle and Microsoft respectively for the two I mentioned).
In the world we live in, Roblox made a choice in the mid-00s to use Lua as the foundation of programmability on the platform because the runtime was very small, easily embedded into the larger game engine, and ultimately an industry standard for Games. Lua’s VM design is not built with multilanguage support in mind, and when we wrote Luau and the Luau VM to replace it, there was already millions of lines of code in Lua on the platform. Our goal was to make everything transparently work, but work better, run faster, etc., rather than to fundamentally rearchitect the platform around multilanguage support. This is an intentional strategy choice: we believe our community is stronger when there is a consistent language that programmers know and work in. It means documentation, tutorials, libraries, plugins, videos, etc. are overwhelmingly focused on the same language and same developer experience, and that investments in those things benefit as many creators as possible. It also means that we can focus our development efforts around making Luau, Studio’s Script Editor, Luau’s development tooling, and so forth as excellent as they can be, rather than having to split our limited resources across support and documentation for a large number of languages.
The specific proposal to build an entire new architecture for Roblox around containers (presumably thinking of Docker) is a difficult one. Docker does not actually support Windows and has pretty mixed support on macOS, and their entire approach to containerization depends on specific integrations with the Linux kernel. Without explicit kernel support, you end up having to rely on virtualization to achieve the sandboxing you’re trying to have in mind, which comes at considerable performance costs that would be hard to justify in a world where performance is already one of the greatest creator pain points. And even if we could somehow get past all of that, we’re left with an immensely difficult problem: how do all of the containers talk together? How do the containers talk to the engine? How do we make programming for Roblox accessible with a programming model built around complex container orchestration and communication strategies? These are all in principle things we could address, but professional engineers with a decade of experience still regularly run into critical bugs stemming from the difficulties of understanding large container-based systems and the answers to the communication questions will all come at very real costs that would likely make it very difficult for people to make performant experiences on Roblox without considerable amounts of experience in software development.
tl;dr: making a massive multi-language developer platform that’s easy-to-learn, easy-to-use, and highly performant is an essentially unsolved problem with unbounded costs both in terms of money and in terms of complexity, and we strongly believe Roblox is better off doing less, better.
P.S. the language is called Luau after the Hawaiian festival, it’s not an acronym and the u
is not capitalized. 