Skip to content

Commit

Permalink
Update docs on tooling, including alternatives (#139)
Browse files Browse the repository at this point in the history
Co-authored-by: boatbomber <[email protected]>
  • Loading branch information
Dekkonot and boatbomber authored May 20, 2024
1 parent cc5dd66 commit 97617b3
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 23 deletions.
17 changes: 10 additions & 7 deletions docs/intro.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ Adding a tool like Rojo to your Roblox workflow can be daunting, but it comes wi

There are decades of excellent tools available that operate on files. With Rojo, it's possible to take advantage of any of them!

Popular tools that are tailored towards Roblox or Lua in general:
Popular tools that are tailored towards Roblox or Luau in general:

- [Selene](https://github.com/Kampfkarren/selene), a static analysis tool to help you write better Lua
- [StyLua](https://github.com/JohnnyMorganz/StyLua), a formatter that helps keep your code in a consistent style
Expand Down Expand Up @@ -46,11 +46,14 @@ Some very popular editors include [Visual Studio Code](https://code.visualstudio

These advanced text editors have features like multi-cursor editing, go-to symbol, multi-file regex find and replace, bookmarks and much more.

Many Rojo VS Code users also use extensions like:
Rojo users that use Visual Studio Code often use the following extensions:

- [vscode-rbxlua](https://marketplace.visualstudio.com/items?itemName=AmaranthineCodices.vscode-rbxlua)
- [Roblox Lua Autocompletes](https://marketplace.visualstudio.com/items?itemName=Kampfkarren.roblox-lua-autofills)
- [TabNine](https://tabnine.com)
- [luau-lsp](https://marketplace.visualstudio.com/items?itemName=JohnnyMorganz.luau-lsp) - An [LSP][lsp] implementation for Luau, Roblox's scripting language.
- [StyLua](https://marketplace.visualstudio.com/items?itemName=JohnnyMorganz.stylua) - A VSCode companion for Stylua, which is linked above
- [Selene](https://marketplace.visualstudio.com/items?itemName=Kampfkarren.selene-vscode) - A VScode companion for Selene, which is linked above. Note that this often overlaps with luau-lsp's analysis.
- [roblox-ui](https://marketplace.visualstudio.com/items?itemName=filiptibell.roblox-ui) - A visualizer for Rojo projects that makes navigating and adding to them easier.

[lsp]: https://microsoft.github.io/language-server-protocol/

### Version Control

Expand All @@ -64,6 +67,6 @@ Using a repository hosting service like GitHub or GitLab brings powerful feature

TypeScript enables static type safety, which helps prevent typos and adds unparalleled autocompletion. It also brings features like arrow functions, object destructuring, functional programming methods, and more!

With Rojo, you can use [roblox-ts](https://roblox-ts.com) to compile TypeScript to Lua and take advantage of a huge ecosystem of TypeScript tooling.
With Rojo, you can use [roblox-ts](https://roblox-ts.com) to compile TypeScript to Luau and take advantage of a huge ecosystem of TypeScript tooling. This project is not strictly speaking related to Rojo, but it is very cool and many people prefer to use it over writing Luau.

It's also possible to use other languages that compile to Lua like [MoonScript](https://moonscript.org) and [Haxe](https://haxe.org).
It's also possible to use other languages that compile to Lua like [MoonScript](https://moonscript.org) and [Haxe](https://haxe.org). However, there's very little development in the way of tooling for these languages, so be warned: here be dragons.
27 changes: 11 additions & 16 deletions docs/rojo-alternatives.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,26 +3,21 @@ title: Rojo Alternatives
sidebar_position: 1000
---

There are a number of existing plugins for Roblox that move code from the filesystem into Roblox.
When Rojo was first produced, there were several competing standards for getting external code and models into Roblox. This page initially stood as an explanation of why Rojo was made and linked to several other options.

Besides Rojo, you might consider:
In the intervening years, the number of alternatives has dramatically reduced. All but one of the tools that *were* on this page have been deprecated or are otherwise unmaintained. Rojo is the de-facto standard for Roblox file syncing and has few serious alternatives. Nonetheless, the remaining alternatives are documented and presented here to provide a full picture.

Keep in mind that none of the tools listed on this page are maintained or audited by Rojo's maintainers so your mileage may vary. Additionally, not every tool listed here replaces *all* of Rojo's functionality.

- [Lune](https://github.com/lune-org/lune/)
- [rbxmk by Anaminus](https://github.com/anaminus/rbxmk)
- [Rofresh by Osyris](https://github.com/osyrisrblx/rofresh)
- [RbxRefresh by Osyris](https://github.com/osyrisrblx/RbxRefresh)
- [Studio Bridge by Vocksel](https://github.com/vocksel/studio-bridge)
- [Elixir by Vocksel](https://github.com/vocksel/elixir)
- [RbxSync by evaera](https://github.com/evaera/RbxSync)
- [CodeSync by MemoryPenguin](https://github.com/MemoryPenguin/CodeSync)
- [rbx-exteditor by MemoryPenguin](https://github.com/MemoryPenguin/rbx-exteditor)
- [Argon by DervexDev](https://github.com/argon-rbx/argon)
- [Lync by Iron Stag Games](https://github.com/Iron-Stag-Games/Lync)

So why did I build Rojo?
## Why Not Rojo?

Each of these tools solves what is essentially the same problem from a few different angles. The goal of Rojo is to take all of the lessons and ideas learned from these projects and build a tool that can solve this problem for good.
The obvious question to ask is 'why would I use something else?' and it has an easy answer. If all you need to do is sync files into Roblox Studio, you absolutely don't need to use something other than Rojo. It is designed to be a one stop shop for syncing.

Additionally:
However, Rojo is limited in scope and design: it doesn't allow complex scripting like Lune or rbxmk do, and it has different restrictions on its design than Argon and Lync. You should look into whether you need or want any of the features those tools have to offer and make the judgement call on your own.

- I think that this tool needs to be built in a compiled language without a runtime, for easy distribution and good performance.
- I think that the conventions promoted by other sync plugins (`.module.lua` for modules, as well a single sync point) are sub-optimal.
- I think that I have a good enough understanding of the problem to build something robust.
- I think that Rojo should be able to do more than just sync code.
That said, there is special attention for Lune and rbxmk. A common workflow is to build a Rojo project into a `rbxl` or `rbxm` file and then perform post-processing using one of these tools, as their Luau runtimes enable workflows that Rojo alone does not. Most workflows don't need these, but if you have a need it'll make itself obvious.

0 comments on commit 97617b3

Please sign in to comment.