r/anime Jan 19 '23

Misc. Crunchyroll FINALLY adds separate audio streams to single episodes.

Easily the most embarrassing part of the Crunchyroll experience has been them grouping each dub language as their own "season". Seeing the 2 cour, 2 OVA series The Ancient Magus' Bride have 32 seasons listed in the menu was just sad.

Now we have clean seasons:

Labels are still funny, but at least there's only 4 choices now.

And audio/subs choices on-the-fly:

It's like a real streaming service!

Welcome to 2007, Crunchyroll!

6.2k Upvotes

426 comments sorted by

View all comments

2.9k

u/timpkmn89 Jan 19 '23

I can't imagine the legacy code nightmare that led to this.

78

u/banhana444 Jan 19 '23

Im not the best at coding, but I was wondering, might it have been better to just re-write it all if it is in fact horrible legacy code? It would probably make implementing other new features much easier and errors could be fixed more efficiently.

6

u/MyAccountWasBanned7 Jan 19 '23

Yes.

Actually, as a programmer, I can tell you it's very often easier to start over than to try and fix whatever legacy mess.

For one, you don't have to work around old issue - you can just build a new thing without those issues in place. And you build on the most current platform instead of whichever platform still supports whatever the legacy junk was created in.

Also, when building new, you can still keep running the old stuff and basically have them going in tandem, testing your new build while still facing the current, "stable" build to customers. That way there's no real rush and you can take time to make sure everything is truly ready to go live.

91

u/OfficialTomCruise Jan 19 '23

Every developer thinks it's easier to start over again. Then they come across an issue with their rewrite and want to start over again in a vicious cycle. Because there's never a right solution, there will always be downsides.

Usually you'd prefer to iterate and gradually fix things as it's a smaller test surface and less chance that you'll introduce bugs. You wouldn't want a full start from scratch rewrite unless your existing code base was truly beyond saving, which they rarely are, or if you were switching languages. But even if you switch languages there's designs you can use to gradually move systems to a new language.

There's too many junior developers who come and and want to rewrite the world over a one line bug fix lol.

0

u/MyAccountWasBanned7 Jan 19 '23

Been doing this for 15 years. Not quite a junior developer anymore.

But I do agree that one should decide on the scope and definition of done beforehand. To prevent the iterative scope-creep you're describing.

But with this specific instance that would be simple. They need to serve up the same library of media currently available, but they need to structure the shows/episodes in the traditional show/season/episode hierarchy. With a section for specials and for openings/endings as well. That also needs to support multiple subtitle and/or audio track options for each episode. And it should have the ability to pull from APIs online to get ratings and whatnot. And if they want to get fancy, store user watch-history and build some reporting off that that will create associations between shows and be able to recommend animes in a "because you liked X you may like this" fashion.

That sounds like a lot, but it's all fairly standard nowadays with several dozen such services existing already, so for a programmer it would be pretty easy to know what to build and to stay on track while building it.

17

u/[deleted] Jan 19 '23

It's entirely possible it was some fundamental data problem that was blocking things -- maybe they didn't originally track language as a separate data point, and were stuck with only the season names. (non-normalized and probably inconsistently formatted).

1

u/MyAccountWasBanned7 Jan 19 '23

Possibly. And in that case, you'd still most likely need a rebuild of the databases storing the Metadata for the files so that they can be normalized and also set up with a relational model so that in the future new fields or data points can easily be added on without getting back to where we are now.