
Ask HN: I wrote a Slack compatible server. Can I open source it? - sysk
I had to implement a chat server for a project I&#x27;m working on and since I had never done this before, I used Slack&#x27;s documentation as a roadmap and ended up re-implementing pretty much their whole API (I went a bit overboard I know).<p>I would like to open source this code but was wondering if it was legal for me to do so or would I be infringing on Slack&#x27;s IP.
======
ChuckMcM
In general, re-implementing a software product from open specifications has
been protected by the courts. There are numerous examples, from the original
IBM BIOS to Microsoft BASIC to PostGres and BSD Unix. That said, the Google
case is casting a shadow on programatic APIs, but 'look and feel' are
essentially fair game.

What are protected and protectable are Trademarks. So using the word 'Slack'
in the name or anything that looks like it came from the Slack web site (see
the recent "Open Trello" flare up) will cause you legal issues and should be
avoided entirely.

The most interesting "middle" case is if you want to host third party
integrations which work on your system and Slack's then you're going to get
some push back. But again, caveat things like patents, being enough workalike
(or my favorite phrase bug-for-bug compatible) is well trodden and has
consistently been shown to be ok. (see the latest Keurig fiasco for that!)

~~~
gergles
Can you share more info on the "Open Trello" thing? I didn't hear about that
and it sounds interesting to see how it was resolved.

