Please enjoy this special spotlight post about results of a workshop we are excited about. We hope you will like it as much as we do!
A few weeks ago we had ourselves our first community workshop. This workshop was intended to perform a pulse check on us as individual contributors and us as a community. With seven people in total, this was a small enough group to allow us to focus on everyone's thoughts yet with the most active contributors present a very representative group for our community.
🗒️ Workshop Format
Before we dive in, a quick shout-out to Mural, an awesome tool allowing for very simple collaborative brainstorming for various purposes. We're happy to have been accepted for their free nonprofit plan and had a very good time using Mural for our workshop.
Every workshop needs some ground rules to allow for a productive session enabling everybody to participate and bring in their ideas and thoughts. A basic set of ground rules was given as a start, encouraging everybody to speak up to ask questions or request a break as well as to avoid finger-pointing and technical discussions. Based on this, the first part of our workshop concentrated on developing code of conduct for the workshop that we all feel comfortable with and agree on, by asking ourselves, what we expect to make this a "meaningful & pleasant workshop"
The responses made it pretty clear, that we wanted this workshop to be fun, but still talk very honestly and openly about what we value and want for Terasology. Reflecting how we interact with each other in our community, another big focus point was fairness. It showed that everybody's opinion is important to us and we want to give everybody an equal chance to bring in their ideas. On a similar note, it showed that we value honesty and openness while practicing mutual respect in terms of communication and focus.
With this code of conduct in place, it was time to talk agenda. The workshop was prepared to allow covering three modules: motivation, vision and community. With the content-wise thoughts on what would make this a "meaningful workshop", it already became clear that our main area of interest was finding out what our individual goals and visions for Terasology are and see which overlap and which diverge. The planned workshop time allowed us to cover two of the three prepared modules and with "vision" being set, we decided to in addition talk about "motivation".
With these interactive conduct and agenda alignments done, both modules followed a very similar structure. For each module, we started with a fun little "spirit animal" icebreaker exercise asking everybody to post a picture of an animal describing how they view or feel about something 🐾 Afterwards, we had five different prompts to self-reflect on, aimed at being very honest to ourselves and explore our personal opinions and thoughts. For each of these prompts, everyone first got some "alone-time" to self-reflect and answer before we made all notes visible to everybody else. The second step for each of these prompts was then to read through everything, clarify anything that was unclear and try to cluster everything. The clustering allowed us to identify areas of overlap, showing what's important to us collectively, but also areas of divergence, showing individual motivations and visions.
This first workshop module was all about motivation:
- what motivates us to work on an open source project?
- what made us join and stay with the Terasology community?
- what factors demotivate and motivate us when working on Terasology?
🐾 Contributor Spirit Animals
Each of us is an individual human being with different character, mindset, goals and dreams. We act and contribute in different ways and for different reasons. This is why, the first question we asked ourselves was: "Which animal do I feel like when contributing to Terasology?"
From ant to elephant, from whale to platypus, from peacock to ant-eater - the spirit animals representing us contributing to Terasology were as different as we are as people. While some of us run around all busy, working on a lot of different topics and areas, others prefer to contribute with large changes with long term goals. Some even do both, being rather casual for a while and then bursting out in activity. At the same time, some of us like to produce fancy, visible features and show them off, while others concentrate on "eating" bugs or work behind the scenes to keep the community going.
🔍 Project Requirements
Most of us already contribute to open source projects for several years and learned what we like in a project and what we don't. In this light, we self-reflected on the following prompt: "If I'd start Open Source contribution now, I'd look for a project, that ..."
After writing down whatever came to mind, we found a hand full of clusters that sum up our thoughts pretty nicely:
- User Focus - we value both, an existing user base and that we ourselves use what we work on
- Community - a welcoming, open, active and knowledgeable community is as important to us as good organization and a low entry-barrier
- Potential - it's important to us that we see the potential for growth and adoption by users
- Match to Interests - we actually like it when topics, tools and technology we deal with at work and in our free time blend well and we can use the resulting synergies to improve and become more experienced
- Nerdiness - we're drawn to interesting yet quality-improving tools and languages and technical challenges that give us the opportunity to grow
💚 Terasology and Us
All these thoughts about what we would look for in a project if we'd start contributing to open source now, brings up the question of whether that's also reflected in why we joined Terasology. So it was time to revisit what motivated us to join Terasology and the paths that led us here in the first place. Further, we reflected on our relationship to Terasology - what Terasology as a project currently is to us and what keeps us bound to it.
The responses to the "I joined Terasology to ..." varied quite a bit, but still we were able to find a few patterns in our clustering activity. While most of us participated in GSoC and stumbled upon Terasology in the process of looking for a suitable project to contribute to, others learned about it in different ways or, in the case of Cervator our project lead, were around from the very start. The clusters of the previous reflection also showed up again here - many of us joined for any or multiple of the following reasons:
- to help realize the project's potential of becoming a game we ourselves (would like to) play 🕹️
- to enable others to build on it, create an alternative to Minecraft or just "have a frame to paint in" 🎨
- to learn and improve our skills 🎓
- to meet people with similar interest 👨💻👩💻
- to work on something we're interested in 🤓
Most of these are nostalgic memories on the positive intentions and expectations that led us to join Terasology. So next it was time to be honest to ourselves and enter the present time and with it our current feelings towards our project. The thoughts triggered by the "Terasology currently is to me ..." prompt showed a lot of love and heartfelt bond with Terasology, but also brought up a first taste of what we're unhappy with and what concerns us:
Terasology is a place to learn and grow. It offers a lot of different areas to "self-actualize", to experiment, improve and grow as a coder, as a software developer, as a person. It also impressively highlights the intricacies of Java and Gradle and poses interesting programming problems and space for architectural discussions and design.
All these different areas for self-actualization and experimenting and our ambition to make everybody happy took their toll on Terasology's "state". We are struggling and are in search of both an identity and a player base. Frankly put, our codebase is quite broken and more a proof of concept than an actual game.
In the midst of all these challenges, the important thing is that we're still willing to continue working on it. We are aware of the state of our codebase, but we still see the potential, we see what it could become one day. So we continue to put in the work, fix bugs, improve architecture, documentation and code and try to motivate more people to join the effort.
Why do we even bother, you ask? Because we love Terasology. Especially in the current "scary world of 2020/2021", Terasology for us is an anchor of stability, a refuge to code in and a hiding place from all the real-world mess. For us, it's our main non-work activity and a regular part of our weekly focus time off the clock. We consider ourselves a community of friends and deeply care for our project.
🔥 "Yay"s & "Ney"s 🧯
Albeit all the love and care, naturally there are factors that demotivate us and slow down our drive. The responses to the "When contributing to Terasology, I'm demotivated by/when ..." prompt brought to light both technical and non-technical factors:
- Review Load - efforts often stall due to PRs sitting around unmerged because nobody reviews them - and the few people that do review often don't find time for anything else
- Lack of Focus - our recent attempts to channel and streamline our efforts to finish more complex stabilization topics one by one instead of starting multiple ones in parallel that conflict or compete for resources are somewhat successful but we still have a long way to go
- Complexity - the sheer size of our codebase requires constant upkeep and makes it hard to troubleshoot and understand yet easy to break things by accident
- Lack of Usability & Adoption - being more of a tech demo and less of a game, Terasology lacks usability which results in low attention from players
- (Inter-)Personal Issues - as an open and international community, there's always potential for personal conflicts due to poor wording or language barriers, cultural differences as well as differing opinions
- Lack of Time - irrespective of student, employed or parent, all of us would love to have more time to spend on Terasology
Fortunately, there are many aspects that counter these demotivating issues and motivate us time and again to stick with the project and keep it going. In response to the "When contributing to Terasology, I'm motivated by/when ..." prompt, we collected the following factors that boost our motivation:
- ✨ Technology - we love it to share interesting things, play around with new tools and tech and find a shiny new use for some piece of logic that's been around a while
- 💪 Achievements - getting things done, solving problems, finally fixing "that bug" - improving and seeing how much we achieved recently is a big motivator for us
- 🧐 Responsibility - we don't like to point fingers, but we share the feeling that it's our responsibility to fix a bug we feel is our fault and this drives us both to investigate and fix it and to test our contributions even more thoroughly the next time
- 🤝 Activity & Collaboration - we are motivated by working together as a team and more people joining our cause allowing for even more progress and achievements
- 🤗 Appreciation - visibility outside of our community in posts and videos as well as inside of it when people enthusiastically share what they've worked on or that they tried something and it worked out nicely - this really makes us all smiles 😊
- 🚀 Vision - sharing the crazy dreamland ideas we have and getting everybody excited about what Terasology could become keeps up the spirit and belief in our cause
Fully motivated by the first module, in this second workshop module we set out to try to understand what our vision for Terasology is:
- how do we (want to) stand out?
- what would we like to change and work on?
- how do we feel about Terasology's future?
- who do we want Terasology to be built for?
🐾 Terasology Spirit Animal
Based on all the different areas of Terasology we work on, we see Terasology from different perspectives. Based on all the different dreams, wishes and ideas we have for Terasology, we see it in a different light. So the first question we asked ourselves in the context of our vision for Terasology was: "Which animal describes what you would like Terasology to become?"
From butterfly to dragon, from bee to peacock, from owl-bear over spider-pig to egg-laying-wool-milk-sow, again the variety of spirit animals was creative and astounding. The most present associated attributes were an attractive and recognizable identity and a large diversity with many pieces that all are useful and work together to build a powerful entity. Further, maturity and the transition required to get there was an important topic, too.
💸 Selling Point
We don't want to be yet another Minecraft clone, we want to be Terasology. But what is it that sets Terasology apart? This is what we reflected on in the following prompt: "Terasology stands out from other voxel (engine) projects in that ..." Here's what we see as our current "selling points":
- History - Terasology is around for almost a decade now (that's longer than quite some start-up companies), so we definitely have long-time project and community management experience to show for 👔
- Repository/Contributor Ratio - mainly a tongue-in-cheek comment, we indeed have quite a number of repositories with currently unfortunately only a low number of very active contributors - resulting in a lot of space to self-actualize yourself 😜
- Openness - our community is both, very open to new collaborators and in general not strictly steered - everybody is free to work on what they like, although we are happy about any contributors that want to join our coordinated efforts 💪
- Modding - Terasology is highly focused on a modular (ECS-based) approach allowing to "make more out of it than just a voxel engine demo" 🤓
✨ Genie in a Bottle
Have you ever worked on something and wished you could just snap your finger and make something happen? Us, too. So in response to the "If I could change one thing about Terasology with the snap of a finger, I'd change ..." we came up with the following:
- reduced complexity, both in terms of the amount of repositories and the amount of abstraction
- increased consistency, both in terms of documentation and visuals like menu theme, icon style or generally a full-fledged functional and powerful UI framework
- integrated infrastructure, both for testing and multi-repo builds and continuous integration
💚 Personal Plans
Next to all the upkeep we do, it's important for our vision to understand, what everybody would like to (be able to) work on. The responses to the "I would like to spend Terasology time on ..." again showed a lot of overlap:
- Architecture & Logistics - we want to fix our codebase by improving architecture and concepts, document them and finish the backbone of automation that supports our build, test and release processes
- UI & UX - we want to work on finding our visual identity by taking time to work on design and assets, customize our UI and improve our user experience issues
- Stability - we want to fix bugs and get our codebase into a more stable and usable state
- Dreamland Craziness - everything from in-game automation to flying cars, we'd love to implement more cool features and provide more end-user content
- Community Activity - we want to collaborate and explore new concepts and opportunities, chat and share what we work on, and first and foremost play our game together with our community more often
🔮 Terasology's Future
The combination of personal plans and the awareness, that the current state may be far from being able to act on them, created a lot of different emotions when thinking about the future of Terasology. Both, hope and concerns were the tenor of the responses to the "When I think about Terasology's future, I ..." prompt.
There's definitely a chance of us falling back into old patterns, getting less stable again or being stuck in the past due to not enough time to turn things around. However, we do have a lot of potential and although likely being (expectedly) never truly finished, we will never run out of ideas on how to improve.
It already became obvious in the motivation module, but here it was again: We desperately want Terasology to become more than a tech demo and more than a Minecraft clone. We want it to be a game that's attractive to play, both for us as for people outside of our community - a game that we can spend hundreds of hours playing. And we want it to have it's own recognizable identity to escape the stereotype of "yet another Minecraft clone".
One of the main reasons behind our very modular approach has always been the goal to enable others to build on Terasology. We want it to be a platform that can be adopted as the basis for new games and to generally "build nice things".
🎯 Target Audience
During this module on our vision for Terasology, we though a lot about what sets us apart, what we want to work on and change and what we see in our crystal balls when we look into Terasology's future. All of those and the target group for which we build Terasology are dependant on each other, which is why we tried to state our personal views on the "In my opinion the target group of Terasology should be ..." prompt.
- Learners - no matter if student, developer, designer - anybody that is willing to find their footing in game development and want to embrace this in a free and open community is welcome
- Modders - 3rd party developers that want to implement their ideas and visions, change a voxel game to their liking, expand on their own projects or just want a (starting) place to experiment are welcome
- Players - we want to be a strong option for players looking for collaborative, creative and open-world voxel sandbox games
This workshop aimed at performing a pulse check on us as individual contributors as well as as a community and I personally believe, that it achieved that goal. However, after working on the "motivation" and "vision" modules, we felt like something was missing. The nature of a pulse check is to collect a first set of information about the mood in a community and identify on a rather high level what's already working well and where there's room for improvement. In this workshop we collected this information and through the clustering already identified both working and problematic aspects of our community and contributing to our project. However, this clustering is only an intermediate step and we need to go beyond this.
Our first follow-up is this workshop summary, to broadcast our findings and encourage everybody to share their thoughts on it and join the cause. A second follow-up will be documenting our shared "values" (irrespective of whether we already live by them or are working on getting there) we identified as well as our shared vision for Terasology. The third step will be drilling down on the high-level areas. On one hand, this includes the areas for improvement that we identified and agreed on, in order to leverage the momentum of interest and motivation to figure out what we can do to actually make a change there. On the other hand, this includes topics that we diverged on, in order to find a collaborative way to satisfy all our needs while also agreeing on at least a rough course to sail on and avoid pulling on different ends of the same rope.
Here's a (non-exhaustive) list of examples for possible future workshop topics:
- putting ourselves into the shoes of potential players
- putting ourselves into the shoes of potential modders & contributors
- retrospective on GSoC
- brainstorming on code style