Working together to build an Open Roblox Platform

Hi Creators,

At Roblox, we deeply appreciate our open-source community for their hard work and contributions to code, tools and workflows that turbocharge productivity. Powerful external tools and OSS libraries have played a huge role in the growth of our platform, boosting productivity and welcoming external creators.

Through our Open Cloud initiative, we’ve worked to support this by adding API access to more and more of our platform’s features. This includes ensuring new features like Notifications and Subscriptions launched with Open Cloud support.

We know we need to do more here across all of our products. We’re serious about getting this right, but we need to move forward with care. We need to prioritize backwards compatibility and other engineering priorities (like performance and stability). We also need time to digest feedback and challenge our assumptions about the best solutions.

Today, we are sharing with you our vision for an Open Roblox Platform, where 3rd party tools, workflows and code work harmoniously with Roblox systems. This includes work across three major areas, and we’re committing to share write ups on each of these topics, and maintaining an open dialog with the community as our plans evolve:

1) Exposing the full power of the Roblox Engine & Platform to external tools

While Roblox Studio is powerful, it can’t cover every need. Specialized use cases need specialized tools, and we will make integrating these tools with Roblox easier. Our plans include:

  • Enabling external tools to run Luau code in the engine via Open Cloud, with full access to creations

    • We announced this at RDC and plan to ship a Beta by the end of the year, focusing first on enabling automated testing
  • Researching: Exploring the possibility of expanding Studio plugin capabilities to enable interaction with files and external tools

  • Researching: Expanding Open Cloud to cover more Studio and Creator Hub capabilities

2) Removing the barriers between the DataModel, Files, and Cloud

For external tools to interact with Roblox content, they need to understand it. While today this requires reverse engineering, we will move towards clear, well-documented, and transparent APIs.

  • Supporting out of the box workflows for iterating on file-based content, starting with Luau scripts

    • We plan to ship an early preview for Luau File Syncing before the end of the year.
  • Researching: Providing APIs for creators to control serialization and handle Roblox content in their own Luau code

3) Unifying the Luau ecosystem

Our Luau ecosystem is diverse, including Studio users, Roblox creators using 3rd party tools, Luau engineers at Roblox, and 3rd party Luau users. However, today there are barriers to collaboration and interoperability between these groups. To create a harmonious ecosystem, we are:

  • Unifying behavioral differences between Roblox Luau and standalone Luau (e.g. require syntax)

    • We plan to ship this soon, making Roblox Luau and standalone Luau more interoperable
  • Improving documentation on setting up key external workflows and helping the wider Roblox community find and access these tools. Our docs are open-sourced, and we appreciate contributions.

  • Enabling generative AI models to understand Roblox Luau by populating and publishing Luau datasets

  • Researching: Supporting integration between file-based code libraries and Roblox Packages with distribution on the Creator Store

  • Researching: Open-sourcing more Luau code written at Roblox with the goal to one day also accept contributions in select areas

  • Researching: Adopting a language-first approach to dependency management to help Roblox creators leverage and build upon Luau code regardless of platform

What’s Next?

These are significant efforts. Some work is underway, but many areas are long-term projects in early research. While some will be available soon, others will involve tough tradeoffs and take years to perfect. As we dig deeper into these topics, we expect our vision will evolve and change.

Our promise:

  • We’ll share detailed write-ups on each topic in due course as we work on developing the right solution. Let us know what you’d like to hear more about!

  • We value your feedback and will adjust plans where needed. If we disagree, we’ll explain why clearly and frankly.

Over the past 18 months, we have been investing heavily in some of these areas, and we are VERY excited to start sharing the results with you soon.

Thank you.

296 Likes

This topic was automatically opened after 10 minutes.

This is really encouraging to see as a maintainer of one of Roblox’s largest open source frameworks! Our maintainers and contributors have struggled for a very long time with the closed-ness of Roblox - it’s been impossible to set up good CI, for example - so personally I’m looking forward to diving in to some of these changes to help facilitate our efforts to keep our code well tested by default.

67 Likes

I’m very excited to see more open-sourced code by Roblox WITH contributions!? It’s like a dream come true. I’d love to be able to contribute to issues I have noticed involving the player scripts and such.

28 Likes

We are looking forward to seeing what creativity the community will bring with some of the upcoming features and the openness it brings! Let’s keep the conversation going and work together.

32 Likes

I’d like to share my perspective on this as one of Rojo’s maintainers: they really mean it guys.

We’ve been in active communication about file syncing and a few other things, and the feedback that we’ve given has been actually taken into account. This is… rare to see from Roblox and it fills me with hope.

I already know the answers to these questions but they were asked and answered in private. For the sake of transparency, I am going to ask them again:

Previously, Roblox mentioned they wanted to develop an open and transparent file format. What is the status of this project?

Enabling external tools to run Luau code in the engine via Open Cloud, with full access to creations

At RDC this was advertised as a CI solution. Why did you go with this instead of a headless studio or similar solution?

Where is an OpenCloud endpoint to upload models (rbxm/rbxmx)? For Rojo this is significant because we do not want to support cookie uploads since they’re really quite unsafe but we’re forced to.

47 Likes

Does this mean CoreScripts are gonne be open-source again?

I’d love to see of how the many mechanics work! Especially the new dragger I like the new ruler and would love to know how it works.