~~~
toomuchtodo
[https://news.ycombinator.com/item?id=8936701](https://news.ycombinator.com/item?id=8936701)

[https://github.com/libreboard/libreboard](https://github.com/libreboard/libreboard)

[https://github.com/libreboard/libreboard/issues/92](https://github.com/libreboard/libreboard/issues/92)

------
kaolinite
I'd do it, but keep the references to Slack to a minimum. So, don't call it
"OpenSlack", for example. Just give it a nice name, mention that it's Slack
API compatible and you should be fine. At most, I suspect they'll just C&D you
and then you say sorry and take it down. I can't imagine you'll get in any
trouble.

Not a lawyer though.

~~~
jakejake
I'd agree with that except the part about mentioning Slack compatibility. I
wouldn't mention Slack at all without their permission.

Since the OP says that this is for another project, they might get not only a
C&D for the chat code, but the original project might be infringing as well.
Even if it's not actually infringing, it might result in some legal fees.

------
lmm
APIs themselves aren't copyrightable, as we saw in Google's recent lawsuit.
The documentation is though, so be sure you're not infringing on that.

Any license agreement you or your company have with Slack might "ban" you from
doing this; you might e.g. lose your access. That will be a contractual matter
between you and them though, not anything criminal.

IANAL; you should probably get actual legal advice.

~~~
desdiv
>APIs themselves aren't copyrightable, as we saw in Google's recent lawsuit.

The most recent ruling said that APIs, by themselves, _are_ copyrightable[0].

The case is back to the district court now to determine whether the wholesale
copying and reimplementation an API falls under the fair-use defense.

[0]
[https://en.wikipedia.org/wiki/Oracle_America,_Inc._v._Google...](https://en.wikipedia.org/wiki/Oracle_America,_Inc._v._Google,_Inc.#Appeals_Court)

~~~
sysk
Depressing indeed. Are there any other open source projects that are API
compatible with a proprietary product/service? Is it ethical? I feel like it
is but would be interested to hear HN's opinion.

~~~
dsr_
A blackbox implementation (no access to original source code) is clearly
ethical. The purpose of an API is specifically to allow interoperability with
software that you don't write; the presence of a competitor (open source or
not) who re-implements the server side of your API is a Good Thing for a
competitive market place.

~~~
masukomi
to extend on that idea, I'm fairly certain that a "clean-room" reverse
engineering of a competitor's product HAS been shown to be legal. That is to
say, as long as you can prove that the person(s) doing the reverse engineering
didn't have any access to proprietary information about the workings of the
product they were reverse engineering.

~~~
treffer
The classic example is the reverse engineering of the IBM BIOS for 'IBM
compatible' machines. And it was done with 2 teams, one analyzing and one
implementing.

But that predates my existence :-)

------
waffle_ss
IANAL but I don't think API compatibility is infringement[1]. At least, I've
seen projects that advertise this as a feature - for example, errbit[2] is
API-compatible with Airbrake.

[1]:
[https://en.wikipedia.org/wiki/Application_programming_interf...](https://en.wikipedia.org/wiki/Application_programming_interface#APIs_and_copyrights)

[2]: [https://github.com/errbit/errbit](https://github.com/errbit/errbit)

~~~
masukomi
That's because AirBrake made their plugin open-source. Errbit was making their
product api-compatible with an open source project.

------
jtokoph
If you do open source it, don't use Slack in the name

~~~
colinbartlett
That's really the key.

Recall CentOS before RedHat was brought back into the fold. RedHat was always
referred to as PNAELV, a "Prominent North American Enterprise Linux Vendor" to
avoid running afoul of trademark issues.

------
joeyspn
What technologies did you use? XMPP? Node? ... I don't think your are
infringing any copyright as long as you are not making profit from it. Reverse
Engineering is legal, specially when done with the aim of interoperability...
and what you are seeking is an interoperable server right?

[http://en.wikipedia.org/wiki/Reverse_engineering#Legality](http://en.wikipedia.org/wiki/Reverse_engineering#Legality)

~~~
sysk
Ah, interesting question. I had never implemented a chat server before and
initially read the IRC/XMPP specifications but Slack felt like a "superset" of
both (federation/p2p wasn't a priority for me) and I was more familiar with
web protocols.

The stack is Node.js and PostgreSQL (I probably reinvented some kind of
message queue). There is a "dumb" websocket server that just receives/sends
events from/to the backend server. Both the websocket and backend servers can
scale horizontally.

I haven't written any XMPP/IRC gateways for now though I suppose it wouldn't
be that difficult to do.

~~~
onyxraven
Fun. From everything noted about Slack, thats all they've got as their 'core'
as well (PHP/MySQL I think, with maybe nodejs websockets).

~~~
toomuchtodo
[https://twitter.com/SlackHQ/status/500007057937145856](https://twitter.com/SlackHQ/status/500007057937145856)

[https://twitter.com/SlackHQ/status/521894442064560128](https://twitter.com/SlackHQ/status/521894442064560128)

[https://twitter.com/SlackHQ/status/458391373994270720](https://twitter.com/SlackHQ/status/458391373994270720)

------
a-dub
Slack is pretty much just IRC with an indexer, a pretty web interface, a
mobile interface and a bunch of of cool datafeeds/bots. These things aren't
hard to build, and many people build them internally in companies all the
time.

Their value proposition isn't the technology, their value proposition is the
packaging. It all just works. People actively maintain the interfaces and the
GUI. They have ops teams that keep it up. The integrations are maintained and
are literally plug and play. You can pretty much just sign up and within an
hour its all done for not much money.

For these reasons, I have doubts as to whether or not they'd mind, regardless
of IP concerns.

------
charlesdm
No clue where you're based, but in the EU, this is legal. You are allowed to
replicate and reverse engineer systems, as long as you do not use the original
source code.

APIs/functionality/data models/etc can't be copyrighted (again, in Europe).
See
[http://www.bloomberg.com/news/articles/2012-05-02/copyright-...](http://www.bloomberg.com/news/articles/2012-05-02/copyright-
can-t-block-software-reverse-engineering-court).

------
samwillis
You could ask Slack if they would mind you open sourcing it?

Just make it clear that the only reference to Slack is when you say its
"Compatible with the Slack API".

------
dmourati
IP can be broken down into its constituent parts. Patent, Copyright,
trademark, and trade secret. The rules for each are different and sufficiently
complex that the question should be treated as these four parts.

------
jacquesm
Without a lot more information your question is un-answerable.

For one, the jurisdiction that you're in is critical, for another the process
is in some cases as important as the end result.

You should consult a lawyer that you pay for.

------
dvdplm
Did you manage to connect the regular Slack client to this? Is it enough to
redirect the traffic to "myorg.slack.com" wherever your daemon is running?
That would be kinda neat.

------
alazar
Host it in China and advertise directly to their current customers.

------
cp9
talk to an actual lawyer

------
tzury
For a solid advise, talk to a lawyer.

------
jkot
If you would like to use it as a reference, and dont want any sort of
troubles, make sure it does not reach mass adoption. Some exotic build
instruction or complicated deployment will do.

