Open kennethloeffler opened 2 days ago
I think this would be a good decision, yeah. I have doubts that anybody is actually using rojo init
for anything important, but it's not a bad idea to ask around first just to make sure.
I don't feel strongly on this issue, but I personally prefer keeping my source code in a cohesive structure that I like, rather than trying to conform to Roblox's datamodel scheme, and in my opinion, others should do the same. I think that rojo init
producing different folder names, like it does now, helps convey to new users their new freedom to organize their project however they like.
For people who already have a lot of experience with Rojo, the ability to stray from Roblox conventions is icing on the cake, but for first-time users, it's confusing. I've observed this many times over as I've onboarded new users onto Rojo in professional work and provided support to the broader community. In general, using patterns and terms that are already familiar makes for better UX than immediately diverging, even if the divergence can be seen as better on other axes.
If people want to go deeper into Rojo and leverage all the capabilities it offers to the fullest extent, then that's great, and we can offer support for that when they're ready - but they need to get through the door first!
I see empty directories, are we placing a .gitkeep in there or a different file? Git won't pick those up automatically and it may confuse users new to version control.
rojo init
initializes git if it can and a repo doesn't exist... It probably makes sense to add .gitkeep
if we succeed at initializing a git repo?
Right now,
rojo init --kind place
androjo init
(since "place" is the default) produce a file tree like this:default.project.json
contains the following:This setup isn't very approachable to new users, mostly because it's not obvious what
server
,client
, andshared
map to in the Roblox data model. To find out what will happen to these directories, a new user either has to read and understand the project format, or else sync or build the project and observe the result.Additionally, the current place template isn't very representative of Rojo's feature set, making it a poor example. It does not include any Roblox model files, JSON model files, or meta files. It's not clear how many different things the default project should demonstrate, but I think at least Roblox models and JSON models should be included.
Lastly, this will make using the upcoming syncback feature (#937) easier. The current place template doesn't lend itself well to syncback's operation.
So, I think Rojo should alter the "place" template so it more closely matches what Roblox users see in Roblox Studio, perhaps something like:
The
default.project.json
would contain something like:There are some unanswered questions:
emitLegacyScripts
be disabled in the new template? This enters the realm of opinion, but if we include it then it at least has the possibility of cluing users into the fact that the setting exists.[ ] Should
ignoreUnknownInstances
be enabled on all services? This is important for users who want a partially-managed project, otherwise they will experience unwanted deletions due to the project specifying$path
for services.Strictly speaking, this change is breaking. However, the number of users relying on the exact shape of the place template is probably small. We should poll the community to determine the impact of this change, and if there are little to no users who will be broken, we may be able to include it in a minor version bump.