From 08742d9bb7bafb1ec32c5ddf833a98eaa2a69c39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= Date: Tue, 24 Sep 2024 16:43:41 +0200 Subject: [PATCH] Add announcement for Godot SDK Integrations organization --- .../_article/godot-sdk-integrations.md | 58 ++++++++++++++++++ .../blog/covers/godot-sdk-integrations.webp | Bin 0 -> 20588 bytes 2 files changed, 58 insertions(+) create mode 100644 collections/_article/godot-sdk-integrations.md create mode 100644 storage/blog/covers/godot-sdk-integrations.webp diff --git a/collections/_article/godot-sdk-integrations.md b/collections/_article/godot-sdk-integrations.md new file mode 100644 index 0000000000..4930c681ae --- /dev/null +++ b/collections/_article/godot-sdk-integrations.md @@ -0,0 +1,58 @@ +--- +title: "Godot SDK Integrations" +excerpt: "A new GitHub organization to centralize the community efforts to provide support for third-party SDKs for Godot." +categories: ["news"] +author: Godot Foundation +image: /storage/blog/covers/godot-sdk-integrations.webp +date: 2024-09-24 14:30:00 +--- + +### Third party services SDKs and their circumstances + +Developing and publishing games often involves relying on third-party services, middleware, or platforms. Numerous vendors offer commercial products like advertising networks, backend services, sound engines, user authentication, and more. These tools simplify the process of monetization, expanding player reach, storing data on servers, and performing other functions beyond what a game engine typically provides. + +To facilitate integration, these vendors often supply SDKs tailored for specific game engines, allowing developers to easily install them and interact with their products. + +Godot, while rapidly growing in popularity, is still relatively a newcomer. As such, while some vendors are beginning to support the engine, many others have not yet invested on it, given the necessary development and maintenance costs. + +For some, this is due to the significant resources required (finding the right developers to hire to make the SDKs), while for others, it's simply a matter of being unaware of Godot's growing market or dealing with internal bureaucracy that slows down the process of supporting the engine. + +As the Godot Foundation is committed to using donations solely for creating FOSS and prioritizing open standards, it does not allocate resources from the general pool of donations to integrate proprietary SDKs into the engine. + +While officially incorporating monetization SDKs into Godot might not align with the project's goals, for example, there is still a widely recognized need within the community for such support to help developers make a living. As there is a need for many other SDKs. + +### Community to the rescue + +To tackle this challenge, many in the Godot community have taken matters into their own hands, developing proper integrations for third-party services. Talented developers have done an incredible job to bring the most popular services into Godot, enabling the community to publish games on their desired platforms using the necessary third-party tools. + +However, this approach still presents several issues for the community: + +* Not everyone is committed to creating and maintaining a full SDK integration. Often, developers only implement the features they need for their specific game. +* Developers may not have the time or inclination to support other users’ issues as long as their integration works for their project. Likewise, they may not continue developing the integration after their project has been published. +* As a result this means that, over time, multiple forks of the same integration can be found on GitHub, maintained by different individuals who needed it at different times, leading to fragmentation. + +Adding to this, some vendors who provide SDKs for other game engines have expressed interested in supporting Godot but are not ready to allocate internal resources to develop an integration due to costs or other constraints. They might be willing to donate their integration (or donate the money to do an integration) to the Godot Foundation and collaborate with the community. + +While this is amazing, the Foundation doesn't want to become responsible for maintaining such integrations using general funds once the specific donation runs out. + +### The Godot Engine Community SDK Integrations GitHub organization + +After extensive discussions with the community and various vendors, the Godot Foundation has decided to maintain its stance on not directly developing SDKs. However, recognizing the need for a more organized approach, the Foundation has established an official centralized GitHub organization for hosting SDK integrations, thereby encouraging community contributions. + +This organization eases the burden on developers who create their own SDK bindings, as they will now be able to accept contributions without bearing the sole responsibility for maintaining the integration. It also provides a clear and official platform for companies that wish to donate their SDK integrations, offering a centralized location for these contributions. + +The new [**Godot SDK Integrations**](https://github.com/godot-sdk-integrations) organization has its own GitHub page already. Developers who have been working on SDK integrations are invited to move their work here, if they desire so. You can join the new [`sdk-integrations` channel](https://chat.godotengine.org/channel/sdk-integrations) to discuss this transfer. + +Likewise, vendors interested in donating integrations for their first-party SDKs are also welcome to move them to this new organization, if they deem it preferable to hosting SDKs themselves. Please contact the [Godot Foundation](https://godot.foundation/) in order to make arrangements. Likewise, if you would like to finance the development of Godot integrations for your SDKs, the Godot Foundation can help facilitate contacts with trusted community maintainers or companies who can take on such work. + +Please note that this organization is a public space for centralizing SDK integration efforts and collecting repositories. The Foundation will not manage or update the integrations, so ongoing development will depend on the community and vendor contributions. This initiative is intended to be a collective effort. + +### Contributing to the Godot SDK Integrations organization + +As we mentioned, the Godot Foundation is hosting this new space, but doesn't intend to spend its resources on maintaining it. + +We are therefore calling for motivated community members to get in touch and help organize the structure of this new organization, and help support developers and vendors who want to provide new SDK integrations for Godot. + +Aside from the actual work of developing and maintaining SDK integrations, we foresee the need for contributors with a production profile who can help write common contribution guidelines, instructions on how to "recruit" new maintainers, or generally ensure some quality and fitness for purpose of the various SDKs offered by and to the community. + +For the time being, we are going to discuss and organize the work of this community organization on the [`#sdk-integrations` channel](https://chat.godotengine.org/channel/sdk-integrations) of the [Godot Contributors Chat](https://chat.godotengine.org/). See you there! diff --git a/storage/blog/covers/godot-sdk-integrations.webp b/storage/blog/covers/godot-sdk-integrations.webp new file mode 100644 index 0000000000000000000000000000000000000000..c972fbb0a276151937f82f9c2603716de7d345b0 GIT binary patch literal 20588 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