Godot core budget meeting report #1
By: Juan Linietsky 11 June 2020
This article is from June 2020, some of its contents might be outdated and no longer accurate.
You can find up-to-date information about the engine in the official documentation.
The funding situation of Godot has been evolving in the past months, as we received more grants and donations, and reorganizing where the funding is going, deciding hires, etc., takes considerable time as well as requires the right timing.
Because of this, we have started organizing meetings with the core Godot contributors to discuss and decide how to best allocate our available budget in the best interest of the project. To these meetings we invite long standing Godot contributors who we know and trust and who have made significant contributions to the project over the years.
Based on the outcome of these meetings, the PLC (which still has the final say regarding the use of Godot funds) will set things in motion with our legal and fiscal home Software Freedom Conservancy to apply these decisions. The idea is to publish a brief of what was discussed in the meeting, so that the community and those donating can have more transparency on what funds are being used for (although remember that, in the end and whatever we decide, Software Freedom Conservancy’s charitable mission ensures that our funds are solely used for the benefit of the project).
Keep in mind that, as a main rule, Godot is a free and open source project where most of the development and contribution is done by volunteers donating their free time, so we only use funds for critical tasks of utmost importance, where we are having difficulties finding enough volunteer time to work on them, and for which the PLC and core contributors decide that we must move forward.
The following is the list of topics discussed at our first meeting in late May 2020 and what was decided:
RTL + font shaping
There is a high demand from Godot users in countries and cultures where right-to-left writing systems are used to have proper support for it in Godot (such as Arabic, Hebrew, etc.). Additionally, many languages require advanced font shaping features to handle diacritics and letter combinations, which are often fundamental for any accurate rendering of these languages (see e.g. Is this Arabic? for a light-hearted crash course). Unfortunately, most of the project contributors are from countries where these language systems are not common (plus the task complexity is high, as it involves refactoring the way Godot handles text controls like
Button) and creating this support without actually being able to understanding it is very difficult.
As this is a task of high interest, we were offered donations specifically to do this task. As such, we will start accepting budgets to do this from developers or companies that might be interested in implementing it. The proposal of what exactly needs to be done will be cleaned up in the coming days so we will make an announcement and start accepting budgets proposals to do it. If you have significant experience with Godot and/or with implementing RTL and font shaping support and you are interested, please wait until then.
We have received a 10k USD directed donation to improve documentation. We discussed with the core developers about hiring GDQuest (who have plenty of experience working with the engine documentation, with Nathan being one of our main docs contributors) to work on this task. We also discussed a proposal to further clean up the documentation and clearly separate more game-specific tutorials, as well as having a clearer way to link to content generated by our community.
Hiring a generalist contributor for editor UX and web dev
On planning our next full-time hire, we discussed the possibility of hiring one of our core contributors to work, among other things, on improving the general usability of the Godot editor, which we believe to be an area where a lot of work is pending. They would also help with the management of contributions and bug fixing in various areas.
The contributor we have in mind also has experience in web development, so they could help us improve the Godot website and infrastructure, which have been needing more work in many areas, like a proper showcase, up to date content, a proper system to show our combined funding status and goals, etc.
As always, our goal with hires is that they need to be cash-flow positive. Meaning that we will not do permanent hires unless 1) Our level of monthly funding (Patreon, Paypal, etc.) can cover it, with some extra margin 2) We have enough money saved up to ensure two years of paid work for all current contractors.
Please understand that it is always a risk for our contributors to quit their current jobs to work for the project, so we need to ensure we will be able to pay them for a considerable time before hiring them.
Hiring Matias Goldberg to help him create GPU-based texture compressors
One of the main problems we have in Godot is the time it takes to import textures. Most texture compressors are often slow and focus on the highest quality possible as a priority instead of attempting to do trade-offs between quality and encoding performance.
To work around this, for Godot 4.0, we want to move our texture compressors to GPU using compute shaders. Using them allows to convert all the import formats at the same time and make them as efficient as possible. The idea is to have near-instantaneous import while optionally marking some of your textures for high quality and having those imported in higher quality in the background (but still have a lower-quality version usable right away).
Because we want this work to benefit other projects as well (so more can contribute to it), we will do a financial contribution to Matias Goldberg (the lead developer of Ogre 3D) for his work on Betsy, which is a new, very high performance GPU-based texture compressor.
Godot 4.0 will support a new display system based on a
DisplayServer. This allows much cleaner code for handling display and input, as well as allowing multiple window support. Unfortunately, we ran into some issues in the X11 platform that are very difficult to fix, and X11 is an extremely difficult API to work with (requiring a combination of text based atomics with manually marshalled data) that requires years of experience. Eventually, if we can’t fix them in the coming weeks, they idea is to look for paid work from experienced X11 developers to solve those issues.
Renewing Ignacio’s contract
Ignacio has worked two years full-time on the C# support for Godot thanks to a very generous grant from Microsoft. He has done an incredible job which has now allowed 20% of our users to make their games using C# and, upon the imminent completion of his tasks, more users will be able to use Godot with C# as it will support all platforms for deployment.
Unfortunately, given the COVID situation, and even though there is full interest from all parties, doing a timely renew of his contract with another donation so he can continue working on C# is looking a bit difficult for the time being.
Because of this, and given so many users and companies are now interested in his work, we will be adding a funding goal so Ignacio can be hired full-time. When the situation becomes more normal worldwide, and we can manage to get sponsoring for his work going again, this will allow us to use the extra funding for more paid work.
Renewing Fabio’s contract
Fabio Alessandreli has been doing a fantastic job the past years improving Godot networking, multiplayer, HTML export and even getting Godot editor to work on the web (which has been highly requested by the education community). He has been working thanks to generous donations by Mozilla, and his work package still has some months to go, but the idea is that, given he has proven his enormous worth and ability to contribute to the project, we want to secure the budget to hire him full-time for the foreseeable future.
While it may be possible for us to negotiate other donations for him to work further on networking on Web support, it has been decided to add a funding goal for hiring him full-time too.
Documentation infrastructure work package
We have been discussing that, besides improving the documentation itself, we want to improve how documentation is shown to you. Currently, we are using Sphinx via ReadTheDocs, and we’re overall quite happy with it, but our users are also finding some limitations, such as:
- The built-in search engine doesn’t provide the most useful results.
- There is no way to leave feedback, notes, or questions on documentation topics, which is common in modern doc systems.
- We need a system to switch references to API methods easily from
PascalCase, depending on the scripting language you are using.
- Other many smaller usability issues.
For this, we discussed and we plan to use accumulated project funds to hire Hugo Locurcio (who has been a longstanding Godot contributor) to do a work package consisting of improving the Godot documentation system.
Accessibility work package
A common request for Godot is that we improve tools meant for accessibility in games, so developers can more easily make their games easier to enjoy by users with accessibility issues. There have been some ideas and discussion floating around, but it’s difficult to come up with a proper proposal of what would constitute good accessibility support in Godot. Because of this, we decided to work on a proposal and allocate some extra budget for this (or maybe try to get this work sponsored).
As you can see, we are very serious in how we use project donations and funding, and we make our biggest effort so donations are used as best as possible for the common good. The idea of these reports is to add more transparency in how we decide to use our funding. Donations help us hugely to achieve our goals faster and to provide you a fully free and open source game engine that you can own as if you made it yourself for your game.
And as always, if you are not yet, please consider becoming our patron (BTW, the Patreon page will soon be updated to better reflect our current and future funding goals as outlined above).