⚡Philosophies
The project's core philosophies, this list is not finished.
Cultural Philosophy
Transparency
All non-sensitive information and data is shared with the community. This includes information pertaining to any and all software used on the server. Internal policies pertaining to moderation or community relations are also made publicly available.
Privacy and Security
We respect your privacy and vow to secure your data. We will never sell or share you data with any 3rd parties. View our easy to understand privacy policy at Privacy Policy
Player Safety
The safety of our players will always be our #1 priority. We work to prevent harmful and abusive content before it can be seen. Unfortunately, bad actors will always find a way to slip through, report these bad actors by emailing us at [email protected].
Community
Our commitment to our community goes further than hosting a Minecraft server. We want to foster a community where members build valuable friendships and contribute to a good cause while doing it.
Volunteer Management
Claim
Volunteering for a server shouldn't feel like a job.
A traditional approach to 'staff management' is often treating volunteer staff as if they are employees. This approach fails to recognize volunteers for what they are, causing a plethora of problems.
In this thread I will (1) outline the problem, (2) dissect the traditional approach, and (3) offer a remedial approach.
Problem and Goal
The goal of all volunteer programs is to attract passionate players to volunteer their time towards making your server better. The following 2 problems are always present.
(1) Bad actors abusing permissions to inflate their god complex.
(2) Internal conflicts (frequently including a narcissistic staff manager) causing volunteers to become disgruntled and abuse permissions out of spite.
Both of the following approaches attempt to solve these problems.
Traditional Approach
Recruit volunteers using staff applications that are susceptible to social engineering from bad actors.
Incentive system is built around getting more permissions for doing more work.
Strict guidelines that give volunteers very little discretion over anything.
Very high expectations of professionalism and subordination.
Strike system- If you're unprofessional or insubordinate 3 times, you get demoted.
Modern Approach
In order for this to work, new volunteers must already be trusted/reputable members of the community before joining the team.
Recruit volunteers by offering prominent members of community the opportunity to make the server better.
Result-oriented team of volunteers that are working towards a common goal instead of the individual goal of getting promoted.
Volunteers have broad discretion over tasks like moderation and are able to handle on a case-by-case basis.
Volunteers already have good communication skills & social etiquette.
Volunteers that resign will always be welcomed back onto the team.
Only time a volunteer would be forcefully removed is he/she was/is involved in flagrantly malicious activities.
Overview
In conclusion, the most important things are: (1) keep volunteers happy by allowing them freedom/discretion and (2) don't fall victim to narcissists & social engineers.
Design Philosophy
Elegancy and Security
There should be no obscure or hacky features. Designs should be flexible in that they shape around technical limitations, not attempt to bypass them. Basic OOP principles should always be applied when possible.
Data and Storage
Database calls to storage should be restricted to only user connect/disconnect or server start/stop. Data should always be fetched from cache (Redis or memory).
Scalability and Performance
Everything that can be done off-thread should be. Use of Bukkit Thread Pool is preferred over creating new thread (and futures). The only main-thread operations should be directly interfacing world or player.
Code Style and Structure
All projects strictly follow Google Java Style Guide. Variables are expected to have concise, relevant names and follow proper naming conventions. Code commenting should be present to provide brief overviews for more complex functions.
Classes should be structured into Objects, Managers, Utilities, Abstractions, and Implementations. File structure should follow pre-existing patterns of a project.
Last updated