Description
Should wally assume the use of rojo?
Update: #142 (comment)
I am now considering this our current plan for how we will be moving forward unless anyone has any further concerns.
We can refine these ideas as we go and I am open to all changes and suggestions. I will give this RFC at least another 2 weeks for people to add their ideas, feelings and concerns. After 2 weeks I will consider it safe to start working on any changes which require this assumption of rojo however I will leave it open up until we reach that point, however long that takes. Once we do reach that stage I will close this issue and consider it our new philosophy moving forward.
Up until now wally has been intentionally agnostic to how users are building their projects. Its only role is to get them their packages. I consider this to be a generally healthy attitude for wally to have due to these reasons:
- Users may want to use another tool than rojo
- We should focus on getting users their packages, not how they use them
- Fewer hard requirements for the build process can lead to a higher adoption rate (wally should work with everything)
While wally is used by "power users" this is fine however I see this attitude becoming increasingly problematic as wally becomes more user friendly. We are already in a weird situation where wally is intentionally blind to you using rojo but you are unable to use wally in any reasonable capacity if you are not using rojo. Every package currently on wally assumes you are using rojo. If you tried to use some other method then every package on wally would be painful to use.
The situation outlined above means you are required to use rojo if you wish to use wally. However with wallys blindness to rojo it can make creating packages a real pain. There is currently no guidance or convenient default behaviour to assist users getting started with making a rojo compatible package. Knowing how to structure your default.project.json
file is not trivial. Knowing how to sync your package into a test place as a sibling among other packages is not trivial. If we want to widen the adoption of wally we need to make creating and testing packages as easy as possible and right now it is not easy!
There is also the question of what happens if users start using something other than rojo? Let's take the example of Roblox releasing a native studio filesystem sync effectively making rojo obsolete. While unlikely, I see this as the most likely situation for a mass migration away from rojo. What would we even do in this situation? Do we mass migrate every package to a new compatible form on behalf of package owners? Do we add an abstraction interface to translate between rojo and native studio formats? Do we just let the community sort it out on their own but maybe add rojo/native tags to make discoverability easier? In every scenario we would need to be acutely aware of rojo to make the registry remotely friendly to use. Maybe a solution could be to make an entirely new registry; label the old one rojo-only and the new one native-only. This entire scenario is something we should prepare for at some point.
Proposal for the reasonable assumption of rojo
I would like to propose a formal assumption that wally users will be using rojo. There is an important caveat to this which is we may have to support other build methods, such as native studio sync mentioned above, and so we should make efforts to ensure such a transition is as easy as possible. We should also never prevent people from just getting packages or publishing packages which do not require rojo.
In a practical sense this assumption would mean:
- Auto generating convenient rojo files such as a
default.project.json
and atest.project.json
to assist with package creation and testing - Inspecting rojo project files to ensure packages conform to a workable structure
- Every package on the registry should work; at the moment it is easy to publish one which doesn't
- We actually already do this but only to the smallest degree possible; this proposal would increase these efforts
- Explicit documentation recommending to use rojo and how to use wally with rojo
- A plan to transition away from using rojo should we ever need to
- Adding package metadata indicating the package is "rojo-compatible" or perhaps "rojo-required". An additional tag "unknown" could be used to label all current packages and packages which for whatever reason choose to not use rojo
- Likely more wins found in the future (if you have any please add them to this RFC!)
I now believe formally assuming the use of rojo to use wally, until external circumstances change, is healthier for the overall development of wally. Awareness of rojo will likely lead to a far better user experience both for users of rojo and users who choose another method (due additions like to metadata tagging). What do you all think?