[mod] Minetest Systemd (API) [minetest_systemd]
- Piezo_
- Member
- Posts: 219
- Joined: Fri Jul 20, 2018 21:36
- GitHub: is proprietary I use NotABug
- Location: (x,y,z)
[mod] Minetest Systemd (API) [minetest_systemd]
Hello!
I know I usually tend to have a bit more humor when I release a mod, but this isn't so much of a tangible feature-packed mod as it is an attempt to create a tool to make modding easier for myself and others in the future.
------------------------------------
Questions you may have:
-------------------------------------
WTF is this?
I'm glad you asked (even though you didn't, but someone always does). This will eventually be a collection of essential tools, centralized (yes, I'm actually doing this. No, I'm not sorry) into one mod, as well as a framework for dynamically reloading changes in the internal code of mods that support that. Features will also be added as solutions to any problems that are persistent in multiple mods, and frequent compatibility issues.
some_mod already does minetestd.some_functionality better!
Tell me, and I'll remove my duplicate code, but only if some_mod isn't obscure and/or terribly written, and I have reason to believe my version is rendered pointless for all practical uses by its existence.
What kind of stuff will you add to this?
Any kind of tools that would be useful to people trying to assemble a modpack, subgame, or server that they want to be able to update in real-time.
Why GPLv3+?
Because it does make a difference. Allowing proprietary software to take advantage of your contribution to libre software is almost as bad as making proprietary software yourself, in this society.
--------------------------------------------------------------
Features
--------------------------------------------------------------
For a list of features, see the Readme file in the Notabug.org repo.
After the forums went down and had to be rolled back, all of the update changelogs were lost (fortunately, all of my mods are linked, not attached, so the updates themselves remain)
Download
License: GPLv3+
I know I usually tend to have a bit more humor when I release a mod, but this isn't so much of a tangible feature-packed mod as it is an attempt to create a tool to make modding easier for myself and others in the future.
------------------------------------
Questions you may have:
-------------------------------------
WTF is this?
I'm glad you asked (even though you didn't, but someone always does). This will eventually be a collection of essential tools, centralized (yes, I'm actually doing this. No, I'm not sorry) into one mod, as well as a framework for dynamically reloading changes in the internal code of mods that support that. Features will also be added as solutions to any problems that are persistent in multiple mods, and frequent compatibility issues.
some_mod already does minetestd.some_functionality better!
Tell me, and I'll remove my duplicate code, but only if some_mod isn't obscure and/or terribly written, and I have reason to believe my version is rendered pointless for all practical uses by its existence.
What kind of stuff will you add to this?
Any kind of tools that would be useful to people trying to assemble a modpack, subgame, or server that they want to be able to update in real-time.
Why GPLv3+?
Because it does make a difference. Allowing proprietary software to take advantage of your contribution to libre software is almost as bad as making proprietary software yourself, in this society.
--------------------------------------------------------------
Features
--------------------------------------------------------------
For a list of features, see the Readme file in the Notabug.org repo.
After the forums went down and had to be rolled back, all of the update changelogs were lost (fortunately, all of my mods are linked, not attached, so the updates themselves remain)
Download
License: GPLv3+
Last edited by Piezo_ on Sat May 04, 2019 06:03, edited 16 times in total.
while (true) { suffer(); }
Re: [mod] Minetest Systemd (VERY EARLY WIP) [minetest_system
Systemd for Minetest? Alright! Is it going to be badly programmed and prone to obscure errors, too? :D I can't wait for the massive ~1% performance increase (margin of error: 1%) we'll get from converting Minetest's logs into a compressed binary file that you have to analyze with special tools!
Lead dev of Exile, git repo: https://codeberg.org/Mantar/Exile
- Piezo_
- Member
- Posts: 219
- Joined: Fri Jul 20, 2018 21:36
- GitHub: is proprietary I use NotABug
- Location: (x,y,z)
Re: [mod] Minetest Systemd (VERY EARLY WIP) [minetest_system
No, it's just going to be that one annoyingly centralized core tool that tons of mods start to depend on, and may be somewhat bloated.Mantar wrote:Systemd for Minetest? Alright! Is it going to be badly programmed and prone to obscure errors, too? :D I can't wait for the massive ~1% performance increase (margin of error: 1%) we'll get from converting Minetest's logs into a compressed binary file that you have to analyze with special tools!
while (true) { suffer(); }
Re: [mod] Minetest Systemd (VERY EARLY WIP) [minetest_system
That's gonna make Poettering feel bad, like you're making fun of him.No
Hey, maybe it'll make him rage quit and then when he's gone, other devs can fix the worst of systemd's faults, like what happened when he left pulseaudio? That's brilliant! I fully support this mod, then.
Lead dev of Exile, git repo: https://codeberg.org/Mantar/Exile
- Glory!
- Member
- Posts: 92
- Joined: Thu Apr 30, 2015 17:45
- GitHub: Glory7000
- In-game: Glory7000
- Location: Kernel Debugging Land <3
Re: [mod] Minetest Systemd (VERY EARLY WIP) [minetest_system
inb4 MTG includes minetest_systemd sooner than the blink of an eye.
/me shrivers in disgust and fear.
Also, be sure to mount /var and /lib read-write, maybe even /sys/efivars! Someone somewhere might need to restart the computer or install a library while the game is running. ;)
/me shrivers in disgust and fear.
Also, be sure to mount /var and /lib read-write, maybe even /sys/efivars! Someone somewhere might need to restart the computer or install a library while the game is running. ;)
Behold the Razgriz, its wings of black sheath. :: My skin A competitor that unfortunately needs attention to stay afloat.
-
- Member
- Posts: 818
- Joined: Tue Apr 14, 2015 01:59
- GitHub: raymoo
- IRC: Hijiri
- In-game: Raymoo + Clownpiece
Re: [mod] Minetest Systemd (VERY EARLY WIP) [minetest_system
I think another criterion should be added: the functionality should be something that doesn't belong in the engine.
Every time a mod API is left undocumented, a koala dies.
- Piezo_
- Member
- Posts: 219
- Joined: Fri Jul 20, 2018 21:36
- GitHub: is proprietary I use NotABug
- Location: (x,y,z)
Re: [mod] Minetest Systemd (VERY EARLY WIP) [minetest_system
Jokes aside, I am actually going to add a way for mods to "reload" themselves mid-game, and implement a command for server admins to dynamically reload, start and stop individual mods as services (obviously, things like registered nodes and such will not be covered by the scope of this), meaning that some internal code functionality of mods could possibly be changed without having to restart a server.Glory! wrote:inb4 MTG includes minetest_systemd sooner than the blink of an eye.
/me shrivers in disgust and fear.
Also, be sure to mount /var and /lib read-write, maybe even /sys/efivars! Someone somewhere might need to restart the computer or install a library while the game is running. ;)
while (true) { suffer(); }
Re: [mod] Minetest Systemd (VERY EARLY WIP) [minetest_system
You probably should choose the AGPL-3.0-or-later instead of the GPL-3.0. This prevents people from taking your code, modifying it and deploying the modifications a server without being required to give the changes they made under the AGPL-3.0-or-later license back to users of that server. If you stick with GPL-3.0, you can't enforce this.
But, honestly, Minetest Game already mostly is this. If you're planning to make something that kind of functions in the same way (never a real game, always needed) then I'd myself pick a better name. Not because I don't appreciate the joke (I get it, I contributed code to the systemd project myself) but naming OSS projects "ironically" has bad side effects (for instance, you may actually have people that are mistaken about what it does or make derogatory comments, and attract trolls. Before you know it someone may just make a suckless mod that is a fork of Minetest Game without any changes.)
Personally, I'd really wish people stopped making "collections" of support mods. I started minetest-mods so that they can be maintained as individual components and not necessarily be all interdependent, which is the whole problem of Minetest Game. You're effectively choosing to design this with the exact same design mistake at the core. I'd strongly urge you to consider instead just making individual support mods and maintain them and post them to the ContentDB, but hey, maybe I'm wrong here.
But, honestly, Minetest Game already mostly is this. If you're planning to make something that kind of functions in the same way (never a real game, always needed) then I'd myself pick a better name. Not because I don't appreciate the joke (I get it, I contributed code to the systemd project myself) but naming OSS projects "ironically" has bad side effects (for instance, you may actually have people that are mistaken about what it does or make derogatory comments, and attract trolls. Before you know it someone may just make a suckless mod that is a fork of Minetest Game without any changes.)
Personally, I'd really wish people stopped making "collections" of support mods. I started minetest-mods so that they can be maintained as individual components and not necessarily be all interdependent, which is the whole problem of Minetest Game. You're effectively choosing to design this with the exact same design mistake at the core. I'd strongly urge you to consider instead just making individual support mods and maintain them and post them to the ContentDB, but hey, maybe I'm wrong here.
- Piezo_
- Member
- Posts: 219
- Joined: Fri Jul 20, 2018 21:36
- GitHub: is proprietary I use NotABug
- Location: (x,y,z)
Re: [mod] Minetest Systemd (VERY EARLY WIP) [minetest_system
This is concerning, but since I've already published this as GPLv3+, I can't add the AGPL's restrictions...sofar wrote:You probably should choose the AGPL-3.0-or-later instead of the GPL-3.0. This prevents people from taking your code, modifying it and deploying the modifications a server without being required to give the changes they made under the AGPL-3.0-or-later license back to users of that server. If you stick with GPL-3.0, you can't enforce this.
The name is only semi-ironic, as it will eventually provide start/stop/reloadable "services" that allow server owners and mod developers to change parts of their mods' code without having to restart their server, similar to systemd's "services". I may well change the name, though (minetestd used to be the name, as you could probably tell from the API, but I felt it was too similar to just straight up "minetest" that it would cause confusion)sofar wrote:But, honestly, Minetest Game already mostly is this. If you're planning to make something that kind of functions in the same way (never a real game, always needed) then I'd myself pick a better name. Not because I don't appreciate the joke (I get it, I contributed code to the systemd project myself) but naming OSS projects "ironically" has bad side effects (for instance, you may actually have people ththe codeat are mistaken about what it does or make derogatory comments, and attract trolls. Before you know it someone may just make a suckless mod that is a fork of Minetest Game without any changes.)
My philosophy on this is that all of these features being present together means that mod developers will have access to useful tools that are already designed to be 100% compatible with each other, with no redundancy, and without having to hunt them and all of their dependencies down one-by-one.sofar wrote:Personally, I'd really wish people stopped making "collections" of support mods. I started minetest-mods so that they can be maintained as individual components and not necessarily be all interdependent, which is the whole problem of Minetest Game. You're effectively choosing to design this with the exact same design mistake at the core. I'd strongly urge you to consider instead just making individual support mods and maintain them and post them to the ContentDB, but hey, maybe I'm wrong here.
while (true) { suffer(); }
Re: [mod] Minetest Systemd (VERY EARLY WIP) [minetest_system
Nonsense. You can relicense it as long as either:Piezo_ wrote:This is concerning, but since I've already published this as GPLv3+, I can't add the AGPL's restrictions...sofar wrote:You probably should choose the AGPL-3.0-or-later instead of the GPL-3.0. This prevents people from taking your code, modifying it and deploying the modifications a server without being required to give the changes they made under the AGPL-3.0-or-later license back to users of that server. If you stick with GPL-3.0, you can't enforce this.
1. You wrote all the code yourself
or
2. You asked all the people who contributed code if they agree on relicensing, and they said yes (in writing, preferably).
Re: [mod] Minetest Systemd (VERY EARLY WIP) [minetest_system
This is exactly the type of stuff you shouldn't group with other mods.Piezo_ wrote: The name is only semi-ironic, as it will eventually provide start/stop/reloadable "services" that allow server owners and mod developers to change parts of their mods' code without having to restart their server, similar to systemd's "services". I may well change the name, though (minetestd used to be the name, as you could probably tell from the API, but I felt it was too similar to just straight up "minetest" that it would cause confusion)
(in systemd's case, things are vastly different, and the argument makes little sense, since you can't really have a normal working Linux system that is actually functional unless you do a bunch of other things too, but let's deviate too much from the topic ;))
Re: [mod] Minetest Systemd (VERY EARLY WIP) [minetest_system
You're not making a game. You're making a bunch of support modules. Game developers want to shop components and leave out stuff they do not understand. And someone will want to modify one part to do something different and then they are forced to fork 20 mods at once to modify one.Piezo_ wrote:My philosophy on this is that all of these features being present together means that mod developers will have access to useful tools that are already designed to be 100% compatible with each other, with no redundancy, and without having to hunt them and all of their dependencies down one-by-one.
- Piezo_
- Member
- Posts: 219
- Joined: Fri Jul 20, 2018 21:36
- GitHub: is proprietary I use NotABug
- Location: (x,y,z)
Re: [mod] Minetest Systemd (VERY EARLY WIP) [minetest_system
If all this ultimately becomes is an API that's only used by my mods, and a few daring server admins or modpack-makers, that's fine by me, and it's what I was expecting, honestly. If it does become widespread to the point where people want it to change, I'll listen, and if I can't meet demands, I'll probably hand over development to someone who can.
And maybe I'm making a mistake by proposing a systemd-like API, but honestly, I'm just making it as a multi-tool to make mod development and mod-conflict-resolution easier for myself, on my server.
And maybe I'm making a mistake by proposing a systemd-like API, but honestly, I'm just making it as a multi-tool to make mod development and mod-conflict-resolution easier for myself, on my server.
while (true) { suffer(); }
Re: [mod] Minetest Systemd (VERY EARLY WIP) [minetest_system
Yes, please feel free to experiment and do what you feel is best yourself. It's not like you couldn't split up the code later, and developing features in tandem can accelerate things significantly. I'm certainly interesting in what you intend to do about reloading.Piezo_ wrote:And maybe I'm making a mistake by proposing a systemd-like API, but honestly, I'm just making it as a multi-tool to make mod development and mod-conflict-resolution easier for myself.
- GreenXenith
- Member
- Posts: 1356
- Joined: Wed Oct 28, 2015 01:26
- GitHub: GreenXenith
- Location: UTC-8:00
- Contact:
Re: [mod] Minetest Systemd (VERY EARLY WIP) [minetest_system
I'm personally a bit scared. There are numerous issues, even if it is possible to get working. Mods depend on loading behaviour, it's not something that can really be changed without breaking a ton of things.sofar wrote:I'm certainly interesting in what you intend to do about reloading.
Not saying I don't want to see this, it's the main thing I'm interested in about this mod so far :P but I do think you will encounter a lot of issues.
YouTube | Mods | Patreon | Minetest Discord @greenxenith
You should not be able to read this message.
You should not be able to read this message.
- Piezo_
- Member
- Posts: 219
- Joined: Fri Jul 20, 2018 21:36
- GitHub: is proprietary I use NotABug
- Location: (x,y,z)
Re: [mod] Minetest Systemd (VERY EARLY WIP) [minetest_system
Be curious no more, for reloading has just been implemented!sofar wrote:Yes, please feel free to experiment and do what you feel is best yourself. It's not like you couldn't split up the code later, and developing features in tandem can accelerate things significantly. I'm certainly interesting in what you intend to do about reloading.Piezo_ wrote:And maybe I'm making a mistake by proposing a systemd-like API, but honestly, I'm just making it as a multi-tool to make mod development and mod-conflict-resolution easier for myself.
PlayerCTL can be reloaded!
minetestd.math can be reloaded!
minetestd itself can be reloaded!
EVERYTHING CAN BE RELOADED! AHAHAHAHA!!!
Actually, in order to be reloadable, a mod has to register a service, and make some code structure changes to support reloading, as you can see, and you won't be dynamically registering and unregistering nodes, or anything like that. However, the current implementation has been tested to the best of my ability to mess things up (which is pretty high), and it holds strong!
Nobody will blame you if you don't make your mod reloadable, though. Honestly, I wouldn't turn a mod into a service unless there was an advantage to doing so. (In other words, don't expect Mese Portals to suddenly be registering a service).
while (true) { suffer(); }
- rubenwardy
- Moderator
- Posts: 6978
- Joined: Tue Jun 12, 2012 18:11
- GitHub: rubenwardy
- IRC: rubenwardy
- In-game: rubenwardy
- Location: Bristol, United Kingdom
- Contact:
Re: [mod] Minetest Systemd (API) [minetest_systemd]
According to the mod code, the name for this mod should be minetestd not minetest_systemd
- Linuxdirk
- Member
- Posts: 3219
- Joined: Wed Sep 17, 2014 11:21
- In-game: Linuxdirk
- Location: Germany
- Contact:
Re: [mod] Minetest Systemd (VERY EARLY WIP) [minetest_system
Mantar wrote:Systemd for Minetest? Alright! Is it going to be badly programmed and prone to obscure errors, too? :D
Re: [mod] Minetest Systemd (VERY EARLY WIP) [minetest_system
Alright, seriously, can we keep the trolling to the offtopic section perhaps?Linuxdirk wrote:https://i.imgur.com/DgOiDXo.png
- Piezo_
- Member
- Posts: 219
- Joined: Fri Jul 20, 2018 21:36
- GitHub: is proprietary I use NotABug
- Location: (x,y,z)
Re: [mod] Minetest Systemd (API) [minetest_systemd]
I felt the name was too similar to minetest itself, so I changed it before I uploaded. Also, I'd already written the internal code, and I didn't want to make it longer, because people might have to type it out a lot.rubenwardy wrote:According to the mod code, the name for this mod should be minetestd not minetest_systemd
On a somewhat unrelated note, I've noticed from experience that breaking up a mod's init.lua to support reloading often leads to confusing code. In the future, I'm going to recommend people keep their init.lua separate (although you'd probably still want to call minetestd.register_service in init.lua), and use (modpath)/services/(service).lua to hold the code used/reloaded by the service(s) you register.
Last edited by Piezo_ on Thu Dec 06, 2018 21:04, edited 2 times in total.
while (true) { suffer(); }
- rubenwardy
- Moderator
- Posts: 6978
- Joined: Tue Jun 12, 2012 18:11
- GitHub: rubenwardy
- IRC: rubenwardy
- In-game: rubenwardy
- Location: Bristol, United Kingdom
- Contact:
Re: [mod] Minetest Systemd (API) [minetest_systemd]
You shouldn't write to any globals which don't match your mod name. So you should either:
- Rename the table to minetest_systemd
- Change modname to minetestd. You can then change the topic title to this:
Code: Select all
[Mod] Minetest Systemd (API) [minetestd]
Re: [mod] Minetest Systemd (API) [minetest_systemd]
What trolling? Linuxdirk only posted a silly image, I seriously doubt anyone's going to get mad about it. (Unless Lennart Poettering hangs out here) At worst, it's off topic.
Lead dev of Exile, git repo: https://codeberg.org/Mantar/Exile
- Piezo_
- Member
- Posts: 219
- Joined: Fri Jul 20, 2018 21:36
- GitHub: is proprietary I use NotABug
- Location: (x,y,z)
Re: [mod] Minetest Systemd (API) [minetest_systemd]
I might do the second, but there are several of my mods (and modified versions of oxygenerators and witchcraft) on my server (which isn't public yet) that I'd have to update, so it would take a while. Then, I would push the changes to all of my own mods all at once.rubenwardy wrote:You shouldn't write to any globals which don't match your mod name. So you should either:
This is mostly my OCD for consistency getting the better of me. I'd still heavily recommend it for consistency reasons :)
- Rename the table to minetest_systemd
- Change modname to minetestd. You can then change the topic title to this:
Code: Select all
[Mod] Minetest Systemd (API) [minetestd]
I'm still concerned about the name minetestd being too close to minetest, though. If you think that won't be an issue, I'll go ahead and rename it to minetestd.
EDIT: Since it seems to be impossible to change the name of a repository on notabug.org, I am even less willing to rename the project, as it's too much hassle.
while (true) { suffer(); }
- Glory!
- Member
- Posts: 92
- Joined: Thu Apr 30, 2015 17:45
- GitHub: Glory7000
- In-game: Glory7000
- Location: Kernel Debugging Land <3
Re: [mod] Minetest Systemd (API) [minetest_systemd]
You can manually sift through the code and CTRL+R it. It takes a bit of time but it does get the job done. Also, please, make this a modpack and not one giant integated bloat monolithic mod. Many of the proposed features can be broken into smaller mods, like mathf and collisionf.
It's banter regarding something only related by name so it's still quite offtopic in my opinion.Mantar wrote:What trolling? Linuxdirk only posted a silly image, I seriously doubt anyone's going to get mad about it. (Unless Lennart Poettering hangs out here) At worst, it's off topic.
Behold the Razgriz, its wings of black sheath. :: My skin A competitor that unfortunately needs attention to stay afloat.
- Piezo_
- Member
- Posts: 219
- Joined: Fri Jul 20, 2018 21:36
- GitHub: is proprietary I use NotABug
- Location: (x,y,z)
Re: [mod] Minetest Systemd (API) [minetest_systemd]
Update:
- Fixed data breaking after a reload with playerctl
- Added tool in "extras" to quickly parse chatcommand args
- core is now an active service. Disabling it quietly prevents all active services' global steps from being executed.
while (true) { suffer(); }
Who is online
Users browsing this forum: Semrush [Bot] and 15 guests