This is targeted toward "securing your game’s legacy", but it seems to be missing a crucial part of some games: servers.
When games have a required online component, servers shutting down are the most likely reason the game becomes unplayable, more than the client not working on current platforms.
So another option that could be added to the list would be to make the server free software (or at least share its binaries) before the client's assets or the client itself. This can also boost the community if they can host their own servers with custom mods (eg. Minecraft)
I write and maintain a GPLv3 multiplayer game for Android to satisfy a creative itch. While writing the game, sustainability of the server component is top of my mind. I'd hate for the game to stop working for others down the line because I lose interest or am otherwise no longer able to tend to it.
For those interested, I've documented the process I adopted to try to increase the bus factor beyond one [0]. I want people who download the game and open it to be able to find a public server instantly from the main menu, even if I am unable to maintain the main server myself. This is done via the game requesting a manifest containing public servers from a GitHub repo, which accepts PRs from those willing to maintain their own servers. Although I am the only one able to accept those PRs right now, it would be silly not to be liberal in onboarding others who show an interest in maintaining the list. That way the game lives on beyond just me.
I also make sure to offer local multiplayer, and in other games I've built I which don't need realtime multiplayer, I try to offer "Play against others by sending an SMS invite" or other novel approaches that don't even need a server.
It is a fun space to work on and try to come up with novel solutions to ensure games continue working into the future.
It's tough. In my experience in the games industry, a big reason source wasn't released historically was not antagonism towards the players or belief in the underlying IP. It was fear: someone in "China" would start running your game for "their" audience, and make a bundle there while you rot, totally unknown to you.
I'm not sure how often that actually happened. The only games with parallel universe East Asian audiences belonged to #1 genres like MOBAs. While there was a belief that you could be making the next MOBA, hardly anyone was making realtime multiplayer games at all, so it was extremely unlikely.
It was a misplaced reaction to Ketchapp, the real antagonist. They would rapidly clone and blitz-market games. Indie mobile developers spent a year or more discovering and refining an original, fun mechanic, only to see this well capitalized actor seize their audience by giving the mechanic away for free. From 2014 to 2018, in my opinion, indie mobile developers transitioned to more atmospheric fare, and iOS and Android nowadays are a marketing-and-sizing tool for your inevitable Nintendo Switch audience.
Which brings us back to: what is there exactly to protect? Ketchapp didn't need the source code to clone those games. Nobody needs the source. If you make a PC game and have an audience, it will show up in Steam charts, you can't really keep that secret. And if you don't have an audience, you have seriously nothing to worry about. Since every game usually starts at zero, why protect the source?
My card game Spellsource has been open source for a long time (https://github.com/hiddenswitch/Spellsource) and my colleague and I are in the process of rebooting it. This game is community authored, players write the cards, so it makes mechanical sense to be open source. On the flip side, for the narrative & atmospheric single player experiences indie developers are authoring, it is hard to define what they have to gain.
You could also make public servers do peer-to-peer discovery! Then if your server ever goes down, it would be enough for a single host to post the address of their server in the issues
I've had the idea for a while now to use torrent trackers as a server masterlist. Torrent trackers are already basically a way for computers to insert their IP into a list, so if you make up some fake torrent "announce hash" (I think that's the right name), then hardcode a few of the most popular open trackers, you can use the "peer list" from the tracker as a list of servers. Just haven't had a use case for it (yet).
> if your game has a mandatory online component based on your own servers, then making it free software doesn’t make nearly as much sense, especially if you ultimately decide to shut those servers off
> When games have a required online component, servers shutting down are the most likely reason the game becomes unplayable, more than the client not working on current platforms.
This problem is why I don't use software -- including games -- that requires access to a server somewhere.
> The Quake engine was also released under the GPL, and went on to be highly influential, serving as the basis for dozens of games, including time-honored favorites such as the Half Life series. Large swaths of the gaming canon were made possible thanks to the generous contributions of free software game publishers.
This seems misleading. Half-Life was released in 1998, but the Quake engine's source code wasn't released under the GPL until 1999, so presumably Valve had a non-Free Software license to use the code.
I was going to say "it depends on how you parse the sentence", but after re-reading the second sentence: yes, it's just plain wrong. Half-Life and Valve would have happened regardless of Quake's source code being released.
A friend explained to me that the real benefit of foss is the community building huge things together, faster and better than any individual. So, you don’t make your game foss, but rather, you build a set of foss tools for everyone to benefit from, and the community eventually begins to contribute back, and you end up with a huge machine that does really cool things. Everybody then uses these tools to make amazing things, yourself included. It’s win win. He’s had some cool experience with this stuff, mostly outside of gaming.
But pure source code dumps, besides being valuable to students, usually isn’t that worthwhile. It’s a lot less win-win as well
ARTS (Dota, LoL) to battle royale (PUBG, Fortnite, Apex), Tactical shooters (CS), team/hero shooters (TF, OW) and more…
All of these genres came from making modding accessible and are some of the most successful genres to date.
The new trend however is to close games down, DRM, “life service”, fewer possibilities and very strict IP implications on derivative work (we own everything you create etc.)
Free software might be an appropriate answer to this.
> The new trend however is to close games down, DRM, “life service”, fewer possibilities and very strict IP implications on derivative work (we own everything you create etc.)
I don't know of any popular game that didn't have DRM and didn't have very strict IP implications on fan content (say, after the early 90s maybe?). It's not like the teams behind the original DOTA or CS or TF ever made money selling those, and would have likely been blocked even if they tried.
It's true though that live service games are quite antithetical to modding because of their need to control player progression and sell it.
Still, I would say the divide between games which supported modding and games that didn't has always existed, with much fewer games in the first category, and there are still huge games coming out today that do. It's even become possible to create mods for console games, so it's not all doom and gloom.
Sure, but GoG is a relatively new player and an exception in the market. Not to mention the vast majority of those games have had DRM removed by GoG, they originally shipped with it - including Cyberpunk 2077 and the Witcher games where this was done to prevent pre-release leaks.
Games much, much older than GoG used to have various ways of doing DRM, though to be fair some were laughably easy to bypass (codes printed in the manual and such).
>I don't know of any popular game that didn't have DRM and didn't have very strict IP implications on fan content (say, after the early 90s maybe?). It's not like the teams behind the original DOTA or CS or TF ever made money selling those, and would have likely been blocked even if they tried.
Warcraft 3 (2002, 2003) was infamously lax on IP, leading to e.g. several big DotA clones that employed the modders (Dota2 for Icefrog, LoL for Guinsoo) and legal disputes on who owned which properties [1][2]. Blizzard revised their EULA in 2020 to prevent similar cases. [3]
League of Legends never stepped on Warcraft trademarks as far as I know, even though they were a clone of DOTA. Valve and others battled it out legally with Blizzard over the DOTA name and eventually won, but this was definitely not Blizzard's intention - and of course they didn't use any Blizzard-created art in the final game.
Note that I don't think anything in the W3: reforged terms of service would prevent a new game being created based on a W3 mod, it would just prevent it from using the same name and art as the mod. This is exactly what happened to all other successful mods, with Dota2 being pretty much the sole exception.
Also, Riot mostly proved that you don't actually need the artwork or names to be massively successful - you just need to recognize a good idea and be the first to market with a polished implementation of it.
> Valve and others battled it out legally with Blizzard over the DOTA name and eventually won, but this was definitely not Blizzard's intention - and of course they didn't use any Blizzard-created art in the final game.
Had Blizzard owned DotA IP, I believe Valve would've had to steer much further away from the map, character and item design. IP extends beyond just art and naming, see e.g. Tetris vs Mino [1]. The case wouldn't have been a guaranteed win for Blizzard, but the early releases of Dota 2 were really closely copied from late releases of DotA, so the argument is there.
> Note that I don't think anything in the W3: reforged terms of service would prevent a new game being created based on a W3 mod, it would just prevent it from using the same name and art as the mod. This is exactly what happened to all other successful mods, with Dota2 being pretty much the sole exception.
Keyword being successful. Many maps have standalone ports that kept their predecessor's name [2][3][4][5], but only Dota 2 is really successful. And again, I believe these wouldn't exist or would've made large changes if Blizzard owned the IP of Warcraft 3 mods.
Given that League of Legends, Dota 2, and Blizzard's own Heroes of the Storm all share virtually the same map today, and are not engaged in any IP battles over it, I don't see any reason to believe Blizzard owning the original IP of the DOTA mod would have made any difference in terms of blocking the map design from being reused in other games. If anyone could have owned this map design, either Riot or Valve would have already sought to block the others from using it.
That's really stretching the meaning of "virtually the same map". LoL and Dota 2 maps look similar on the minimap (HotS not so much), but they're drastically different when you start looking at points of interest and juke paths. In contrast, Dota 2 used to have almost exactly the same map as DotA (differences being shops and hero selection, which were changed from ingame units to actual UI menus).
Not to mention that Dota 2 also copied the exact skillsets of heroes and items. Not just likeness, but even most silly bugs that were due to the Warcraft engine.
Edit: Anyways, this is getting sidetracked. My point is that Warcraft 3 was lax with intellectual property for the longest time, and mods like DotA most certainly leveraged that.
Sure, and I am contesting that point by showing that League of legends succeeded in creating a game based on DOTA that didn't need any of the DOTA-related IP. So, while it is true that the DOTA team / Valve from Blizzard's laxness at the time of W3, their succes didn't hinge on it, as Riot proved.
Note that they're all multiplayer competitive games. That's the easiest kind of game to make and where the creativity part matters least, with the exception of fine tuning the game mechanics.
I’d you think they’re easy to make, I invite you to make one. Multiplayer is hard, and you have to do a really good job in your execution to make any money
The devil is in the details with these games. They need to balance a complex system of interactions, features, economies. They have to adhere to "easy to learn, hard to master", to remain accessible and reward active players at the same time. They are also genres with a ton of competition and only the most engaging and well designed come out on top.
The video "The History of Cataclysm: Dark Days Ahead" (35 minutes) desmonstrates how an open source community can make great games! In this case, a post-apocalyptic roguelike game.
For an, exoctic, 11 minute review of the game watch "Cataclysm: Dark Days Ahead Review | Don't Drink Toilet Water" by SsethTzeentach https://www.youtube.com/watch?v=Cyoj4-niEPc
Sseth turned me onto this game, as he has turned me onto many. His content isn't for everybody, but for it's target demographic, it is top of the line. I look forward to checking out the first video link.
>A friend explained to me that the real benefit of foss is the community building huge things together, faster and better than any individual.
Any example of a highly successful video game developed from start as open source by the community as opposed to a company releasing their source code for free after launching a game?
The only ones I'm familiar with that people actually play for reasons other than the novelty/political statement of playing a FOSS game are ASCII roguelikes (most notably Nethack) and a menagerie of remakes of commercial games that have now surpassed the originals in features, graphics, and system compatibility (OpenTTD, OpenXCOM, etc.)
Not sure what qualifies as 'highly successful', 'from the start', etc. but Mindustry[0] is GPL, is actively updated, accepts and includes contributions from third parties and is available commercially.
I hate when people bring up VVVVVV as a counter-argument to "But my code is embarrassing!". Saying it's an example of "truly awful code" when it's beautiful and well-structured compared to my stuff just makes me confident that I will never get over the embarrassment.
> I'm 100% certain your code is better than a switch statement with over 4000 cases.
Then there's cases like that Yandere Simulator game, the source code of which got released/leaked and apparently it was so bad that people were making videos taking it apart, but also possibly because they disliked how the developer was leading the project: https://www.youtube.com/results?search_query=yandere+simulat...
But also apparently even the Oracle database source code was pretty grim, this HN post and its top comment still bounces around my mind sometime: https://news.ycombinator.com/item?id=18442637
I wonder what other codebases exist, where the code is inspirationally bad, as in, to the point of making most folks feel better about whatever they're writing and to dispel the illusion of code always needing to be perfect.
All that's missing is a site that shows examples of a bad code and how to make the code better besides that, maybe with discussions and different suggestions, based on what people believe in.
Yandere Simulator's case was unique. You're right that people were angry at the guy in general, and he was also quite the internet clown. But it was the first time I've seen so many people who don't program suddently have an oppinion on what good code is or isn't. When asked, they couldn't even explain why. I assure you, half of those videos are filled to the brim with milquetoast examples that I really don't feel constitute as bad code. This thankfully doesn't happen every day.
I really don't enjoy the discourse regarding "code cleanliness". A lot of the time it's just about "I prefer writing things this way" rather than the code actually being slower/harder to read/maintain/whatever. There's a billion ways to write something and none of them are outright wrong!
The reason Yandere dev got so much vitriol (besides generally being a gross human being) is that he loudly proclaimed that his code was great, and he was the best programmer, while doing things like making trivial O(n^2) loops in a game that ran terribly precisely due to those things. He also constantly sought free work from fans that he could profit off of, and even when people offered to help him make his code not atrocious, he pushed them away and was a toxic dick about everything.
He's the exact kind of "I'm the best" that every professional has run into before and cleaned up after.
This wasn't some amateur doing his best with limited resources to give a fun experience to the world, this was a hateful, angry person earning $3500 a month in patreon subscriptions begging for free 3D models from his fans, berating them for giving him free 3D models that "weren't good enough", and refusing to spend a single dime of that revenue on fixing, finishing, polishing, improving etc his abortion of a video game.
> I really don't enjoy the discourse regarding "code cleanliness". A lot of the time it's just about "I prefer writing things this way" rather than the code actually being slower/harder to read/maintain/whatever.
Agreed, that's why I think there's arguments that can be made in favor of both DRY/WET, as well as SOLID/CUPID/whatever, even when those are in contradiction with one another, as well as more freeform approaches and KISS/YAGNI. Whatever works for each team and project.
> There's a billion ways to write something and none of them are outright wrong!
However, when your app is doing 2000 DB calls to render a list with some data because of the N+1 problem, I'd say that the code is definitely written wrong. When you need to jump around 20 different files across 6 layers of abstraction that could have easily fit into half of that, then the code might definitely be wrong and unmaintainable.
At my nanoscopic scale (a game for Minetest), I don't give a shoot about that. What matters is that the game does what I want. I consider programming is an art and I get paychecks for more mundane programming, where doing Git right and structuring the programs properly are important concerns, but in this case the end result (the game) is more important than the means (the program), and I'm sometimes kind of amused when I see others try to do this stuff "professionally".
Barotrauma is an excellent example of fully "source available" in a multiplayer game. Practically speaking, Rimworld and Minecraft are like this.
Mindustry is an excellent example of the "have your cake and eat it" open source model. Its sold on Steam, but it's GPL 3.0 and free to download elsewhere. Shrug
Mindustry is an excellent game, and I love the amount of work that the dev has been putting into it. In the time I've played it, the single-player content has deepened significantly - from a mostly-linear campaign to almost an entire world to play with; then on to a second planet with a different play style.
I have to stand in awe of people who are both creative and able to manifest that into creative products.
I didn’t realize rimworlds source was available. I’m curious how some of their simulation works, that’s definitely interesting. If the Eula is friendly, I may take a look some day
Yeah, that really is bare minimum, but its still better than the deliberate obfuscation of many similar games.
Minecraft, meanwhile, is obfuscated but with public mappings. That is a weird situation, but it still works kinda like the game being source available.
Minecraft's source has been decompiled multiple times, and its base modeling is IIRC pretty well understood, also from a server-side point of view. It doesn't seem to be particularly advanced, at least the traditional Java version anyway. Can't speak for the Bedrock edition, that's a C++ optimized version for mobile and consoles.
My favorite proprietary game that went to free licensing is Star Control 2: The Ur‐Quan Masters.
Wikipedia: “Released to critical acclaim, Star Control II is widely viewed today as one of the greatest PC games ever made, and has appeared on numerous publications lists of the greatest video games of all time.”
From what I understand, if a game engine's source code is GPL, there is no legal way to require derived games release their assets under a CC license. Does this mean we need a "super license" that incorporates the terms of both GPL (for the code) and CC-BY-SA (for the assets)?
Why should derivative works have to release assets under CC? What's the goal? Is it so bad if people still have artistic IP but the underlying code is Free?
Games are a combination of art and code. Why should programmers be the only one's required to release their work under a viral license? Artist should as well.
I mean I do think it's fine if you wish to try to take this route. Nothing morally wrong or anything.
But I think the art itself isn't just like code. It's not just the bits used to make images on screen.
There are characters, stories, ideas, and worlds being created derived from the artist's personal life and philosophy. That's the actual appeal, and there are more downsides to making your IP open like this than there are downsides to FOSSing your game code.
I hear what you're saying, but I don't think game code - which is responsible for the mechanics and "feel" of a game - is merely "bits used to make images on screen." To me game code is as unique as the artwork. However, the purpose of the engine code is as you describe so maybe it could be FOSS? Maybe LGPL?
Since Microsoft bought Minecraft, I've been quite worried about the possibility of losing a great game to a giant.
While I don't play Minetest or the other FOSS minecrafts, I'm so happy to see it happening. When I was able to dig and build, I was relieved.
I don't know what the future holds, but I want my unborn children to experience that feeling of digging all the way down, building all the way up, digging through mountains, and making houses. That was so cool.
Microsoft is a scary company with the way they treat Windows 11, wonder how much longer until there are ads inside Minecraft Java.
One interesting thing is the FSF’s principles have absolutely no problem with a free engine and paid assets. They explicitly say they have no position on artwork and I’d say art, sound, level design, and so on all qualifies as artwork.
That arrangement looks like a good one to me. It leaves plenty of room for the seller to make money while respecting user freedom. And every case I know of where a mod community thrives greatly lenthens the lifetime of the game. Needless to say having the engine source available would be a huge benefit for modders.
> They explicitly say they have no position on artwork
Right, the FSF has always had the view that software developers are the only creative professionals who must be shamed for not releasing their hard work for absolutely free. Authors are allowed to hold copyrights on their books, artists on their paintings, musicians on their music; but programmers? Fuck them if they even THINK about trying to maintain control of their creative outputs -- they're clearly evil. J.K. Rowling is allowed to make money on Harry Potter, but you're not allowed to copyright your code.
And can it with "but these 47 people in history have all managed to make a livable income from consulting based on their open-source work!". That's just more of you telling me how I'm supposed to live. I don't want to make money helping incompetent companies install the software I wrote. I want to make money in proportion to the value I add to the world.
I suppose you’re not a big fan of right to repair either then?
Nobody is forcing you to write or use free software. However, freedom is intrinsically valuable, and there’s a huge difference between being able to control your own computing hardware vs reading second rate children’s books.
> I want to make money in proportion to the value I add to the world
That’s a pretty thought, but nobody does. Perhaps you should revise your expectations to be realistic?
This has absolutely nothing to do with copyright except that you lump them both together under "freedom". That's your arbitrary grouping, not mine. You're free to use tape to fix your copy of Harry Potter if it rips. Nobody has ever disputed that. You're not free to mass produce copies of it and sell it for profit.
I am arguing that it's okay that an author enjoy copyright protection on the book, and you're here saying "you're telling me I can't even tape a ripped page in MY copy of Harry Potter!?". It's inconceivable to me that you're making that argument in good faith. I simply do not believe you that you don't see the difference in those situations. If you're about to make the argument that in order to repair a John Deere tractor, you need the right to copy their code into your own competing line of tractors, you've gone off the deep end.
> Perhaps you should revise your expectations to be realistic?
Perhaps we should all work to bring about the world we want to live in, instead of playing Prisoner's Dilemma?
Computer programs are radically different from literary and artistic works. It’s unsurprising that laws that were designed for paper books are less than a great fit for software. Indeed, software probably shouldn’t be eligible for copyright protection at all. Recipes which are another species of algorithm aren’t accorded copyright protection because they are simply a set of instructions.
> Perhaps we should all work to bring about the world we want to live in, instead of playing Prisoner's Dilemma?
In that case you should be paying the users of your proprietary software because you are observably reducing the value of their computer compared to a free alternative.
> Recipes which are another species of algorithm aren’t accorded copyright protection because they are simply a set of instructions.
Yet Recipe Books (particular curated collections of recipes) are afforded copyright protection. If your argument is that copyright should not be given to general algorithms like the FFT, new methods of fast matrix multiplication, the Carmack Hack, etc., then I actually completely agree with you. In all art, there is a level too granular to be copyrightable. In music, it's chord progressions and simple, obvious melodies. In books, it's common idioms and simple sentences like "Terrified, he ran." In programming, it's basic/common algorithms, design patterns, and commonly used control flow. None of that should be afforded copyright protection, and I hate seeing the frivolous lawsuits that come up in all those fields based on these trivial similarities.
Besides, modern Haskell or C# or TypeScript or Rust code is not simply a set of instructions. You could argue that assembly language is. But the vastly different ways to express the same logical things in different languages, including comments, naming conventions, clever tricks, etc. all together comprise a body of artwork (yes, artwork) that is clearly copyrightable.
For what it's worth: IMO code should not be eligible for patent protection. It's actually possible for someone to dislike software patents, support right to repair, and also support copyright protection for programmers.
> you should be paying the users of your proprietary software because you are observably reducing the value of their computer compared to a free alternative
It's hard to argue I'm straw-manning you when you make such obviously outrageous statements. This statement is like a caricature of everything I'm claiming the FSF is.
> Besides, modern Haskell or C# or TypeScript or Rust code is not simply a set of instructions. You could argue that assembly language is. But the vastly different ways to express the same logical things in different languages, including comments, naming conventions, clever tricks, etc. all together comprise a body of artwork (yes, artwork) that is clearly copyrightable.
Mathematical and logical formulas also aren't subject to copyright, so your Haskell argument doesn't hold water even if we do allow that functional code somehow isn't clearly reducible to a set of instructions.
The correct solution is to come up with some kind of legal regime that's actually designed for software rather than trying to torture a law for printing presses into saying something meaningful and equitable about software.
> It's hard to argue I'm straw-manning you when you make such obviously outrageous statements. This statement is like a caricature of everything I'm claiming the FSF is.
What's outrageous about the statement that software that I am free to modify has greater value than software that performs the same function but that I am not free to modify?
> The correct solution is to come up with some kind of legal regime that's actually designed for software
Sure, I agree with that. You told me to revise my expectations for something much less unrealistic than that, though. But let's work toward it anyway. In the meantime, let's extend copyright protection to programmers and stop shaming them for accepting it.
> Mathematical and logical formulas also aren't subject to copyright
But mathematical journal paper submissions are! This is not a counter-argument. My point is that code is more than just its function. Code is written for humans, not for computers. Let me ask you this: if your code doesn't compile, is it really a sequence of instructions? No, it's not! It's still copyrightable, though.
> {Outrageous statement} ... "that's outrageous!" ... what's outrageous about {entirely different, much softer statement}!?
> In the meantime, let's extend copyright protection to programmers and stop shaming them for accepting it.
Who is shaming programmers for accepting copyright protection? The entire free software copyleft concept, while admittedly a kludge, rests on programmers having copyright protection. However, I and many others can and will continue to shame anyone who violates user freedom because violating the rights of others is shameful behavior.
> This is boring.
Lots of things are boring when you willfully misinterpret them.
Don’t you agree that you’re providing more value by offering software that respects user freedoms than by not?
The problem is you’re relying on copyright to create economic opportunity at the cost of user freedom. A better approach for everyone involved would to be a system that rewards respect for user freedom since that’s providing more value than not. Unfortunately trying to pound the square copyright peg into that round hole just doesn’t work very well so it’s strange that an idealist like you is advocating it so strongly.
This has always been the first reason I haven't open-sourced some of my code. The second being that it's also totally useless, and lots of people could write it better.
It's honestly crazy to me that people would downvote you for expressing this. I think it's an extremely common hang-up among lots of programmers and it's an important thing to talk about. I don't understand how it improves the discourse, when someone says "I'm embarrassed", to say "well FUCK YOU for being embarrassed! Get the fuck off Hacker News!" Downvoters, you're making the problem worse. I'm not sure what you're trying to accomplish.
hehe. thanks. no worries, I tend to abuse HN as a confessional for brutal honesty towards myself and everything else. I never think I'm "right", but some people enjoy some wry honesty and others go mad.
The hang up is real, and it's pretty silly we don't discuss it more. I'm constantly aware that my code would be ridiculed by this very same community, even though I think it's not the worst code. The people who would ridicule are the same ones who downvote, so that's a fair indicator of what to expect.
The most embarrassing code I have ever written is the only thing on my public github. Everyone writes shit code at one point or another. Most people even have that fun experience where you openly mock some terrible code only to git-blame and see your own name.
If you have never been embarrassed by your code, you probably haven't stuck around at a single job long enough to see it cause problems.
I seek out feedback from a limited number of people, in a controlled way, when I'm working on my own projects. At least 90% of it gets filed away in my mind as valid advice, but not necessarily given the structure of what's already built, and not necessarily something I'm going to implement. A lot of it may be sound for version 2.0, but I don't need to debate the priorities. What feedback I get that shows me better ways of doing things often gets used in the next project I build.
When I find myself in the hot seat answering to questions about why code was structured this way or that, I usually already want to move on from the project, and it feels like a hostile situation. I know I can always learn and improve from feedback, but oftentimes my intention in putting something out is not to generate feedback but just to make it available. Unfortunately, I've found that most of the time this decays into situations where I have to defend my choices. Which I'll be the first to admit are often made on the spur, because if I were planning on other people picking apart my coding decisions I wouldn't be able to code my side projects nearly as quickly.
[Frequently I think this is because people need to prove they can do something better than I did, and have to grind that axe against my work; which takes whatever utility I might have made and turns it into a pissing contest].
But I just don't want to subject myself to that shit anymore, and the world can get on fine without my code.
tl/dr, the hostility and negativity that usually comes along w/ people giving their opinions makes me not want to share my work with them.
A bit meta, but have situations like this happened publicly for you? I would be interested in reading some of the Helpful Feedback™ that you've dealt with
Not so much publicly as most of these happened pre-2010. But like, I think when I finally decided to keep my shit to myself was when I went off on my own initiative and built a solar system construction tool for Chris Roberts to play with, a day or two after I finished his HUD demo for Star Citizen. This wasn't open source, obviously. I built in a lot of neat features for a builder tool that I would love to have if I were making a sprawling galactic open game. Chris is, obviously, a legendary coder. But he seemed to get really pissed off when I showed him this project, and told me THERE'S NO FUCKING WAY WE'RE BUILDING ANY OF THIS USING FLASH. In truth, it was only a flash project to let you drag planets and moons around, size them, set them in orbits around a star until you were happy with the solar system's dynamics, and then output a slim XML file describing each system you built. I thought it was cool. At the same time I was being publicly attacked and on/off praised all over the user forums for HUD things I'd written that no one had actually seen (and never ended up seeing).
It wasn't the first time I had a problem the public as a coder, because I wrote and ran - meaning, stayed awake and watched, 24/7 - the first Bitcoin casino of any size for a couple years, and a lot of the early players were devs of some description. It was helpful, and I shared my code with players. But it was always a case of "if I were you, I would've..."
Prior to that I had a major run-in against Fox NewsCorp when a whole platform I'd developed solo for an indie game got sold to them and they thought it was my responsibility to explain my code to them. Their strategy to get me to comply with this was to offer me half my normal hourly rate and ask me to sign a contract stating that all my intellectual property belonged to them. No one in that case ever said my code was bad, they just couldn't get a team of 10 coders to understand it so they shut it down and lost the $500k they'd paid for it.
Actually, the response to the non-commercial projects I've put out personally has been fairly "meh" in the last few years - I haven't really promoted them and presumably no one wants or needs them. I think I got like +2 votes on the last thing I showed HN. I have no problem contributing on other people's projects, but it's just a fix here and there if I see something. But the reason I didn't show the code on the thing I put up on HN last? It's that the two people who saw it would undoubtedly just tear my code to pieces, and I have moved on to other things.
I'm honestly a bit young and haven't experienced such negative feedback yet. I hope I wouldn't take it personally, but I can see why that may be hard, especially coming from someone you respect like that.
You run the code and its (mostly) obvious if it works or not.
For the first 9 years of programming I never shared my code publicly. My code wasnt useful to other people, so it wasnt a big deal.
Then I finally decided to become a professional programmer, I decided to post my best code. No one ever cared.
Today, 13 years of programming experience, I have no problem posting my code. I have written helper functions that are useful to everyone, and maybe my programs are helpful, even just for ideas.
So... don't be too hard on newbies who are playing around.
One of the worst little utilities I have ever written was the SOP for managing user permissions for 4 years after I puked it onto our internal bitbucket as a personal toy that might be helpful. This despite being awful, ugly, unfriendly, literally broken in some normal use cases, fundamentally flawed, and extremely irregular in it's usage.
It was never fixed. I don't think I even got any grief for it. At the end of the day, I had built a utility that went some of the way towards fixing a problem that nobody else was tackling. Shitty code running and working will always beat perfect code nobody ever writes. The most important lesson I have learned to be a better software developer is that if you don't write SOMETHING, no matter how awful it is, you will never get anything done, and you can always make it better.
Confidence, too. You can be experienced and still not confident.
Also, and this is a thing I've experienced a lot, you can have really good intentions but there is some whole community that just blindsides you and beats the crap out of your work and tells you how stupid you are, to show how smart they are.
I have one (fairly anodyne) friend who works for a huge corporation who never gets tired of telling me that everything I build amounts to technical debt for my clients, because they hire a lone coder. That's the least harsh thing I experience in showing my code to other coders, most of the time.
Weirdly, Copilot is eerily good at replicating my coding style... even my idiosyncratic way of naming variables. But yeah, humans?
Do you realize how genuinely awful most people's advice is? Most people parrot off a poorly regurgitated version of whatever they read in the latest fad software engineering book, regardless of whether it's even applicable to your situation or not. Go read the Software Engineering Stack Exchange to see this, and realize those are generally much better than random advice. Good advice requires a deep understanding of the problem and the tradeoffs involved; random people online just aren't going to spend that kind of time and effort unless they're a serious co-contributor to the project. That makes their advice worse than worthless -- actually harmful. Like intentionally introducing design-by-committee to your project.
And that's only the ones who are actually acting in good faith! There are plenty of people engaging in bad-faith "contributions" to open source as well.
Having the code makes it easier to write a new minimal compiler, translator or interprer, just to run the specific game. Or understand how the game works to make a good rewrite/port. Not every game has a dedicated enough fanbase to do this, but having the option is always great. Rewriting the engine doesn't mean you have to rewrite all the dialogue and in-engine scripts, after all.
Of course, if you want to write and use something like SCUMM for your games, that's appreciated, too...
My main point is that you shouldn't depend on code to be able to run the program, but on the spec. Hence the emphasize on the spec being simple to implement.
There is no way to ensure that a vm/compiler will last forever, especially given the infinite amount of potential platforms. Binary search as a concept will last longer than ScummVM.
Raw assembly is theoretically portable as well, why do you want the source?
My problem with these is that they are cross-platform only as long as the maintainers decide they are, you aren't gonna write a vulkan software impl from scratch if the platform doesn't come with one.
Now you can argue that this is all very unlikely, but you have to agree that this is no archival. At some point the project will become unusable because of all the automation code it depends on. Binary search will outlive it.
When games have a required online component, servers shutting down are the most likely reason the game becomes unplayable, more than the client not working on current platforms.
So another option that could be added to the list would be to make the server free software (or at least share its binaries) before the client's assets or the client itself. This can also boost the community if they can host their own servers with custom mods (eg. Minecraft)