Nice writeup! I had plans to use a (still unopened) Steam Link for local streaming but it sounds like I might be much better off just trying out this pair.
Just wanted to shout out some other FOSS game efforts you might love (I’ve been gaming Linux only for 8ish years now, it’s fine so long as you don’t care about things that need incompatible DRM):
Stratagus for a reimplementation of Warcraft 1 and 2, and more
Mineclone2 on Minetest for some Minecraft-like gameplay (and lots of other games that differ vastly from it)
Fallout2-ce is a modern port of Fallout 2 based on RE efforts
There’s too many to list but these are some that I’ve enjoyed recently!
Overall, the Bank Python environment seems to be indicative of how cultural norms prune the design space. If you suggested this stuff in a normal environment you would get shut down pretty quickly. However, it seems to have worked well in that space so maybe it isn’t as crazy as it sounds on paper. What other ideas do you think we haven’t explored because of normative pressures?
Honestly, I’ve come to appreciate forums more with time. While I love lobster.rs, voting on comments and using that to weigh opinions takes away the feeling of community. Forums feel much flatter and approachable. I should probably spend more time on those parts of the internet.
Reddit is an outlier in actually still providing old.reddit for those that prefer it. Any other social network would have switched over to the new one without any sort of transition.
The transition is happening. There’s a lot wrong with new.reddit but at least it supports the three-backslashes method of indicating code in Markdown (instead of the standard way of preceding each line with at least 4 spaces). A lot of the submissions in the daily solutions thread for Advent of Code are from people for whom this works perfectly, but it looks like garbage in old. The mods are fighting a losing battle trying to keep the threads usable for old reddit users.
I optimistically assume that some people on the Reddit dev team still remember how Reddit got big because Digg forced a terrible UX transition without a way to opt out.
I don’t see any evidence that Reddit has a dev team that gives two shits about Reddit. The experience is terrible and has been terrible for years. I dunno, maybe they are just wildly incompetent. I’m not sure which interpretation is more charitable. But in any case, they clearly do not use Reddit, because if you were a Reddit dev who was also a Reddit user, an itch that you would 100% have scratched when new Reddit launched is that code formatting is inconsistent between new and old Reddit. It just is not that hard to use the same Markdown rendering tool across stacks. Yeah, there’s some weirdness about CommonMark and the original Gruber Markdown is underspecified and blah blah, but it is a completely solvable problem that is totally in their wheelhouse to solve, and they have not made even a single step of progress on it. People write Markdown parsers for fun. They just don’t care.
Fun fact: I wrote the Markdown parser that New Reddit uses, for fun. I also executed the transition to CommonMark-based Markdown at GitHub. Working on Markdown stacks used by sites as big as these is pretty intense. I think your analysis is off the mark.
Working on Markdown stacks used by sites as big as these is pretty intense.
I definitely agree with you that having millions of messages run through a parser is going to effectively fuzz out tons of weird shit, so it’s not something you do casually, but I still don’t see how having two parsers that work completely differently makes any sense. Either stick to the old Reddit parser because it’s tried and true or switch to a new one because it’s faster and more capable, but why would you only sort of switch in some views but not others? I’m sure there’s some weird and bad architecture that makes it hard to change old reddit, but I cannot imagine working on Reddit for 40 hours a week and not fixing it eventually. New Reddit isn’t actually new anymore; it’s been around for years. At some level, it has to come down to people saying “I just work here; I don’t care that the product is bad; I’m not going to waste my time pressing for a fix because it’s difficult and it’s not my department.”
Couldn’t agree more. I see backwards-incompatible UI changes as a form of fairly cavalier disrespect for one’s users (I’m looking at you, Firefox), and very much in the same category as breaking API compatibility without warning. The user is a critical part of the overall functioning system, not unlike whatever library or service is on the other side of an API – changes to the interface they use should be managed accordingly. Adding a new keyboard shortcut? Sure. Arbitrarily changing an existing one? Bzzzt Nope.
“Copy link location” moved from very reachable A to L. So you need to move your left hand all the way to the right side of the keyboard or put down the mouse. Sigh.
Precisely the example I was thinking of. (If you’re not aware, there’s a hack that can be applied to revert it, but it’s irritating to have to re-apply on every update, and who knows how long it’ll keep working.)
don’t even see an argument for 1 based indexing here. It just says “people like 0 based indexing because of Dijkstra and C” but not why 1 based indexing would be better.
Granted there is no “why 1-based indexing is ‘better’” section, maybe that isn’t what the author is going for anyways, but I noticed two points:
It really shows how conditioned an entire community can be when they find the statement “given a list x, the first item in x is x[1], the second item in x is x[2]” to be unnatural. :)
and:
… and I think even proponents of 0-based indexing would agree, in spite of the fact that most of them wouldn’t even notice that they don’t call it a number zero reason.
Ampache’s been around a while and has been really solid for me. Wondering if there was a specific motivation for the Navidrome folks to start something new, other than new is always shinier of course.
I wrote MousikóFídi as an alternative to Ampache, the website has a small feature comparison table. I’ve only recently learned about Navidrome but plan to add that the table as well.
As for why would I write that: I too was a longtime Ampache user and was very happy with it, to be honest it just seemed like a fun project! After a week or so I had something reasonably usable so I thought: “let’s keep going!” I wrote in detail about it here.
looks neat, nice work! does it have subsonic api support? that would be a good feature to put in your table. Also, without database support, do you just build an in-memory index at startup? seems like that would take a long time on a large collection, but maybe it’s not as bad as I think.
Currently, there is no subsonic support. I don’t use it, nor do I have much of an interest in it, but many folks have asked about it. When I do get around to adding the plugin system, subsonic API support is for sure something I’d like to tackle.
Nothing is loaded at startup; instead, the application reads files and gets metadata (or tries to) on each request. This is running on a single-CPU virtual machine, to give you an idea of what performance might be like on a relatively low-powered host. When database support is added (it is planned as an optional plugin) much less work would be needed, of course.
ohh i see, it’s more file browser oriented. i basically only access ampache via the subsonic api, so that’s a requirement for me. i also use the “virtual” playlists features a lot (like Newest, Most Played, etc). I also need to be able to do things like “search by year”, “search by genre”. Those kinds of things seem like they would be very slow without a database, but if that’s on your roadmap that’s cool.
This is a very interesting read, but I’m not sure how much this translates into “normal” open source development. I think that the audience for these kinds of products might skew “younger” - or at least not be as immersed in open source culture as other users.
I do find the discussion about closed source development and Patreon funding fascinating too. I’m a firm believer in straightforward funding for development projects, something that still has to be hashed out to mesh with open source.
I think you nailed it re: the audience for this kind of stuff. Games are an interesting space here - you could argue that most of the users really don’t care about open source and just want to play their games. For better or for worse, they also don’t care where the executables/games come from.
It was really fascinating to read about the legitimate reasons for being closed source, and how it actually could benefit the user by shielding them from bad executables and so on. I used to consider the Patreon pattern you see CEMU and Yuzu doing a bit shady, but now that I better understand the context I respect the decision.
For my own servers, it’s either: Castlevania characters or Mystery Science Theater 3000 characters. Lately, I’ve been adding Morrowind characters to the mix as well.
Thank you so much for your work, I love your take on it as your life’s work. These games will still be fun to play 100 years from now.
I remember reading a year ago about some improvements you (or others?) made in upscaling bsnes to HD displays and still need to update my RasPi to pull in a recent version with those changes. My brain hurts every time I see my kid playing Mario Kart with the terrible shimmering!
It doesn’t look like RetroPie has pulled in the latest bsnes. In fact, development of RetroPie seems to have halted a year ago… :-( https://github.com/libretro/bsnes-libretro
Thanks for the pointers but commits don’t matter if they aren’t shipping to users. I’m referencing https://retropie.org.uk/news/ where the latest release announcement was 9 months ago and the forum also doesn’t seem to have threads from 2020.
I’m going through the steps to install Lakka instead, which appears to have modern bsnes support baked in.
An acompanying blog post[1] from Terry Cavanagh, the game’s creator, contains some additional information on the source release as well as a bit of a code-post-mortem. I think it’s worth noting that the VVVVVV code is pretty horrendous (Cavanagh even admits so), yet the VVVVVV product is a best selling and well loved indie title. It shows that code quality is not equivalent to product quality.
Games are somewhat different to most other software in that they are art, not tools. A quirk or oddity is far more tolerable in a piece of art than in a tool that one potentially has to use for hours every day.
I don’t know of you consider database systems widely used, but SQLite is kind of well-known for their extremely extensive testing, and SQLite is very widely used, but most likely not that known to the ordinary consumer of the products that it’s used in.
Infrastructure typically requires a higher baseline level of quality versus user facing code. Conversely, it is one step removed from revenue, thus it tends to be under appreciated and under funded relative to its importance.
Choose your poison. The amount of value generated by SQLite is likely in the billions, thanks in no small part to the quality of engineering that went into it.
Agreed. I might even say that poor code quality is correlated with high-quality games, but that doesn’t mean the relationship is causative. Many brilliant video games are made by creatives who don’t care so much for developing their programming skill. That doesn’t mean that high-quality, maintainable code is a bad idea.
There was some other obscure indie title called “Minecraft” that was supposed to have very terrible code. Microsoft bought it for more than 2 billion dollars.
It might happen more than you think with video games, as opposed to other kinds of software.
It shows that code quality is not equivalent to product quality.
Games are different from many other pieces of software in that you can create it once, and then never (or rarely) have to update it, especially for smaller games. A lot of the problems with “poor quality code” is that it becomes hard to update code, not that the original code doesn’t work.
Quoting from the article:
Looking back through it myself all these years later, I find it really funny how much of it is basically just the same parts copy and pasted over and over, with the values changed. This basically makes it impossible to read and maintain ten years later, but back when I was in the thick of it, it made it really fast to iterate and add new things
Yeah, the most succinct summary I’ve heard was “VVVVVV’s code can afford to be bad because it was made in 7 months with not much plans for large scale post-launch support”
I’ve made mousikofidi.info with soupault and am very happy with it. I generate the pages from various markdown files that are in a wiki branch of the code repo.
It hits each of your points, I recommend checking it out. The soupault blog itself is a nice example of how to set up something like that. I have plans to move my own blog over to soupault in the future.
Nice writeup! I had plans to use a (still unopened) Steam Link for local streaming but it sounds like I might be much better off just trying out this pair.
Just wanted to shout out some other FOSS game efforts you might love (I’ve been gaming Linux only for 8ish years now, it’s fine so long as you don’t care about things that need incompatible DRM):
There’s too many to list but these are some that I’ve enjoyed recently!
Overall, the Bank Python environment seems to be indicative of how cultural norms prune the design space. If you suggested this stuff in a normal environment you would get shut down pretty quickly. However, it seems to have worked well in that space so maybe it isn’t as crazy as it sounds on paper. What other ideas do you think we haven’t explored because of normative pressures?
Versioning all UIs you produce so users can stay on the old UI while the backend just doesn’t care.
Yes I understand how this could be a lot of work in proxying to map old abstractions on top of new backends.
We do already version APIs though, so why not UIs?
I think the people hanging on to old.reddit.com just shed a solitary tear.
The day old reddit dies is the day I… move to 4chan? IDK what else there is even.
the day I start wasting a lot less time online!
Active forum communities still exist!
Honestly, I’ve come to appreciate forums more with time. While I love lobster.rs, voting on comments and using that to weigh opinions takes away the feeling of community. Forums feel much flatter and approachable. I should probably spend more time on those parts of the internet.
Lobsters instances focused on the particular subcommunity maybe? There are some I could see going that route.
Perhaps teddit is an option for you, even now.
Lemmy.
Reddit is an outlier in actually still providing old.reddit for those that prefer it. Any other social network would have switched over to the new one without any sort of transition.
The transition is happening. There’s a lot wrong with new.reddit but at least it supports the three-backslashes method of indicating code in Markdown (instead of the standard way of preceding each line with at least 4 spaces). A lot of the submissions in the daily solutions thread for Advent of Code are from people for whom this works perfectly, but it looks like garbage in old. The mods are fighting a losing battle trying to keep the threads usable for old reddit users.
I optimistically assume that some people on the Reddit dev team still remember how Reddit got big because Digg forced a terrible UX transition without a way to opt out.
This is assuming that anyone in the dev team has a voice in the management of the company. I highly doubt it.
I don’t see any evidence that Reddit has a dev team that gives two shits about Reddit. The experience is terrible and has been terrible for years. I dunno, maybe they are just wildly incompetent. I’m not sure which interpretation is more charitable. But in any case, they clearly do not use Reddit, because if you were a Reddit dev who was also a Reddit user, an itch that you would 100% have scratched when new Reddit launched is that code formatting is inconsistent between new and old Reddit. It just is not that hard to use the same Markdown rendering tool across stacks. Yeah, there’s some weirdness about CommonMark and the original Gruber Markdown is underspecified and blah blah, but it is a completely solvable problem that is totally in their wheelhouse to solve, and they have not made even a single step of progress on it. People write Markdown parsers for fun. They just don’t care.
Fun fact: I wrote the Markdown parser that New Reddit uses, for fun. I also executed the transition to CommonMark-based Markdown at GitHub. Working on Markdown stacks used by sites as big as these is pretty intense. I think your analysis is off the mark.
I definitely agree with you that having millions of messages run through a parser is going to effectively fuzz out tons of weird shit, so it’s not something you do casually, but I still don’t see how having two parsers that work completely differently makes any sense. Either stick to the old Reddit parser because it’s tried and true or switch to a new one because it’s faster and more capable, but why would you only sort of switch in some views but not others? I’m sure there’s some weird and bad architecture that makes it hard to change old reddit, but I cannot imagine working on Reddit for 40 hours a week and not fixing it eventually. New Reddit isn’t actually new anymore; it’s been around for years. At some level, it has to come down to people saying “I just work here; I don’t care that the product is bad; I’m not going to waste my time pressing for a fix because it’s difficult and it’s not my department.”
Couldn’t agree more. I see backwards-incompatible UI changes as a form of fairly cavalier disrespect for one’s users (I’m looking at you, Firefox), and very much in the same category as breaking API compatibility without warning. The user is a critical part of the overall functioning system, not unlike whatever library or service is on the other side of an API – changes to the interface they use should be managed accordingly. Adding a new keyboard shortcut? Sure. Arbitrarily changing an existing one? Bzzzt Nope.
“Copy link location” moved from very reachable A to L. So you need to move your left hand all the way to the right side of the keyboard or put down the mouse. Sigh.
Precisely the example I was thinking of. (If you’re not aware, there’s a hack that can be applied to revert it, but it’s irritating to have to re-apply on every update, and who knows how long it’ll keep working.)
I think there is a strawman in there.
don’t even see an argument for 1 based indexing here. It just says “people like 0 based indexing because of Dijkstra and C” but not why 1 based indexing would be better.
Granted there is no “why 1-based indexing is ‘better’” section, maybe that isn’t what the author is going for anyways, but I noticed two points:
and:
Is there a comparison of Navidrome vs. Ampache?
Ampache’s been around a while and has been really solid for me. Wondering if there was a specific motivation for the Navidrome folks to start something new, other than new is always shinier of course.
Shameless self-promotion, but:
I wrote MousikóFídi as an alternative to Ampache, the website has a small feature comparison table. I’ve only recently learned about Navidrome but plan to add that the table as well.
As for why would I write that: I too was a longtime Ampache user and was very happy with it, to be honest it just seemed like a fun project! After a week or so I had something reasonably usable so I thought: “let’s keep going!” I wrote in detail about it here.
looks neat, nice work! does it have subsonic api support? that would be a good feature to put in your table. Also, without database support, do you just build an in-memory index at startup? seems like that would take a long time on a large collection, but maybe it’s not as bad as I think.
Thanks for the compliment :)
Currently, there is no subsonic support. I don’t use it, nor do I have much of an interest in it, but many folks have asked about it. When I do get around to adding the plugin system, subsonic API support is for sure something I’d like to tackle.
Nothing is loaded at startup; instead, the application reads files and gets metadata (or tries to) on each request. This is running on a single-CPU virtual machine, to give you an idea of what performance might be like on a relatively low-powered host. When database support is added (it is planned as an optional plugin) much less work would be needed, of course.
ohh i see, it’s more file browser oriented. i basically only access ampache via the subsonic api, so that’s a requirement for me. i also use the “virtual” playlists features a lot (like Newest, Most Played, etc). I also need to be able to do things like “search by year”, “search by genre”. Those kinds of things seem like they would be very slow without a database, but if that’s on your roadmap that’s cool.
Yes, they absolutely are - I experimented with DB-less search and it was a total disaster. Not that I expected otherwise, but I had to try it.
Thanks for the feedback!
This is very interesting, thanks. Am I right that your program works on a files/folders basis, not a metadata basis?
That’s correct! Just give it a list of directories and browse away.
This is a very interesting read, but I’m not sure how much this translates into “normal” open source development. I think that the audience for these kinds of products might skew “younger” - or at least not be as immersed in open source culture as other users.
I do find the discussion about closed source development and Patreon funding fascinating too. I’m a firm believer in straightforward funding for development projects, something that still has to be hashed out to mesh with open source.
I think you nailed it re: the audience for this kind of stuff. Games are an interesting space here - you could argue that most of the users really don’t care about open source and just want to play their games. For better or for worse, they also don’t care where the executables/games come from.
It was really fascinating to read about the legitimate reasons for being closed source, and how it actually could benefit the user by shielding them from bad executables and so on. I used to consider the Patreon pattern you see CEMU and Yuzu doing a bit shady, but now that I better understand the context I respect the decision.
For my own servers, it’s either: Castlevania characters or Mystery Science Theater 3000 characters. Lately, I’ve been adding Morrowind characters to the mix as well.
That was an amazing read and I am in awe of byuu’s skill and dedication.
Thank you so much ^-^
Man this community is so cool because authors regularly pop up in the comments about their own software.
People like you are hard to come by though, you’re awesome.
Thank you so much for your work, I love your take on it as your life’s work. These games will still be fun to play 100 years from now.
I remember reading a year ago about some improvements you (or others?) made in upscaling bsnes to HD displays and still need to update my RasPi to pull in a recent version with those changes. My brain hurts every time I see my kid playing Mario Kart with the terrible shimmering!
https://arstechnica.com/gaming/2019/04/hd-emulation-mod-makes-mode-7-snes-games-look-like-new/
It doesn’t look like RetroPie has pulled in the latest bsnes. In fact, development of RetroPie seems to have halted a year ago… :-( https://github.com/libretro/bsnes-libretro
That fork is not intended to be current, and even changed its library name to
bsnes2014
. Upstream bsnes supports libretro by itself now, which is probably the reason that fork is semi-abandoned.RetroPie/EmulationStation last commit was yesterday, RetroPie-Setup two days ago??
Thanks for the pointers but commits don’t matter if they aren’t shipping to users. I’m referencing https://retropie.org.uk/news/ where the latest release announcement was 9 months ago and the forum also doesn’t seem to have threads from 2020.
I’m going through the steps to install Lakka instead, which appears to have modern
bsnes
support baked in.Retropie has an update menu in the UI, so these commits are making it to users who run updates.
Some thoughts:
describe-*
functions (e.g.M-x describe-mode
but many many things can be described).An acompanying blog post[1] from Terry Cavanagh, the game’s creator, contains some additional information on the source release as well as a bit of a code-post-mortem. I think it’s worth noting that the VVVVVV code is pretty horrendous (Cavanagh even admits so), yet the VVVVVV product is a best selling and well loved indie title. It shows that code quality is not equivalent to product quality.
[1]: http://distractionware.com/blog/2020/01/vvvvvv-is-now-open-source/
… for one indie game. True enough, but I would be cautious about extrapolating from this.
Games are somewhat different to most other software in that they are art, not tools. A quirk or oddity is far more tolerable in a piece of art than in a tool that one potentially has to use for hours every day.
Has there ever been a widely-used consumer product that has had great code quality? Like
xmonad
is cool but it isn’t exactly widely used.I don’t know of you consider database systems widely used, but SQLite is kind of well-known for their extremely extensive testing, and SQLite is very widely used, but most likely not that known to the ordinary consumer of the products that it’s used in.
Infrastructure typically requires a higher baseline level of quality versus user facing code. Conversely, it is one step removed from revenue, thus it tends to be under appreciated and under funded relative to its importance.
Choose your poison. The amount of value generated by SQLite is likely in the billions, thanks in no small part to the quality of engineering that went into it.
Agreed. I might even say that poor code quality is correlated with high-quality games, but that doesn’t mean the relationship is causative. Many brilliant video games are made by creatives who don’t care so much for developing their programming skill. That doesn’t mean that high-quality, maintainable code is a bad idea.
There was some other obscure indie title called “Minecraft” that was supposed to have very terrible code. Microsoft bought it for more than 2 billion dollars.
It might happen more than you think with video games, as opposed to other kinds of software.
Games are different from many other pieces of software in that you can create it once, and then never (or rarely) have to update it, especially for smaller games. A lot of the problems with “poor quality code” is that it becomes hard to update code, not that the original code doesn’t work.
Quoting from the article:
Yeah, the most succinct summary I’ve heard was “VVVVVV’s code can afford to be bad because it was made in 7 months with not much plans for large scale post-launch support”
These are interesting bullet points:
This seems to indicate Alpine is a viable choice for modern gaming.
I’ve made mousikofidi.info with soupault and am very happy with it. I generate the pages from various markdown files that are in a
wiki
branch of the code repo.It hits each of your points, I recommend checking it out. The soupault blog itself is a nice example of how to set up something like that. I have plans to move my own blog over to soupault in the future.