Hey! Just installed Plex yesterday and I love it already! As a software engineer myself, I can tell that an incredible amount of nuanced work has gone into making Plex an amazing product. Keep it up!
So right now my number one feature request is to support custom columns. That is, not just custom tags, which is just the enabling of arbitrary values to be associated with existing attributes/columns (like Album Collection), but custom columns like Composer, Composer Birth Year, Composer Death Year, Year Composed, Lyricists, Comment, etc. This would solve all my organizational woes and probably solve a lot of other peoples’ as well.
Related issues
This would partially address ID3 Tag support for ROBUST music library organization.
Current workaround
The workaround I’m doing right now is to overload fields with multiple data points, e.g. Album is something like “<Work> — <Album name>”, and Artist is something like “<Composer last name>, <Composer first name> (<Composer birth year> - <Composer death year>) — <Artist name>”. It’s not pretty, not easy to sort, and requires acrobatics to break up albums when there are multiple composers in an album. So far I’m editing all my metadata programmatically since it’s more robust that way. There’s definitely a better way to do this.
Implementation ideas
I’ve seen on the forums that Plex uses a SQL-based database (SQLite?). One idea is to enable DDL statements when a user creates or deletes a custom column. To avoid collision with future “built-in” columns, you can append a suffix to the column names kind of like Salesforce does it (e.g. composer_first_name__custom or something). You should probably also enable the setting of a column type (kind of like Airtable does it) so not all columns are just text, and index the column for easier sorting/searching.
I’m thinking of this being done particularly for music at first, but the same principle applies to other media. Mainly I’m thinking of Tracks having custom columns, but Albums etc. could have custom columns too. You’d have to work out how column inheritance would work. Likely each entity’s columns should be unrelated to the columns of each other entity, so e.g. Albums shouldn’t inherit the custom columns of Tracks even if every track in the album has the same value for that column.
Anyway here’s to the continued improvement of great software! (@elan et al.)