Can we also stop hiding certain methods? like GetRobuxBalance on MarketplaceService? Is there a reason why they’re hidden? (from docs and autofill) They’re already protected so why hide them?

22 Likes

Thanks @Dekkonot!

This is a great question - and we know it’s top of mind for some of our users.

We will be releasing the Beta for our Open Cloud API for Luau Execution very soon, and whilst we’re very excited about the capabilities it will unlock for creators we understand your concern. If all you want to do is run some Luau code, making a web request is an extra burden (it’s slower, requires authentication and boiler plate code to manage).

Ultimately - this is a balancing act for us as we try to maintain the following three principles:

  1. Give users the tools they need to get the job done
  2. Uphold our backwards compatibility promise, doing what we can to avoid releasing things we can’t support forever
  3. Ensure new feature work does not come at the expense of key priorities like performance, scalability, and stability

A local version of the engine (separate to Studio or the client) concerns us in a few ways:

  • We would have to maintain a standalone product separate to our existing core offering of Studio, Client and Cloud
  • Many challenges already solved by our core products (such as engine versioning) would need to be solved in a different way
  • The Roblox engine is innately online, and requires authentication to work predictably.
  • In the future, we want to support places so large and complex they can’t fit on a single machine, or even a single server. A local ‘offline’ version of the engine is hard to reconcile with this.

Now, I’m not saying these problems would be impossible to solve. Just that we have decided not to dedicate resources to solving them now, when we think our cloud product will work for many of the same use cases without taking resources away from other important projects.

We will include a Python script in the announcement that abstracts away most of the complexity of working with cloud APIs. However, we do appreciate it’s a more restrictive experience than local execution. We’re also particularly excited about the Lune project, which provides some capability for emulating Roblox’s APIs.

We know this may not be the answer that you want, but we hope this answer gives some insight into our decision-making process as we try to improve your workflows.

32 Likes

This was a fun read.

Why chose an Open Cloud API over “headless studio”, or a studio CLI? Currently, doing any external integrations with local Roblox is a pain.

local robloxDir = `{process.env["LOCALAPPDATA"]}/Roblox/versions`
local versions = fs.readDir(robloxDir)

local studioPath = nil
local found = false

for i = #versions, 1, -1 do
	local version = versions[i]

	if fs.isFile(`{robloxDir}/{version}/RobloxStudioBeta.exe`) then
		found = true
		studioPath = `{robloxDir}/{version}/RobloxStudioBeta.exe`
		break
	end
end

if not found then
	print("Could not find Roblox Studio")
	process.exit(-1)
end

This snippet is a headache, it doesn’t work all the time, and I don’t know if it’ll work for other operating systems. But it lets me easily open up studio from my external project by just running this script (a single command)!

This is interesting, especially as plugins already have localhost access. Will this mean filesystem/command line access? I believe this has huge implications for Rojo though, as being able to start Studio and immediately start syncing based off external integration would be a massive workflow improvement.

14 Likes

Great! If you really mean your commitment, you’ll release your trained AI models openly too!

13 Likes

This is an amazing announcement an really encouraging as a FOSS dev!

It would be great to see the avail out to upload plugins and models using API so we can have CD for our projects.

Also a way to prompt users with json export and imports would be amazing, as my current workaround is clunky.

14 Likes

The ability to run luau code using the open cloud api will be interesting. Maybe my studio on github project could actually work after all

11 Likes

Thanks for the OSS and Lune shoutouts! As an avid user of Lune for general-purpose-programming tasks, including shell script replacements, writing cli tools, creating cross-platform bindings, etc., I’d also love to see Luau/Lune API examples alongside Python/curl, etc., in the docs!

Luau’s an amazing language, and thanks to Lune, we’re now able to use Luau off-platform to write Discord bots, http servers/webapps, standalone webview gui applications (ala electron), and other extremely cool projects. It’d be awesome to have Roblox showing off the potential of Luau as its own language in its own right, both on the platform but off it as well! In many cases, I (and many other Luau developers) find Luau w/ Lune is an easier, faster, and better option than Python for general purpose programming; and ecosystem-wise, we’re getting new projects and new bindings every day.

11 Likes

would roblox ever sponsor/fund any roblox/luau open source projects?

13 Likes

Does this mean we can finally access to player count numbers via API???

9 Likes

I didn’t really understand this but it looks cool

10 Likes

I feel as though the desire to run Studio with CLI and the desire to run Studio offline are different.

I fully get that Roblox is online-only. Whether I like it or not, it’s been that way for years and it isn’t changing; it’s not as if you can even see meshes and textures without the internet. What I’m more interested in is a way to locally manipulate Studio in the same way a user can but without a GUI interface. The reason for this is really simple: we can already run stuff locally within Studio! We just need to hit Run, which isn’t possible with CLI!

It would be really cool if I could use the tool I already have on my computer to run tests automatically rather than sending web requests.

12 Likes

Can you say a little more about this feature request? E.g. if we had a field like currentUsers in Universe | Documentation - Roblox Creator Hub would that be what you’re looking for? (Can’t make any promises, just want to make sure I understand the request.)

6 Likes

Hi, would you mind sharing a little bit more about what your project is all about? Also happy to chat over DM if more convenient.

Would love to learn more about interesting use cases.

3 Likes

I’m talking about getting the current users in all servers, so yeah basically, that would be amazing.

3 Likes