Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature] Add Apple Music #199

Open
ivanlabsii opened this issue Jul 21, 2022 · 10 comments
Open

[Feature] Add Apple Music #199

ivanlabsii opened this issue Jul 21, 2022 · 10 comments
Labels
enhancement New feature or request new music source

Comments

@ivanlabsii
Copy link

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.

@ivanlabsii ivanlabsii added the enhancement New feature or request label Jul 21, 2022
@Arlodotexe
Copy link
Owner

Arlodotexe commented Jul 21, 2022

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.

@ivanlabsii
Copy link
Author

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.

@ivanlabsii
Copy link
Author

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 :).

@yoshiask
Copy link
Collaborator

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.

@ivanlabsii
Copy link
Author

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.

@ivanlabsii
Copy link
Author

ivanlabsii commented Jul 22, 2022

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.

@Arlodotexe
Copy link
Owner

Arlodotexe commented Jul 22, 2022

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.

@ivanlabsii
Copy link
Author

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.

@Arlodotexe
Copy link
Owner

Arlodotexe commented Jul 22, 2022

@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

@Arlodotexe
Copy link
Owner

Arlodotexe commented Jul 22, 2022

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request new music source
Projects
Status: No status
Development

No branches or pull requests

3 participants