Hi ServUO!

As I'm thinking about starting contributing again to the UO Emulation community, and this definitely seems the most active community at the moment, I wanted to ask the maintainers of this project a few questions about it to catch up and get to know where the project is standing at this point, and how you picture the future. Most of these questions I've not been able to find the answers in the available official information. If these questions are already answered somewhere, please accept my apologies and point me in the right direction.

Allow me to go straight to the points:
  • What problem (i.e. extensibility, accuracy with official content, setup facility, other...) does ServUO solve (i.e. what's your "mission")? Why should I use ServUO instead of RunUO or other forks, like JustUO or XRunUO?
  • Who is the target of ServUO? How technical is it?
  • Who are the core maintainers? What's their technical background? What roles do they have inside the project?
  • I've seen some code (specially in the scripts package) where code quality does not seem to be in mind. Are you concerned about this, or do you plan to tackle it in the future? If so, how? If not, why?
  • I can see lots of efforts in the direction of adding content from the official servers (f.i. SA/HS/TOL expansions, later OSI publishes, etc.). However most of the times it's not actually accurate. How do you manage content accuracy? How much do you care about it?
  • What's the purpose of adding that many custom systems to the official script distribution? Do you see any alternatives?
  • Is there a roadmap of the project (i.e. milestones you want to achieve in the future)? How do you manage development? How do you triage new features/known issues?
  • Do you have in mind script compatibility with other forks? What about backwards compatibility with previous ServUO versions?
  • Do you plan to do any stable release soon and provide user support?
  • What are the ways to collaborate with the project?
  • Is there any other projects related to this community in any way?

Although I would appreciate answers from everybody from the community which is actively involved, I'd like to hear especially the answers from the core maintainers of the project.

Thank you!

Cheers
Pedro "Semerkhet" Pardal
 
1. ServUO is an expansion of RunUO that has a goal of emulating the current status of Ultima Online. As far as JustUO, that project is abandoned. I don't know much about XRunUO.
2. The target is anyone who wishes to emulate Ultima Online and prefers a .NET environment. It is designed to be simple to use, but of course, your ability to use all the features depends on your skill with C#.
3. All maintainers are volunteers. Some of us are full time programmers, some are just hobbyists. There are no set roles, everyone does what they have the ability to accomplish. As an example, Voxpire is probably the top brain and deals a lot with packets and core function. Dexter is a relentless bug fixer. Dmurphy handles web interfaces. No one assigned these, people just fill in where a need is.
4. Remember that a lot of the code pre-dates ServUO. Coding standards from 10 years ago are very different from today. While we have spent some time updating code, not all of it has been reworked. Everyone does their best with code, there are always multiple approaches to coding. Anyone is welcome to make a suggestion to code they feel is "below quality". This is the essence of an open source project. There is a process of checking the quality of code in pull requests. You can see Voxpire's announcement on details for the QC on pull requests.
5. Accuracy with OSI is our goal. You are welcome to provide input as to issues with accuracy via a bug report. Some of us have active accounts and can attempt to verify accuracy. In any case, since the OSI code is closed source, sometimes the best anyone can do is try to mimic the outcome of actions. Remember, this is emulation, not imitation. The chances of ever achieving 100% accuracy are extremely slim. Having been around the emualtion world, you are probably already aware of this.
6. Not sure what you mean here. We have removed most "custom systems" and have tried to only use OSI systems and systems that enhance the abilities of staff without affecting gameplay. You would need to give me an example for me to answer that further.
7. We prefer bug reports via the forum. There is an issue tracker linked to the forum in the repo. Milestones are marked accordingly.
8. We try to achieve script compatibility between RunUO 2.4+ and often the core changes are updated in both. Backward compatibility is attempted but not when it impedes progress. Support is always given on the forums for old scripts that may need updated to comply with current ServUO.
9. We have no plans for a stable release. RunUO did releases, but remember that RunUO was not totally open source. We have a version control system and users can pick any point in time that they wish to compile the projects simply by checking out any of the commits. We may do a "publish" someday soon, but it is not scheduled or planned at this time.
10. The best way to collaborate is pull requests and bug reports.
11. Dmurphy was working on a shard list system. I'm working (if I ever get time) on updating XMLSpawner. Voxpire maintains his VitaNex Core project. Some other developers have shards or other projects as well. I think Dexter spends all his time on fixing bugs, the man is a maniac!

Hope that helps!
 
Thanks a lot for your response Ravenwolfe, it's very valuable information for me and I'm sure for the rest of the community as well. Please allow me to add some comments and do further questions.

1. ServUO is an expansion of RunUO that has a goal of emulating the current status of Ultima Online. As far as JustUO, that project is abandoned. I don't know much about XRunUO.

Just a small note here, are you also targeting prior expansions? i.e. should I be able to run a T2A shard or a Pub25 shard with ServUO with little effort, or is it just the latest OSI publish what you're aiming for?
FYI regarding XRunUO, it was born with this very same purpose in mind, but at the moment it's not being actively developed and there's no community.

3. All maintainers are volunteers. Some of us are full time programmers, some are just hobbyists. There are no set roles, everyone does what they have the ability to accomplish. As an example, Voxpire is probably the top brain and deals a lot with packets and core function. Dexter is a relentless bug fixer. Dmurphy handles web interfaces. No one assigned these, people just fill in where a need is.

That's good info but I think it should be more visible. I'd like to know who should I assign a certain PR for review. I'd like to know what roles are covered and which ones are missing or need support. This is open source, and open source requires strong transparency.

4. Remember that a lot of the code pre-dates ServUO. Coding standards from 10 years ago are very different from today. While we have spent some time updating code, not all of it has been reworked. Everyone does their best with code, there are always multiple approaches to coding. Anyone is welcome to make a suggestion to code they feel is "below quality". This is the essence of an open source project. There is a process of checking the quality of code in pull requests. You can see Voxpire's announcement on details for the QC on pull requests.

While there are multiple approaches to coding, in a serious project there should be a single quality standard, regardless it's open source or not. Please don't get me wrong with the following comment (it's intended to be positive feedback), but I have the feeling that the ServUO codebase is a grab bag where anyone can throw anything with little or no supervision. I'm pretty sure I'm not the only one with this perception. I think restricting the master branch is a huge step forward, but it's only the beginning. Coding standard documentation, automatic builds (i.e. travis/appveyor), automatic code formatting, checkstyle reporting... are only few ideas to actively improve on this.

6. Not sure what you mean here. We have removed most "custom systems" and have tried to only use OSI systems and systems that enhance the abilities of staff without affecting gameplay. You would need to give me an example for me to answer that further.

I don't know the ServUO codebase extensively, but I had in my mind the Customs Framework in the core, the XMLSpawner, XMLPoints and all their extras, games, etc. While these are awesome systems that are broadly used, IMHO the official script distribution should not contain them if the goal of the project is emulate OSI. By allowing this code to live in the distro you're forcing the community to maintain it along with the rest of the project, which I think is disturbing. Moreover, shard owners that don't want to use the XML* systems are forced to do so.

9. We have no plans for a stable release. RunUO did releases, but remember that RunUO was not totally open source. We have a version control system and users can pick any point in time that they wish to compile the projects simply by checking out any of the commits. We may do a "publish" someday soon, but it is not scheduled or planned at this time.

I strongly disagree here. First of all RunUO was totally open source after 2.0, and they continue doing releases (actually more frequently than the Beta/1.x era). Every open source project has releases. This is mandatory if you have a community using your project, especially for those less experienced, since it's the only way for them to get proper support, get communicated about changes, upgrade in a reasonable manner, be prepared for the upcoming changes... If you're planning for the future, it's also the only way to introduce breaking changes in a graceful way, and I'm pretty sure you want to do this without disturbing users.

I'm not sure if I understand the concept of "Publish", how different they are from releases?

I think in general you're doing pretty well in continuing the legacy of RunUO in the quest for emulating the official UO and providing rock solid, easy to use software, but by overall feeling is that the project is still managed in a very amateur way. Yes, this is open source, it does not pay our bills, but it's still a serious commitment.
 
The biggest problem with OSI Fidelity is that we require people to report what they think/know is wrong. If no one reports anything wrong, then we don't know to even try to fix it, much less what needs to be done, and then to do it.

I think the era checks would be best considered a 'bonus objective'. It tends to get neglected in favor of the primary objective of keeping the code up to date with OSI. Most of that is probably the difficulty involved in keeping the era checks up, and no one is focused on it.

I agree with the visibility. Something that gives a list of all the coders on one page, how long it's been since logging on, general skill level, access level, specialties/proficiencies, and projects being worked on. It would help when seeking advice/reviews, along with finding what needs more work in general.

However, do note that you can look at the Pulse on GitHub to see who has been doing commits.

For example:
Code:
Coder            - Last Login - Skill Level - Access Level - Specialties/Proficiencies - Current Projects
GriffonSpade     - Today      - Hobbyist    - Member       - AI & Creatures            - None
Ravenwolfe       - ...
Dexter_Lexia     - ...
...
...


I think the 'Bug Reporting' system could use expanding too. There are a few types of things that aren't really 'bugs', but should be tracked for development in the same way, with new tags. Also, there are Milestone Tasks hidden in the Archived Bug Reports sub-forum.

Code Cleaning Request - For when code works but has poor style/implementation and needs to be brought up to standards.
Era Check Request - For where there should be era checks in code, but aren't.
...probably a couple things I'm forgetting.

Also, when a new publish comes out from OSI, shouldn't we make a bunch of Bug Reports for each of the changes?
[doublepost=1490666789][/doublepost]Oh, and probably something to look at is this thread I made from November. Might give some guidance.
https://www.servuo.com/threads/creature-file-formal-style.5642/
 
Back