Hugo
Apr 28, 2021
Please welcome Hugo Locurcio, @HugoLocurcio
Web and infrastructure developer for @godotengine
April 28th to May 5th on @imakefoss
Interview: https://t.co/EYil2INND6
@imakefoss is a rotation curation account, a blog, a podcast and a YouTube channel. https://t.co/lgQK4ZwNMN
Apr 29, 2021
Hello everyone! This week, I’ll be talking about open source game development, what FOSS brought to me, and of course #godotengine :)
—@HugoLocurcio
Apr 29, 2021
Quick-ish recap of my FOSS origin story: When I was about 10 years old, I wanted to play more games but I didn’t want to ask my parents to buy me new games. I ended up discovering open source games. Soon after, I joined their communities and tried to contribute.
—@HugoLocurcio https://t.co/EFyKe5PVNq
Apr 29, 2021
@HugoLocurcio Due to my limited technical skills at the time, I couldn’t do much but I still tried my best to help those open source games.
I started contributing to French translations since I’m a native French speaker. This also helped me improve my English skills :)
—@HugoLocurcio
Apr 29, 2021
@HugoLocurcio Fast forward to 2011. I discovered the open source game #Minetest. The game was starting to get traction among Linux gamers. In December 2011, Minetest got support for Lua modding, making it possible to create new gameplay items with minimal programming knowledge.
—@HugoLocurcio
Apr 29, 2021
@HugoLocurcio I took this opportunity to create More Blocks and More Ores. These two mods were quite basic on a technical level (not so much now), but they still became some of the most popular mods in a few weeks' time.
Being an early adopter can make things quite easier :)
—@HugoLocurcio https://t.co/YD5RaleOaw
Apr 29, 2021
@HugoLocurcio I happily moved along and maintained the #Minetest mods More Blocks and More Ores for a few years. Many people from the community helped me on the way as well.
During that time, I also worked on other Minetest-related projects, texture packs, and mods.
—@HugoLocurcio
Apr 29, 2021
@HugoLocurcio Later, I wanted to move to something more ambitious and create my own open source game.
However, in 2013, the options for doing so were quite limited. You had to fork an existing game engine like ioquake3, or create your own engine based on a framework like OGRE.
—@HugoLocurcio
Apr 29, 2021
@HugoLocurcio Both of the methods mentioned above required low-level programming.
They were also starting to lose traction among other developers, with the rise of full-fledged game engines that come with GUI editors such as Unity 5 and Unreal Engine 4.
—@HugoLocurcio
Apr 29, 2021
@HugoLocurcio In January 2014, while reading Phoronix as I did every day, I saw an article about a new game engine that would be open sourced soon after: Godot Engine. I compiled #GodotEngine and tried it out as soon as it was released. I then toyed around a bit with its demos.
—@HugoLocurcio
Apr 29, 2021
@HugoLocurcio I kept #GodotEngine in the background until May 2015. I was 17 and, while studying for the French baccalaureate, I started experimenting with Godot on various projects.
In November 2015, I released a small 3D game called Veraball: https://t.co/pLh0F96fzW
—@HugoLocurcio
Apr 29, 2021
@HugoLocurcio Veraball was a simple proof of concept but I was still proud of what I managed to achieve.
At the same time, I also joined the #GodotEngine community to help other game developers on their projects. I became a prominent Godot community member soon after.
—@HugoLocurcio https://t.co/ySXXf1qAoQ
Apr 29, 2021
@HugoLocurcio I made my first code contribution to #GodotEngine in May 2016. Since C++ felt quite daunting to me, it took me a while to pick up speed.
My 10th commit to Godot was only made 2 years later, but I quickly became more prolific. I reached 100 commits the same year!
—@HugoLocurcio
Apr 29, 2021
@HugoLocurcio Fast forward to 2020. I finished my master’s degree in computer engineering in the middle of the year and joined #GodotEngine as a full-time web and infrastructure developer.
This let me dedicate more time to work on open source software.
—@HugoLocurcio
Apr 29, 2021
@HugoLocurcio Being able to conciliate my hobby and a way to make a living has always been important to me, so I’m happy things turned out that way. This was possible thanks to #GodotEngine’s healthy funding situation, but sadly, not all projects are so fortunate on this point.
—@HugoLocurcio
Apr 29, 2021
@HugoLocurcio Anyway, that’s it for today! See you tomorrow for more details about #GodotEngine, how it became successful and what’s coming in the future.
—@HugoLocurcio
Apr 30, 2021
Please don’t miss the lastest @imakefoss interview with @annasor: https://t.co/3IzLVPbzWL about her origin story, adjusting to virtual conferences, and welcoming newcomers to FOSS.
~ @josp0001 https://t.co/ygfRAuU4nY
Apr 30, 2021
#GodotEngine came a long way since it was open sourced in early 2014. Here’s a recap of some of its major advancements and what’s next in the future.
—@HugoLocurcio https://t.co/cSxcwiXsPo
Apr 30, 2021
@HugoLocurcio #GodotEngine had its 1.0 release in December 2014. Compared to the first open source commits publicly available, this version featured things that we now take for granted. For example, it added a Tween node which is often used to create smooth animations via code.
—@HugoLocurcio
Apr 30, 2021
@HugoLocurcio However, #GodotEngine 1.0’s usability was still significantly behind what other engines provided at the time.
Back then, the community was small compared to today, which made it difficult for people to find answers to their questions if they ran into a problem.
—@HugoLocurcio
Apr 30, 2021
@HugoLocurcio #GodotEngine 1.1, released in May 2015, continued to add new features such as 2D lighting + normal mapping, allowing Godot to deliver very good visuals for 2D games at the time.
You can see it in action here: https://t.co/KJ1VSb7W8P
—@HugoLocurcio
Apr 30, 2021
@HugoLocurcio Once the ‘essential" feature work was done, the focus shifted to improving #GodotEngine’s usability.
In less than a year, the editor’s usability was improved by implementing a new dock system, multiple scene editing, improved scene instancing and live editing.
—@HugoLocurcio
Apr 30, 2021
@HugoLocurcio Live editing was one of those #GodotEngine features that had a nice ‘wow effect" to it.
It let users perform changes in the editor while the project is running, with those changes being reproduced in the running project in real-time.
—@HugoLocurcio
Apr 30, 2021
@HugoLocurcio This live editing feature even worked on an Android device connected over Wi-Fi: https://t.co/u3KghczDp9
This feature is also present in the latest Godot version. It now has a way to replicate the editor camera’s point of view in the project for easier debugging.
—@HugoLocurcio
Apr 30, 2021
@HugoLocurcio The focus on improving engine usability above anything else continued until #GodotEngine 2.1.
Godot 2.1 also brought support for editor internationalization, an editor plugin system and an asset library for everyone to use: https://t.co/Xc0IB8PsAH
—@HugoLocurcio
Apr 30, 2021
@HugoLocurcio Godot’s philosophy has always been centered around usability, letting the user get good results with little effort.
I think this has played a large role in its success. Still, this is a compromise that can sometimes be seen in terms of flexibility or performance.
—@HugoLocurcio
Apr 30, 2021
@HugoLocurcio Now that #GodotEngine’s usability was in a much better state, the next goal was to improve the 3D rendering features.
Godot 2.x, being based on OpenGL ES 2.0, lacked many features found in modern renderers such as SSAO, DoF, MSAA, real-time global illumination…
—@HugoLocurcio
Apr 30, 2021
@HugoLocurcio Back in mid-2017, I made a video to showcase #GodotEngine 3.0’s new features: https://t.co/Q1sByTM5vr
GLES3 allowed for lots of new things. The improvements were not limited to 3D rendering – many new things became possible in 2D as well, such as 2D soft shadows.
—@HugoLocurcio
Apr 30, 2021
@HugoLocurcio #GodotEngine 3.0 was released in January 2018, with hugely improved 3D rendering functionality.
Unfortunately, support for much of the mobile market of the era was lost in the process due to the OpenGL ES 2.0 renderer being removed.
—@HugoLocurcio
Apr 30, 2021
@HugoLocurcio The main goal for #GodotEngine 3.1 was to reimplement a new GLES2 renderer so that mobile developers could upgrade from Godot 2 to 3.
Godot 3.1 was also home to new usability improvements, such as a revamped animation editor and a more powerful animation system.
—@HugoLocurcio https://t.co/9vbJ7dCLTp
Apr 30, 2021
@HugoLocurcio #GodotEngine 3.2 continued on a similar trend as 3.1 did, with a focus on platform support.
People could now make networked multiplayer HTML5 games thanks to the new WebSockets+WebRTC support. Android also got a new build system to integrate plugins more easily.
—@HugoLocurcio
Apr 30, 2021
@HugoLocurcio From a maintainer’s perspective, the freshly released #GodotEngine 3.3 is where the fun begins :)
With Godot 4.0 being developed in parallel, many features were backported to Godot 3.x, including some rendering features such as FXAA and debanding.
—@HugoLocurcio
Apr 30, 2021
@HugoLocurcio In #GodotEngine 3.x, people sometimes run into low performance or have trouble with getting good visual quality.
4.0 is being developed with this in mind. Not only it will feature many performance optimizations, it’s also configured to look great out of the box.
—@HugoLocurcio https://t.co/JH0l01lkR7
Apr 30, 2021
@HugoLocurcio One example of this is #GodotEngine 4.0’s signed distance field global illumination (SDFGI).
With the press of a button, you get real-time global illumination that’s suitable for large open worlds. Very little configuration is needed.
—@HugoLocurcio
Apr 30, 2021
@HugoLocurcio On top of core refactoring and use of Vulkan, #GodotEngine 4.0 will provide better performance thanks to automatic LOD and occlusion culling for imported 3D models.
Performance tweaks were also moved to an unified location to make them easier for users to adjust.
—@HugoLocurcio
Apr 30, 2021
@HugoLocurcio Thanks for tuning in today! See you tomorrow for notes about my contributions to #GodotEngine, the development workflow, and more.
If you’re interested in seeing more of Godot’s history (which dates back as far as 2001), check out https://t.co/tVCRvp2TSr :)
—@HugoLocurcio
May 1, 2021
My contributions to #GodotEngine are quite diverse.
While my title is ‘Web and infrastructure developer", I’ve found myself contributing to editor usability, documentation, and even core/rendering features.
—@HugoLocurcio https://t.co/KWi1jyGSgP
May 1, 2021
@HugoLocurcio Most of my initial code contributions to #GodotEngine consisted in improving the editor UX in various ways.
I wanted to make Godot feel more consistent in terms of look and feel, while also trying to make things less cramped.
Before/after:
—@HugoLocurcio https://t.co/UCXbZqRSbW
May 1, 2021
@HugoLocurcio These UX changes are not necessarily difficult to make, but they need agreement from the core developers and community.
When added up, these changes can massively improve the #GodotEngine editor usability.
Before/after:
—@HugoLocurcio https://t.co/QTZXhD7fWG
May 1, 2021
@HugoLocurcio I’m an active contributor to #GodotEngine’s documentation, with over 350 commits to the documentation repository.
I also contribute to the class reference regularly – this is the documentation that covers the Godot API and is available offline in the editor.
—@HugoLocurcio https://t.co/SkOaocUFtZ
May 1, 2021
@HugoLocurcio I also built a website to track the #GodotEngine class reference completion percentage: https://t.co/7q4bNk9pWI
It started as an experiment using the Hugo static site generator, but it’s nice to see the documentation progress this way :)
—@HugoLocurcio
May 1, 2021
@HugoLocurcio While renderer engineering isn’t something I do by trade, I keep up-to-date with the latest rendering advancements.
For instance, I added an option for smoother soft shadows in Godot 3.3’s GLES2 renderer (something missing since Godot 2).
—@HugoLocurcio
May 1, 2021
@HugoLocurcio To continue on the editor work, one of the large undertakings I’m going through is redesigning the editor theme for #GodotEngine 4.0.
The Godot 3.x editor theme is doing its job fine, but we can make it look more modern by adopting the current design trends.
—@HugoLocurcio https://t.co/6YTE1r83M7
May 1, 2021
@HugoLocurcio As always, the editor theme remains customizable so you can easily adjust the fonts, the base colors, the contrast rate, border width and corner radius.
This way, you can make the #GodotEngine theme yours in a few minutes' time.
—@HugoLocurcio
May 1, 2021
@HugoLocurcio Another theming task I’ll look into in the future is to redesign the default project theme using vector elements.
The current project theme (pictured) dates back to the Godot 2 days. It’s old and uses a lot of bitmaps, making it scale poorly to high resolutions.
—@HugoLocurcio https://t.co/aYwn8KFBnd
May 1, 2021
@HugoLocurcio A quick note on the #GodotEngine development workflow. Unlike most C++ projects, the build system is SCons instead of CMake.
All third-party libraries are also included in the engine source tree, so you don’t have to scour for dependencies, especially on Windows.
—@HugoLocurcio https://t.co/bnTK7mThi2
May 1, 2021
@HugoLocurcio These development choices make it very easy to get started developing #GodotEngine, even if you’ve never compiled a C++ project before.
However, this is also a compromise in terms of build system performance, which impacts engine iteration times negatively.
—@HugoLocurcio
May 1, 2021
@HugoLocurcio There are plans to move #GodotEngine’s build system to Meson in the future.
Starting from a clean base, this would allow for faster build times and out-of-tree builds, allowing engine contributors to iterate faster.
—@HugoLocurcio https://t.co/rVAn55nCTn
May 1, 2021
@HugoLocurcio Thanks for tuning in today! See you tomorrow for more details about #GodotEngine’s design principles, where it particularly shines and the tradeoffs Godot needs to make.
—@HugoLocurcio
May 2, 2021
@Tantacrul @Linux4Everyone Congratulations, @Tantacrul!
Yes, you are very welcome to join @imakefoss.
May 2, 2021
Since its inception, #GodotEngine had to make many design choices and tradeoffs to get where it is today.
I’ll go through some of the most important design choices and explain why these were made.
—@HugoLocurcio https://t.co/4L7yCGdUXt
May 2, 2021
@HugoLocurcio To me, one of the most imporant aspects of software design is choosing what to expose publicly and what to keep private.
When adding a feature, ask yourself: ‘Should this be a configurable setting?", “Should this method/property be exposed to the scripting API?”
—@HugoLocurcio
May 2, 2021
@HugoLocurcio There’s always a cost to adding new settings in #GodotEngine, be it properties to nodes or editor settings.
This cost may be invisible at first, but its burden can quickly add up for testers, bug reporters and contributors alike.
—@HugoLocurcio https://t.co/A5j6MDBF04
May 2, 2021
@HugoLocurcio Adding more settings can also introduce choice paralysis, even among more advanced users.
In other words, having the choice between two (or more) options can make things more difficult than if the setting was not present in the first place.
—@HugoLocurcio
May 2, 2021
@HugoLocurcio To improve this, we are adding an advanced settings toggle to #GodotEngine 4.0.
This makes the Project Settings much less cluttered out of the box, but it requires careful thinking with regards to the list of settings to show by default.
—@HugoLocurcio https://t.co/nml96WcXF2
May 2, 2021
@HugoLocurcio A way to reduce the number of settings is to determine the best value to use in a context-specific way.
For example, Godot 4.0 no longer has a ‘framebuffer allocation" project setting. Instead, rendering buffers are allocated depending on current feature usage.
—@HugoLocurcio
May 2, 2021
@HugoLocurcio The rendering backend in #GodotEngine 4.0 went with similar design choices as the one in 3.x, but with a higher emphasis on performance/quality. While the higher visual fidelity of deferred rendering was appealing, forward rendering was chosen for its flexibility.
—@HugoLocurcio
May 2, 2021
@HugoLocurcio Forward rendering is proven technology. It’s been used since the 1990s, and is suited for realistic or stylized art direction, or a mix of both.
Unlike deferred rendering, it allows for using MSAA – a form of antialiasing that does not blur the final rendering.
—@HugoLocurcio https://t.co/FZliCF8l07
May 2, 2021
@HugoLocurcio Nonetheless, there’s a chance that future versions of #GodotEngine include a deferred renderer focused on photorealism.
Aiming for correctness, this renderer will have be less flexible due to the constraints of deferred rendering (and to improve performance).
—@HugoLocurcio
May 2, 2021
@HugoLocurcio On top of this rendering talk, there is another debate sparkling in the game engine community:
‘Should the engine come with advanced rendering features enabled by default, or disabled by default?"
—@HugoLocurcio
May 2, 2021
@HugoLocurcio In #GodotEngine, we mostly went with a disabled-by-default approach to improve performance – only pay for what you use.
While this approach works as intended, it also made usability suffer. Many people had a hard time getting 3D scenes to look good in the editor.
—@HugoLocurcio
May 2, 2021
@HugoLocurcio This visual quality problem was resolved by adding a new preview environment system to #GodotEngine 4.0.
The editor now has more rendering features enabled by default, but these are disabled once a proper environment setup is added to the project.
—@HugoLocurcio https://t.co/r1qNGgVWZ2
May 2, 2021
@HugoLocurcio To conclude, #GodotEngine’s development is very use case-driven. This means that solutions proposed must be developed to address real world problems.
You can read more about this in the documentation: https://t.co/35QWxwkXWS
—@HugoLocurcio
May 2, 2021
@HugoLocurcio Thanks for reading today’s thread! See you tomorrow for an overview of some features currently being developed for #GodotEngine 4.0 by its contributors. It’s much more than just rendering improvements, I promise :)
—@HugoLocurcio
May 3, 2021
This thread will showcase community contributions to #GodotEngine.
Not everything described in this thread has been merged yet, so I feel this is a good opportunity to show what you can expect in future versions (4.0 or later).
—@HugoLocurcio https://t.co/7l7lTR64qw
May 3, 2021
@HugoLocurcio Pictured above is the Godot Web editor, developed by @falessandrelli.
This is a full port of the #GodotEngine editor, working on both 2D and 3D projects. It’s great for education and preview purposes.
You can access it here: https://t.co/hFgOxBvSba
—@HugoLocurcio
May 3, 2021
@HugoLocurcio @falessandrelli #GodotEngine uses a 32-bit coordinate system. This is used to represent positions of game objects in the 2D/3D world.
While a 32-bit coordinate system is precise enough for most games, it falls short for large-scale games such as open world space simulations.
—@HugoLocurcio
May 3, 2021
@HugoLocurcio @falessandrelli To solve this, @aaronfranke7 is working on adding an option for using a 64-bit coordinate system.
This makes precision issues almost invisible. However, it has a performance cost. Since most games won’t need it, it’s disabled by default.
—@HugoLocurcio
May 3, 2021
@HugoLocurcio @falessandrelli @aaronfranke7 An often-requested feature in #GodotEngine’s scripting language (GDScript) was support for lambda functions.
These are now implemented in 4.0, and let you write methods that can be passed around as first-class variables (also new in 4.0).
—@HugoLocurcio
May 3, 2021
@HugoLocurcio @falessandrelli @aaronfranke7 To complement this new GDScript feature, @KoBeWi_ has been working on adding ‘map", “filter” and “reduce” functions to arrays.
This means you can now run operations on arrays “inline”, like you would do in Python or JavaScript.
—@HugoLocurcio https://t.co/XAq7OszMUb
May 3, 2021
@HugoLocurcio @falessandrelli @aaronfranke7 @KoBeWi_ As seen above, the editor has an Output panel. It’s where messages printed by the editor and running project appear.
This is an important panel to get ‘right". EricEzaM has been working on putting its usability on par with modern IDEs: https://t.co/hj61bCKVgC
—@HugoLocurcio
May 3, 2021
@HugoLocurcio @falessandrelli @aaronfranke7 @KoBeWi_ An often overlooked part of game engine development is frame timing stability.
Getting stable frame times is crucial to a good player experience. Thankfully, @lawnjelly has been working on improving #GodotEngine’s frame pacing: https://t.co/MQH2tbWx7N
—@HugoLocurcio
May 3, 2021
@HugoLocurcio @falessandrelli @aaronfranke7 @KoBeWi_ @lawnjelly Another issue related to frame timing is improving input responsiveness and reducing input lag where possible.
Thanks to their experience working with Android, @RandomPedroJ has improved input responsiveness on lower-end mobile devices: https://t.co/yXBdBtUbvV
—@HugoLocurcio
May 3, 2021
@HugoLocurcio @falessandrelli @aaronfranke7 @KoBeWi_ @lawnjelly @RandomPedroJ #GodotEngine supports 4 programming languages officially, and even more languages are supported thanks to community bindings.
You can read more about programming languages supported in Godot in this community-maintained resource: https://t.co/VPifL68HL7
—@HugoLocurcio
May 3, 2021
@HugoLocurcio @falessandrelli @aaronfranke7 @KoBeWi_ @lawnjelly @RandomPedroJ Supporting many programming languages in #GodotEngine doesn’t only have upsides, though.
While some people appreciate being able to use more third-party libraries, it also creates various interoperability issues and fragmentation.
—@HugoLocurcio
May 3, 2021
@HugoLocurcio @falessandrelli @aaronfranke7 @KoBeWi_ @lawnjelly @RandomPedroJ Even among the officially supported languages, there are still frictions in #GodotEngine when using GDScript and C# in the same project.
@willnationsdev is aiming to solve this with his implementation of cross-language resource exports: https://t.co/eQ2ehxQS49
—@HugoLocurcio
May 3, 2021
@HugoLocurcio @falessandrelli @aaronfranke7 @KoBeWi_ @lawnjelly @RandomPedroJ @willnationsdev My gratitude goes to all contributors who have submitted those new features for inclusion in #GodotEngine. You rock :)
Note that I focused on non-rendering features here, since I want to emphasize that Godot 4.0 isn’t just about improving the rendering backend.
—@HugoLocurcio
May 3, 2021
@HugoLocurcio @falessandrelli @aaronfranke7 @KoBeWi_ @lawnjelly @RandomPedroJ @willnationsdev Thanks for reading today’s thread!
See you tomorrow for a showcase of other open source projects I’ve been working on as of late.
—@HugoLocurcio
May 4, 2021
My open source contributions are more than just #GodotEngine.
On my spare time, I also work on many side projects and improve other open source projects.
—@HugoLocurcio https://t.co/qtSTFEgzTo
May 4, 2021
@HugoLocurcio When designing 3D rendering technology for a general-purpose engine, scalability is often important.
However, it’s difficult for engine developers to find large-scale test scenes for testing global illumination or lightmapping. The Sponza only gets you so far :)
—@HugoLocurcio https://t.co/sSxG26PfXZ
May 4, 2021
@HugoLocurcio For the purpose of testing 3D rendering algorithms, I made a repository of medium/large-scale map meshes exported from various open source games.
These can be used in any engine that can load OBJ files: https://t.co/4KQ7T04MpE
—@HugoLocurcio
May 4, 2021
@HugoLocurcio On top of being a game engine, #GodotEngine also powers many applications thanks to its versatile nature.
I’ll showcase a few of those below :)
—@HugoLocurcio
May 4, 2021
@HugoLocurcio #MaterialMaker is an open source procedural material editing tool made with #GodotEngine.
Over the last two years, it has gained a lot in terms of functionality and is becoming a worthwhile alternative to Substance Designer.
—@HugoLocurcio https://t.co/mQTKhb2ZaI
May 4, 2021
@HugoLocurcio In #MaterialMaker, I contributed many usability improvements.
I also made many tweaks to the 3D preview to further improve its visual quality. Supersampling and tesselation really help a lot here :)
Before/after comparison: https://t.co/OFX9SCoU8e
—@HugoLocurcio
May 4, 2021
@HugoLocurcio #Pixelorama is an open source 2D pixel art editor, also made with #GodotEngine.
I did some tweaks here and there to improve user experience. Nothing major, but sometimes, the last 20% of a project are the hardest to get ‘right".
—@HugoLocurcio
May 4, 2021
@HugoLocurcio As an open source developer, software distribution is another of these issues that needs to be carefully thought about.
I like automating things as much as I reasonably can, so I’ve been using utilities like #Flatpak and Scoop increasingly.
—@HugoLocurcio
May 4, 2021
@HugoLocurcio Distributing applications that run on every Linux distribution has historically been difficult. #Flatpak has done great strides to improve this.
I maintain Flatpak manifests for #GodotEngine, #Pixelorama, #MaterialMaker and #SHADERed.
—@HugoLocurcio
May 4, 2021
@HugoLocurcio I also maintain a Scoop bucket dedicated to open source and freeware games: https://t.co/v2fuO2Fvkd
Scoop provides an experience similar to apt/dnf/pacman, but on Windows. When using a dual boot setup, it fills in a major missing gap compared to Linux :)
—@HugoLocurcio
May 4, 2021
@HugoLocurcio I toy around with AI-based image upscaling methods such as ESRGAN from time to time.
Nowadays, AI upscaling became quite popular for upscaling old game textures, so I tried it out on Quake 2 with great results: https://t.co/iPzsRwS9fK
Before/after:
—@HugoLocurcio https://t.co/BbENgF9V4V
May 4, 2021
@HugoLocurcio Thanks for tuning in today! This is the last thread of mine for this week. I hope you enjoyed reading these threads :)
Thanks again to IMakeFOSS for inviting me to curate this account!
—@HugoLocurcio