regarding beats with the same name … yeah, I’d say having two with the same name goes against what most people are used to. Allowing two with the same name allows for disorganization, allowing duplication. Since you’re not using a hierarchical classification system, aka nested folder system, you’re putting everything in one flat location. The name for the user is the ID. Something has to be used as a reference, something meaningful.
There’s only one band with the name “Rage against the machine,” you know who they are, because they are the only one with that name.
Tagging has its strengths, similar to composition over inheritance, but similar to inheritance, hierarchy of traditional directories has its purpose too. “Classification” is hard, I mean classification, not categorization … meaning item X can only “be” of one type.
Heavy Metal / 80s music / [anything here must be both Heavy Metal and 80s music.]
Tagging + Folders can exist together, providing best of both.
Honestly … I’m so used to using folders. Tagging is kind of more work. It totally has a purpose, it allows you to have one thing be of more than one type. But the act of tagging is work.
If I have a folder named 80s music, by artist XYZ, and now I’m inside of that folder, I know anything I create while in there is 80s music of artist XYZ, … I don’t have to pick those two tags over and over for each new item within those folders, like you would have to do if it was tags only. And imagine of if it was multiple levels of classification.
I give you massive credit, the stuff you’re solving for is hardcore. It’s essentially the same stuff that Google or any other cloud service technology has engineered. There’s so many decisions that go into this stiff.
I haven’t given the meta data syncing much thought … but try to think of both file names and tagging from the perspective of what keeps people and “promotes” good organization. What keeps single sources of truth. It’s essentially coming down to syncing. Intelligent ways of resolving conflicts, meaning file/meta conflicts. I wouldn’t try to be Git for beats, like … I wouldn’t try doing merges, but simply do it like a file system. If two files/beats exits with the same name, then you need to let the user know. They need to reconcile it. You could either add an extra number to the file:
Cool Beats (1) is created when Cool Beats already exists. Or simply prevent the operation from happening and letting the use know. I’d say tags could be synced too.