As a Roblox developer, it is currently too hard to modify Roblox Studio’s behavior, extend its functionality and create better integration with third-party tooling.
I was always a big Roblox Studio tinkerer, so I still remember the disappointment I felt when Roblox decided to only allow signed builtins to be loaded back in 2021.
On one hand, it was understandable. There were some private APIs which had obvious security risks and just had no good reason to be exposed. However, I was expecting locked down functionality to progressively make its way into our hands again.
Fast forward to late 2023, and this has clearly not happened. As far as I’ve noticed, there have actually been zero additions to the API of user widgets, even local ones.
We still can’t create prompts (via qwidget), we still can’t take meaningful control of the cursor and we can’t even make standalone plugins!
This lack of trust not only hurts advanced tooling and workflows, but also hurts community initiatives to bring Roblox into Linux and other unsupported operating systems.
Roblox Studio has always been a particularly tricky program to get working right. We currently have a major issue in wayland sessions which prevents the edit mode camera from rotating properly, effectively invalidating studio’s usability there.
After a long period of brainstorming at Vinegar, we found a way of working around this issue. By using a studio plugin which closely coordinates with vinegar, we’re able to detect when the user is rotating the camera in the viewport, create an in-engine “stand-in” cursor, and hide the real hardware cursor. This is enough to fix the issue, as xwayland locks invisible cursors properly.
The fact we’ve managed to pull this off in spite of the horrible limitations of the plugin api just goes to show the kind of potential it has.
In other words, the less Roblox arbitrarily locks down their API, the easier it is for the community to continue providing free, high-quality and open-source ways of running Roblox in unsupported (yet increasingly relevant) platforms.
We plan to use studio’s plugin API to increase its integration with Vinegar (and Linux), with the ideas of native linux file prompts and dynamic theming (based on the OS’s own theme) being just a few of the ones being considered and tested.
Unfortunately, we usually run into edgecases we can’t solve, simply because Roblox never got around to opening up that one obvious method or feature.
For example: While we can actually dynamically change studio’s theme, we can’t do so on the homepage, because our plugin hasn’t loaded that early. There’s no way to fix this because standalone plugins must be signed by Roblox, otherwise they won’t load.
Some functionality being missing makes sense in the context of the plugin market, but not when the user is explicitly dragging the code they wrote into a folder in their computer, or running studio via a third-party bootstrapper (it can do very nasty things, regardless of plugin APIs).
While there are some parts of the API which allow dangerous actions (such as doing actions as the user’s account in their behalf), a lot of them are completely harmless and pose no risk to the end user, especially in the context of a locally loaded plugin (not just something downloaded out of the plugin marketplace!)
It’s time for Roblox to make a full audit of their restricted roblox-only plugin APIs and evaluate which parts of it are actually security dangers for local plugins. Roblox Studio is a SDK, there’s no need to arbitrarily lock down its functionality.
If Roblox is able to address this issue, it would improve my development experience because it’d allow for myself (and the community) to make improvements and fill certain gaps in our development workflow, regardless of Roblox’s strategical interest on them.
Less restrictions translates into…
-
Better user experience in unofficial platforms
-
Better functionality for community tooling, regardless of Roblox’s interest (Rojo, local assets, etc…)
This is mutually beneficial. The community gets the functionality they want, while Roblox doesn’t have to worry about investing on something they have no interest in.
I can’t speak for the entire developer community, but as a major contributor of Vinegar, I can say that the Roblox FOSS community would love to coordinate and collaborate with Roblox engineers more often. But to do that, we need to be taken more seriously! There’s only so much we can do when every advanced power feature we rely on is removed at a snap of a finger, often with little to no recourse, and is just never seen again.
FOSS tooling is, more than ever, a fundamental part of development on Roblox and strengthens the entire platform.
As much as Roblox has improved in the way they deal with it, situations like the release channels being plugged off the wall without warning and arbitrary restrictions in studio show that we still have a long path ahead of us.