You're likely in for a treat if you haven't written C# in a while. The language has evolved quite a bit, especially around all kinds of nice ergonomics. Interesting things like pattern matching, using statements, and performance oriented primitives.
I got back to writing C# full time earlier this year and it's a joy.
I must admit to disliking C#'s functional libraries. I have wasted so much time trying to get the buggers into a pipeline. It becomes agonising in a way that doing the same thing in Scala was so very much a dream. I keep discovering the hard way, just don't do it (or just get a whole lot more experienced at it, although I don't know how without going through the pain barrier, and deeper each time, like Inception).
Could you give me a hint about these 'performance oriented primitives' please? (The only ones I can think of are structs versus classes) Edit: but isn't there a new thing where you can subtype a class without allocations, like Scala's record classes, or is that new in Java, can't remember.
Even if there’s nothing I could have productively done to contribute to that feature, I would absolutely have gone to those getting started features.
So, I’d encourage the team to have a pretty quick hand in issues when people are asking to help to link to this blog post and getting started resources.
Finally, none of this is in anyway a criticism of how any interaction was handled. I super appreciate everyone that works on Jellyfin, and I know onboarding developers can often feel like/be more work than not. Just a suggestion for a good spot to add some CTA links that I think would convert reasonably well
I looked at adding a much-requested and not-that-hard-to-add feature a while back (allowlist-by-tag), got as far as figuring out where to add it in the server code… but bailed when I realized I’d need to shepherd PRs through at least two repos to get the feature delivered, while juggling both repos to do integration testing. Monorepos for tightly-coupled code are so nice…
Maybe I’ll give it another look.
[edit] incidentally, allowlist-based parental controls are one of the best tools to have, and basically nothing supports them, which is really frustrating.
Fwiw, Plex parental controls are absurdly flexible.
I have it set up so the kids account can only watch things that have been given a particular tag. Due to how granular Plex tags are, this means you can give them a whole movie or TV show, some of a TV show, or a single episode
As it is right now, they have access to a reasonably large corpus of content, but nothing new; every time I acquire a new episode of bluey or something, my wife wants to watch it first. We basically always approve it, since we aren't that likely to object to most things you'd find in a kids show, but it's nice to have the peace of mind
> every time I acquire a new episode of bluey or something, my wife wants to watch it first
I wish Jellyfin had something similar, as my current process involves manually tagging things with a tag that isn't visible, then removing that tag once I've reviewed it.
I was frustrated about the allow-list for the longest time but someone on Reddit showed me how you can do allow-list on Plex. I forget the terminology (and you have to be careful because there are both tags and labels, I had been trying the wrong one) but you basically create a label and set the children accounts to only see content tagged with that label.
As a developer who only works on Linux systems, how is the dev story for C#? I guess Mono is still a thing, and that's the runtime that C# projects use to run, right?
I've always felt that C# felt a bit out of place when not in a Windows system, but maybe I've been always wrong. Never had the opportunity (or need) to use it at work, so I'm pretty ignorant of how it behaves and how good the tooling is to write it from Mac or Linux.
OTOH I've read multiple times that it's a nicer Java and F# seems to be well liked around here, too.
It's a little funky on Arch to get it installed and with the death of Mono the only option for IDE is microsoft's closed version of vs code as the c# plugin doesn't work on vscodium. (And much like Java, lots of C# language design assumes you're using an IDE).
C# on Linux is only slightly more annoying than Windows. You have to make some effort to install the SDKs and naturally some of the system APIs behave slightly differently, but overall I have only a very slight preference for windows here.
Mono does still exist, but since like 2015 or so C# has been supported natively on Linux. No one really uses mono anymore AFAIK. Its only purpose is running dotnet framework apps as opposed to dotnet core
It's just .NET now, without the Core part. Mono remains a runtime flavour for special targets but it's being slowly phased out in favour of CLR even on those special targets (for example iOS which has historically relied on MonoAOT, but now can be targeted with NativeAOT too).
Also, I'd really love if people stopped exclusively attributing .NET's progress to Microsoft. Yes, MSFT does the steering and funding, and employs teams working on the ecosystem, but the development happens in the open, and a lot of runtime improvements have been community contributions.
Also Mono and the rest of .NET are in the same open source repositories today and it isn't as much a case of replacement as a proper code refactor and merge over the course of the last several years (by both Microsoft and a large open source community).
C# runs natively on Linux (have done for many years now). AFAIK even on Azure people prefer to run it on Linux machines (including the place I work for). Performance wise I believe it runs equal to faster. A lot of C# devs (majority) now work on none Windows machines (they were very quick to add support for the new Mac arch as well).
TLDR; C# the language is as good or even better on none-Windows nowadays.
I just took a look at their GitHub repos, and the main one has 90+ PRs open for some for over 8 months with no feedback. What is the point of this call to action if the current team can't handle the current PR volume? As it stands more PRs won't help the project.
I didn’t know they needed developers. I’m an avid Plex user but C# developer by trade. Cloned the server and web projects and worked on my first issue!
Are the existing clients that bad? I tried one years ago, and I didn’t have any issue with the Jellyfin client. I only stopped using Jellyfin because Locast was killed off and that was my main thing I was doing with it.
I've been using Swiftfin since I got an Apple TV, and it's... okay. Lacks a lot of sorting/filtering options, gets janky and starts loading movie cards in the wrong place if you scroll too fast, and sometimes stops updating the progress bar for the rest of the movie if you pause it, but it's still useable enough.
I started my career as a C# dev, but now I only write C++. I miss C# dearly and have been badly wanting a project to flex those muscles on.
I guess I'll dive into jellyfin now. I've got a list of annoyances and now that I know it's C#, I'm ready to get fixing
I got back to writing C# full time earlier this year and it's a joy.
Maybe I'm just yelling at clouds, but I see more bloat than useful features recently.
Non-nullable reference types as default was a bad idea and I will die on this hill
Could you give me a hint about these 'performance oriented primitives' please? (The only ones I can think of are structs versus classes) Edit: but isn't there a new thing where you can subtype a class without allocations, like Scala's record classes, or is that new in Java, can't remember.
In the example in the blogpost (Chromecast support), in the issue I was asking a bit about how I could help implement the feature (https://github.com/jellyfin/Swiftfin/issues/271#issuecomment...).
Even if there’s nothing I could have productively done to contribute to that feature, I would absolutely have gone to those getting started features.
So, I’d encourage the team to have a pretty quick hand in issues when people are asking to help to link to this blog post and getting started resources.
Finally, none of this is in anyway a criticism of how any interaction was handled. I super appreciate everyone that works on Jellyfin, and I know onboarding developers can often feel like/be more work than not. Just a suggestion for a good spot to add some CTA links that I think would convert reasonably well
Maybe I’ll give it another look.
[edit] incidentally, allowlist-based parental controls are one of the best tools to have, and basically nothing supports them, which is really frustrating.
Hell it probably sucks for them too, but they’ve gotten used to the suck and forgot about it.
Checkout Sapling and ReviewStack. They look promising.
I have it set up so the kids account can only watch things that have been given a particular tag. Due to how granular Plex tags are, this means you can give them a whole movie or TV show, some of a TV show, or a single episode
As it is right now, they have access to a reasonably large corpus of content, but nothing new; every time I acquire a new episode of bluey or something, my wife wants to watch it first. We basically always approve it, since we aren't that likely to object to most things you'd find in a kids show, but it's nice to have the peace of mind
I wish Jellyfin had something similar, as my current process involves manually tagging things with a tag that isn't visible, then removing that tag once I've reviewed it.
Dead Comment
I've always felt that C# felt a bit out of place when not in a Windows system, but maybe I've been always wrong. Never had the opportunity (or need) to use it at work, so I'm pretty ignorant of how it behaves and how good the tooling is to write it from Mac or Linux.
OTOH I've read multiple times that it's a nicer Java and F# seems to be well liked around here, too.
But apart from that for a web app it's fine.
[1] https://github.com/OmniSharp/omnisharp-roslyn
[2] https://github.com/OmniSharp/csharp-language-server-protocol
Mono does still exist, but since like 2015 or so C# has been supported natively on Linux. No one really uses mono anymore AFAIK. Its only purpose is running dotnet framework apps as opposed to dotnet core
Once complete you will have the best linux environment to develop on :)
Also, I'd really love if people stopped exclusively attributing .NET's progress to Microsoft. Yes, MSFT does the steering and funding, and employs teams working on the ecosystem, but the development happens in the open, and a lot of runtime improvements have been community contributions.
It's fantastic and it runs natively on Linux.
Mono is still around and used for some niche use cases(WASM, interpreter, etc).
TLDR; C# the language is as good or even better on none-Windows nowadays.
But for backend and CLI stuff totally agree, works great on Linux
A rather trivial PR for it is open since Feb 2023 with no addressable feedback: https://github.com/jellyfin/jellyfin/pull/9291
I guess the easier term could be: Hacktember.
I use it, it's fine.
[0] https://firecore.com/infuse
[1] https://jellyfin.org/posts/client-infuse/