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

Consider adding Album#rights for copyright/license details #134

Open
floehopper opened this issue Jan 7, 2024 · 8 comments
Open

Consider adding Album#rights for copyright/license details #134

floehopper opened this issue Jan 7, 2024 · 8 comments

Comments

@floehopper
Copy link
Member

I notice that we've already got Album#credits and it looks as if some people have included copyright details in there. I don't really know much about this stuff, but I wonder if it might be useful to store this information separately...?

I thought about this when I was working on the Atom feed for a single artist and I was thinking about populating the entry.rights attribute for each album. However, I'm now less sure that's appropriate because the entry really corresponds to the album page on jam.coop; not the album audio itself.

If we decide that adding Album#credits is useful, we might want to think about having a default in Artist#credits and/or allowing overriding in Track#credits...?

@chrislo
Copy link
Member

chrislo commented Jan 9, 2024

Sounds good to me - we've been asked a couple of times if we support that. Here's a screengrab of the licenses that bandcamp supports (at the track level, interestingly):

Screenshot 2024-01-09 at 21 12 50

@floehopper
Copy link
Member Author

(at the track level, interestingly)

Do you imagine ever having individual track pages? It looks as if Bandcamp do...

https://jogginghouse.bandcamp.com/track/something

They also seem to display the rights for an album - I'm guessing they store that separately rather than somehow "merging" the rights for all the tracks...?

@chrislo
Copy link
Member

chrislo commented Jan 11, 2024 via email

@rosschapman
Copy link
Contributor

👋🏻 ☺️ I've been chatting with Chris about this task. Going to take a look this week and see if I can't send up a code spike.

@rosschapman
Copy link
Contributor

rosschapman commented Jan 31, 2024

Well, I ended up just going for it today 😅. Here's a draft comparison diff on my own fork as a gut check before I polish some things and open a PR: https://github.com/freerange/jam-coop/compare/main...rosschapman:jam-coop:adds-album-rights?expand=1&w=1

And here are some of my operating assumptions, open for discussion. I want to make sure my theory of the code ends up being consistent with your established practice, vision, understanding, etc...:

  1. The new domain object is a "License"
    Although I don't love this name because a copyrighted work with "all rights reserved" isn't technically a "license" per se? I don't know enough about licensing yet. Is there an alternative?
  2. Licenses have a text description, code and url attributes
    The code attr is intended as a machine-readable string for various usages on the platform. url is useful for hyperlinking to source documents for CC licenses; perhaps other usages. The data structure is influenced by how Spotify handles the "copyright" attribute on Album data for their web api:
    "copyrights": [
    	{
          "text": "(P) 2012 RCA Records, a division of Sony Music Entertainment",
    	  "type": "P"
    	}
    
    I researched some other music apis -- Soundcloud, Last.fm, Apple Music -- but they don't seem to include copyright or licensing data anywhere (although I could have missed it). Sadly there doesn't seem to be a strong data standard for music? I also didn't notice pertinent guidance in the Open Music Initiative documentation related to copyright or similar. 🤷‍♀️
  3. I've made the License relationship optional
    But perhaps it should be required? Or maybe "all rights reserved" as a default? What do artists want?
  4. Licenses are intended as static data in the database
    I added a dev seed assuming we might want to lock down a particular set. We could eventually slap an admin screen somewhere to manage these.
  5. I tend to like writing system tests, since they conform to behavior and real usage.
    How are y'all generally thinking about coverage?

Thanks in advance for any feedback. ☺️

@chrislo
Copy link
Member

chrislo commented Feb 3, 2024

@rosschapman - this looks good so far, I like your modelling approach.

  • I think License is an appropriate name for the model.
  • I think text for the human-readable text and code for a symbol are good attributes. I might make code an enum type for the different licenses we have (maybe adopting those used in bandcamp in the first instance).
  • I think the license relationship should be required and all rights reserved used as the default, since I think almost everywhere an artist would own the copyright of their own work by default unless they signed it over.
  • static data for the licenses sounds fine to me. I think you could potentially store the code in the database and have the text in a view helper or similar.
  • system tests testing the "happy path" and controller/model tests providing coverage of edge cases tends to be what we try to do, but we don't have any hard rules about it. Some test coverage would be good if you can, but shout if you need help.

@rosschapman
Copy link
Contributor

@chrislo thanks for the feedback. Following up on a couple points:

  1. I'll look into enum implementations for Rails (ActiveRecord::Enum), although I'm not too familiar yet. I'm glad Rails has some convention for this because IME declaring the values at the application level vs creating an enum type in postgres allows a more adaptable approach (ie, app code is easier to change than DDL).
  2. Actually, I think like the idea of a view helper for the license text better. That's less developer/ment overhead up front. If eventually it makes sense for that data to be encoded at the db level, it's easier to make that change later than move back to strings in code.

@chrislo
Copy link
Member

chrislo commented Feb 4, 2024 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants