Arlodotexe / strix-music

Combine any music sources into a single library. It's your music. Play it your way.

Home Page:http://www.strixmusic.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[Feature] Add Apple Music

ivanicin opened this issue · comments

Describe the problem

First congratulations as this is a truly great effort.

I understand that you currently make just some foundations and that it may take a while for that.

Anyway I think that a must have for this is just two things to work: Spotify (listed but not implemented) and Apple Music (not even listed and that's why I am opening this as an issue so that you at least put it in the future plans). All other things are potentially nice added value for many, but if you don't implement those two services which are the biggest streaming services that will be a red flag for many potential users.

Describe the proposed change

Apple Music does have REST API so you can implement it.

I would definitely consider to give at least some small sponsorship if those things get implemented (actually if it works well the only reason that I wouldn't do it is if I found some alternative solution that works for me). And that's surely not enough for your to do that but I think it is likely to affect at least some other people too.

Alternatives

No response

Additional info

No response

Help us help you

No, I'm unable to contribute a solution.

commented

Hey @ivanicin, congratz on your first feature request.

You'd be right, right now we're focused on tidying up the SDK and making sure it's fit to handle anything we throw at it.

As long as Apple gives developers an open (not to mention, legal) way to stream Apple Music as a third-party, this is something we'd love to make Strix-compatible as soon as we can.

If anyone wants to begin work on this, we have a complete step-by-step guide on how to build a core from scratch.

The SDK is still in alpha and subject to breaking changes, but if work is done in this repository, we'll be happy to automatically migrate any breaking changes for you.

A quick search shows that Apple Music for C# already exists: https://github.com/MattPress/AppleMusicAPI.NET

However it is GPL so neither I can use it neither you can directly use it but I am sure it will help you to implement it quicker when you decide to do so.

Also this appears to be using REST API: https://github.com/xamarin/ios-samples/tree/main/ios11/MusicKitSample

I might end up using that for start as at the moment for me priority is iOS and some basic Apple Music features, while more would be definitely interesting and that's how I found your project :).

A quick search shows that Apple Music for C# already exists: https://github.com/MattPress/AppleMusicAPI.NET

However it is GPL so neither I can use it neither you can directly use it but I am sure it will help you to implement it quicker when you decide to do so.

It's hard to see because it's buried in the src directory for the app, but Strix is also licensed under GPL.

A quick search shows that Apple Music for C# already exists: https://github.com/MattPress/AppleMusicAPI.NET
However it is GPL so neither I can use it neither you can directly use it but I am sure it will help you to implement it quicker when you decide to do so.

It's hard to see because it's buried in the src directory for the app, but Strix is also licensed under GPL.

If your documentation on nuget is correct then you are using LGPL which is entirely different thing.

OK I see that it is GPL now possibly you haven't updated that on nuget. Then I wish you good luck and I do find that this extremely ambitious and worth the respect, but this isn't for any kind of commercial use and hopefully you have figured out your intended target market.

commented

As per our pledge[1], [2], we'll always be a free and open standard. You'll never be charged to use or build with any part of Strix. We rely on donations from our supporters.

The Strix Music SDK and all things built on it/for it are at minimum LGPLv3 + Additional terms. Reasons for this included

  • Allowing any license when building for/with the SDK.
  • Requiring open source if you fork the SDK
  • Requiring listing changes if you fork the SDK, important for when non "Strix Music Standard" variations are made.
  • Protecting us from indemnification if someone builds with the SDK and commits trademark, copyright, intellectual, patent, or any other form of infringement.

The Strix Music App, our various shells and our (unfinished) WinUI control library are GPLv3. This is because

  • It at least discourages blatant theft and "clone ware" of our app.
  • Clones may exist, but must be open source and give us some credit for our work.
  • Faithful recreations of long gone, fan-favorite apps should be an open effort

Switching to Apache 2.0 or MIT isn't off the table in the future, but these are what we've landed on for now. This is also from memory, so it may be incomplete. Let me know if I missed anything, and I'll update it 🙂

Also note that a lot of tooling isn't designed to handle multiple licenses per repo, so it might show incorrectly in some places. These will all get fixed when we eventually split the into separate repos.

The Strix Music SDK and all things built on it/for it are at minimum LGPLv3 + Additional terms. Reasons for this included

@yoshiask is right that currently you have stated differently: https://github.com/Arlodotexe/strix-music/blob/master/src/Sdk/StrixMusic.Sdk/LICENSE

But then info on nuget is correct so you should update the file above.

commented

@ivanicin LGPLv3 is a modification of GPLv3. LGPL requires the full GPL to be present, and full GPL allows for LGPL to be present. LGPL then allows us to define additional terms.

They're all required to be in different files. See LICENSE.LESSER and LICENSE.ADDITONAL in the same folder.

See also How to Use GNU Licenses for Your Own Software

commented

Also this appears to be using REST API: https://github.com/xamarin/ios-samples/tree/main/ios11/MusicKitSample

That certainly looks promising for iOS devices! Only problem is running on non-Apple devices, we should be using .NET Standard 2.0 unless we have a very good reason to multitarget.

After some basic research, I found these, which should be everything we need:

  • Apple Music API: Use Apple Music API to access information about media in the Apple Music Catalog and a user’s personal iCloud Music Library.
  • MusicKit: MusicKit lets users play Apple Music and their local music library from your app or website.

So this is already looking significantly more promising than most other music services!

We get a REST API that works in NS2.0, and a native/cross-platform way to play audio, which would be handled by the consuming application, not the strix core.