TooTallNate / node-icy

Node.js module for parsing and/or injecting ICY metadata
MIT License
291 stars 48 forks source link

Please consider renaming your project, the name is misleading #20

Closed dm8tbr closed 9 years ago

dm8tbr commented 9 years ago

Hi, Icecast maintainer here, just found out about your project.

I appreciate the work you've put into creating a streaming server on node.js. Could you please consider renaming your project though, as it is not actually Icecast, but an implementation of the ICY streaming protocol as originally introduced in Shoutcast and as legacy protocol present in Icecast. Icecast supports proper HTTP streaming of many formats, especially free formats using the Ogg container like Vorbis, Opus, Theora and WebM video, in addition ICY based streams are working too.

I think it would get you the recognition for your work and avoid us both the confusion of people looking for Icecast.

Thanks in advance.

TooTallNate commented 9 years ago

Hi Thomas. I appreciate your concern here. Has the name caused any inconvenience/confusion in your circles up to this point?

Also, can you describe what you mean by "Icecast supports proper HTTP streaming of many formats". I believe that my library can handle arbitrary formats just fine, so I want to make sure I understand your concern on this part.

rillian commented 9 years ago

Icecast is a trademark of the Xiph.Org Foundation. You're dealing directly with streaming media, so confusion is inevitable.

Looking at the docs, perhaps something icyhttp would be a more descriptive name? It looks like you only handle the ICY method of interleaving metadata used on mp3 and aac streams.

ePirat commented 9 years ago

In case you don't want to read the whole explanation below, which also contains a lot of historical context to explain the problem further: _tl;dr: The name is just wrong and you contribute to confusing people about that._

I appreciate your concern here. Has the name caused any inconvenience/confusion in your circles up to this point?

Well, actually your library has nothing to do with Icecast. You are confused about something, I guess, like many other people are, and by naming it “node-icecast” you contribute to that confusion and make this problem worse. To understand better what I mean, let's go a bit back in history, when Shoutcast was created. They wrote a (not limited to) mp3 streaming server and were face with a problem: How to do mp3 metadata streamable? One solution are ID3 Tags, they work fine but are not streamable, so they came up with their own solution, called ICY Metadata. As you might know, this works by specifying an interval where metadata are found and the client has to parse and remove them before playing the stream. That is exactly what you are implementing, and after all has nothing to do with Icecast. So if any name, related to a Streaming Server would fit, it would be node-shoutcast.

Shortly after Shoutcast, Icecast was born, as an open source alternative to Shoutcast, and the ICY Metadata thing was already quite popular and some clients already implemented it, thats's why Icecast supports those. And after all there is no other way to properly inject metadata into an mp3 stream, as it has no appropriated container format which supports that.

Also, can you describe what you mean by "Icecast supports proper HTTP streaming of many formats".

Some time has passed now, since we were blessed with mp3 and things have moved on. At least a bit. New great free alternatives to mp3 were developed, for example Vorbis, which has a proper container, Ogg. The great thing is, that those have proper support for Metadata. Since these support much more metadata with proper timing and a lot of information, those are used by Icecast. Therefore Icecast will not use ICY Metadata for anything else than mp3 and no one should ever use those for anything else than mp3, since they are just very bad designed.

Given hat your library only supports the old ICY Metadata format, it should be named node-icy or node-shoutcast and not node-icecast, as it is just misleading. Yes, your library is able to parse the metadata out of mp3 Icecast (and Shoutcast) streams, but that's not a valid reason to name it node-icecast, as people could assume it is a node implementation of Icecast, which is not the case.

TooTallNate commented 9 years ago

Thanks the the detailed explanation, makes a lot of sense to me now. Unfortunately, icy and shoutcast are already taken as package names on npm, so I think I'll rename to icy-parser. Does that work for you guys?

ePirat commented 9 years ago

so I think I'll rename to icy-parser. Does that work for you guys?

Good name choice, I think!

rillian commented 9 years ago

Thanks!

TooTallNate commented 9 years ago

Was able to nab the icy package name actually. Thanks for the nudge guys! I feel better knowing that I'm lessening any open source confusion :dancers: