Waiting for Philosophy
The following short satirical piece demonstrates Godot’s development motivations in a humorous and concise manner:
The development philosophy of @GodotEngine is fueled by a true love and passion to make engines great again! 🙃#WaitingForBlueRobot #Godoverse #IndieGameDev #IndieDev #GameDev https://t.co/4slWTyVGWD pic.twitter.com/MkQY4pAq9Q
— Andrii Doroshenko 🇺🇦 (@Xrayez) March 24, 2024
The development of Godot Engine is governed by various implicit thinking processes which might not be instantly or completely obvious to a new person interested in contributing, especially if such a person has already some preconceived notions concerning the purpose and ideas behind Godot, so it’s important that both new contributors and existing core developers share the same vision for Godot Engine development to achieve best results.
Due to the importance of having development philosophy for a project, there exists an expectation that a project like Godot would have something like this as well. And in some cases, you may even see some signs that there exists some kind of “philosophy” in Godot. Here’s what you can read from the lead developer of Godot when he closes an issue discussing the usage of slow data structures in Godot1:
Again, I really appreciate that you have good intentions, but you don’t understand any of the inner workings of the engine, or the philosophy [emphasis added] behind it. Most of your comments are towards things you don’t really understand how they are used, how critical they are to performance, or what their priorities are in general.
Juan’s emotional reaction and interpretation aside which follows the above statement, what we can gather from his statement is that there exists some notion of philosophy behind Godot, which allegedly the author of that discussion doesn’t understand. At the same time, when you ask Juan directly to document Godot’s philosophy, he says that there’s basically no development philosophy in Godot2:
I would say that Godot development extremely pragmatic, with focus solely on solving problems. Because of this, there is not really a “Development philosophy” [emphasis added]. There is zero dogmatism here and theoretical or philosophical discussions are generally irrelevant in this context.
So, the Problem → Solution is what best expresses this mindset.
Lead developer of Godot made two claims concerning Godot’s philosophy. If you take them together, can you spot contradictions? Is it just hypocrisy or doublethink? Can you come up with an interpretation that could present Juan in a good light?
I asked the above questions to a lot of people. Most Godot followers either ignore, deny, or try to rationalize Juan’s statements. However, when I ask these questions to people outside of Godot community, most people say it doesn’t show Juan as an attentive, caring, or even a competent person.
We can go further in our journey to eliminate the ambiguity behind Godot’s philosophy, and whether it exists in the first place. Here’s another take of Juan around Godot’s philosophy3:
I think the main reason why Godot, as an open source project, is growing so much (while so many other open engines failed) is that we have very user driven philosophy [emphasis added], where we discuss their needs and problems constantly, and never force our ideas and views
Here, Juan describes this as a “user-driven philosophy” now. Apart from Juan’s pretentious claims of Godot’s growth over other allegedly failed projects, it would be quite far-fetched to describe user-driven approach as the core philosophy behind Godot, because being user-driven is a quality of a lot of projects, otherwise most community-led projects out there wouldn’t be useful in the first place. It would be quite naive to believe that the user-driven approach is unique to Godot, so there must be something else behind Godot’s so-called success.
Considering the project of this scale, this is quite bizarre. Despite Juan’s position on this, many people would still like to know Godot’s vision and mission in general. The “Problem → Solution” mindset is not unique either, because this approach describes pretty much every project out there. It still leaves room for ambiguity, as others point out.
Here’s a list of projects that do have their philosophies/principles/goals documented to various extents:
- SCons Principles (ironically, a build tool used by Godot!)
- Unix Philosophy
- Blender Design Document
- The Zen of Python
- Lobster Design Philosophy, History, and Future
- Beef Programming Language - Design Goals
- Why Defold?
- Design Principles Behind Smalltalk
- Gigi: Rapid Prototyping Platform for Real-Time Rendering (see Development Philosophy section)
- Diátaxis - Theory (an approach to technical documentation authoring, applied recursively to the project itself)
What is Blue Robot’s philosophy?
There exists Godot’s design philosophy page, but it doesn’t actually answer the bigger question of “Why”. It doesn’t contain principles that Godot could promise to adhere to. It doesn’t target the engine developers and contributors themselves with the purpose of giving a good direction towards how the engine should be like, and has only introductory selling point value for those considering trying out the engine for the first time, not necessarily developing features. In short, it mostly answers the question of what rather than why. This is a clear example of Godot’s substitution of concepts: they will use a ‘philosophy’ word, but in reality it’s just a description of what the engine can do, or say that “Godot is “community-driven” while it’s actually community-informed, as you’ll find out in Waiting for Community chapter.
Due to Godot’s ambiguity regarding its development philosophy, vision, mission etc, the following chapters attempt to describe Godot’s principles, if we can call them like that. The following chapters are not meant to define Godot’s philosophy or impose a particular worldview upon Godot, because according to Godot’s lead developer, we now choose to believe that Godot has none. Even if Godot does have development philosophy which Juan doesn’t want to reveal for various reasons, we have a problem of accessibility of such vital information. In either case, we’re going to treat Juan’s vision as a solely subjective opinion, despite the fact that his subjective opinion de-facto represents the current state of Godot.
Regardless, Godot’s development process represents some collection of tangible enough qualities that allow us to form a pattern worth discussing. However, if you’d like to recieve a short answer, there’s no such thing as a “development philosophy” in Godot, as all Godot contributors are guided towards the personal needs and desires of Juan Linietsky, which are often contradictory in nature.
References
Using the slowest data structure almost every time - Comment by Juan Linietsky.
“Problem → Solution” mindset - Comment by Juan Linietsky.
User-driven philosophy - By Juan Linietsky, Twitter.