-
Notifications
You must be signed in to change notification settings - Fork 12
Description
In one of many discussions with Wolfje, I pointed out that it would be worth developing TShock 5 along side Orion as fast as possible to get momentum going to answer questions like "what actually needs to be in Orion?" The general feedback I got was that development on TShock 5 shouldn't start until a lot of the underlying Orion structure is done, but this poses a problem: how do you develop a framework for a plugin with requirements that don't exist?
To start, I've created a label called "Blocks TShock 5," which should go on issues that completely block starting development on TShock 5. In other words, these are issues that, without being completed, we can't even have a stupid plugin that initializes and says "Hi I'm TShock 5" on Orion without it being completely useless.
Issues that fall under this scope are core, critical bits of functionality like commands, logging and how to properly setup and define an Orion plugin. I'm going to be making issues for things like this and continuing to ask for direction here.
Why? Right now, as a TShock developer who hasn't kept up with Orion development fully, it's still basically impossible for me to contribute useful code to the project because it's unclear what needs to be done and how the design works. I know how it works in an abstract sense but I can't with concrete 100% certainty say where I should start. I'd say this goes for anyone who hasn't submitted pull requests to Orion already. In other words, Orion development is limited to a very small subset of developers, all of which don't necessarily have all the free time in the world to keep development going during slow periods.
Some high level goals also get attached to this issue:
- Update the documentation so that new developers can start working on things without having to interview every Orion team developer to figure out how Orion works.
- Create small, bite size issues & stories with a clear focus so that new developers can start working on things faster. Don't leave people guessing as to what needs to be done: define it.
- Create a process guide on how to properly implement parts of Orion and how to create service definitions. Make a checklist for what needs to be modified, how tests work, etc.
- Provide clear examples of what goes in Orion and what doesn't. Make it stupid easy to determine if something should be in Orion or if it should be in a plugin.
- Document how to actually write a plugin for Orion. Yes, the documentation will change. Yes, the spec isn't complete. But it's pointless to have everything built months in advance and undocumented if it isn't going to change from now to release. If it's going to change from now to release, change it and document it. Make it so that Orion can "go live" sooner by having a nice, well defined, up to date set of documentation and examples to start writing your own plugins.
- Encourage development and answer questions. If you don't answer questions asked by people on issues, then Orion won't go anywhere. If question keeps getting repeated this is a sign that it needs to be documented on the wiki or in some other location.
- Give examples of best practices. If our end goal is to not have service implementations in Orion, service implementations shouldn't be in Orion. Full stop. Yes, it's convenient for development, but it does nothing to help clarify what's going on or what goes where. It's confusing.
If Orion never gets TShock 5 running on it, it will be a waste. If a we keep having to update the Terraria Server API because of new Terraria releases while Orion development crawls along, Orion is a waste.
Why am I making this issue? Because it's not clear to me, looking at the issue list and reading the current wiki, where I can even dive in and help. I've certainly asked a lot of questions and gotten a basic grasp, but I don't even know where to start. If I don't know where to start, then I doubt many other people outside of the core group here do.
Right now it's pretty clear that the people who can start working on fixing these problems are: @MarioE, @tylerjwatson, @WhiTexz, and @DeathCradle. These fundamental issues need to be resolved because if I start contributing right now, it's going to be the blind leading the blind.