
Show HN: Actor Messaging platform - ex3ndr
https://github.com/actorapp/actor-platform
======
ex3ndr
We asked
([https://news.ycombinator.com/item?id=9757243](https://news.ycombinator.com/item?id=9757243))
what we can do with our project and make a promise that we will release it to
OpenSource. Here we are!

~~~
jakozaur
Thanks so much!

Is there anything HN community can help you with?

~~~
ex3ndr
Maybe someone wants to unite to build something bigger. We have awesome
quality messaging, but it is nice to have voice/video. Also for voice/video it
is good to have messaging too. Maybe someone building encrypted email
provider? Or just email provider? Email and Messaging are good together. File
sharing? Aero FS? We can integrate messaging in any service, and it can look
like "chat heads" of Facebook. Imagine, from any task in Issue Tracker you can
open conversation with an author of issue/comment? Nice! No one has done this
yet.

"Actor" is named after Actor Model, where Actors are small valuable pieces of
code that can integrate with other Actors of different kinds. The same idea
can be for services, build deeply integrated experience of tools that we are
using.

This is dreams, but i have not evidence that they can't be true.

------
wiradikusuma
Is this like Atlas from Layer.com? I.e. open-sourced client SDK for their
proprietary messaging platform?

~~~
ex3ndr
No, it is completely open source with server too. This is main difference from
Layer.

~~~
wiradikusuma
Thanks! I'm in the early stage of evaluating Atlas/Layer, and I think I'll
play with your product this weekend. How do you plan to make money? I don't
see any "Pricing" page.

~~~
ex3ndr
We don't know how we will make money. Currently, we provide consulting and
implement features for money. Maybe at some point donations, but i never ever
seen that donations can help build big and complex stuff like this. I believe
that if Actor will be quite popular we will find some way to do money, this is
what i learned from my experience at Telegram.

------
0xdragon
This is great! Any chance of making it so that it can use email instead of SMS
in the mobile app though? SMS gets expensive really quickly in Australia.
Thanks again! :)

~~~
ex3ndr
We provide SMS authentication for free. If it will be costly for us, then we
will switch to Twitter's free sms authentication solution.

But we have email authentication now and we just not implemented it apps. We
also can to do OAuth2 authentication.

~~~
0xdragon
Yeah, that's what I meant. Is it possible to get mobile app authentication
working with email?

Thanks!

------
sandGorgon
why did you not use something like websockets and layer on your security layer
?

I see you have done a fair bit of sophisticated work inside your "core-async"
library. Was there nothing like socket.io-client, etc that you could have used
for your transport layer and on the android client side ?

~~~
ex3ndr
core-async is extension of core project for async environments with real
multithreading. It is mostly contain working with data and syncing it with UI.

If you is interested in protocol, you can read docs:
[http://actor.readme.io/docs/protocol](http://actor.readme.io/docs/protocol)

Sources of networking is inside core project. You will see how really
complicated it is. Networking layer are also handle cases when servers are
crashing randomly and restoring everything on clients after restoring.

We reimplement low-level networking because all underlying protocols are still
bad. TCP usually freezes randomly especially in mobile networks. (this is very
long story and i will post something someday about this) WebSocket (that we
are actually using) are freezing too.

Good protocol is QUIC from google, but it is written on C++ (i don't like it)
and quite new.

Also most of the libraries a buggy, we implement simple and time-proven
solution (that was done when i worked at Telegram).

Also I can't believe in socket.io because we are able to handle 1M connections
per server and no one on Node.js ever available to do this.

~~~
tinco
Thank you for sharing the code! I read through your documentation and noticed
there is documentation of server-client but not server-server. How do you
achieve a multi-server architecture? Is it simply to scale the Postgre
database and connect more server frontend to it and load balance over those
frontends? Or is there some inter server protocol as well?

~~~
ex3ndr
Actor is built on top of Akka that have built-in support for node-to-node
communication. When our CTO will wake up, he will answer in details how it
works.

~~~
tinco
I'd be very interested, but I'm sure he has more important stuff to do :)

------
posnet
The use of unicode in the source is interesting. ← and ⇒

~~~
CatsoCatsoCatso
Could you link to the sources you're talking about? That sounds interesting.

~~~
prettynatty
[https://github.com/actorapp/actor-
platform/blob/master/actor...](https://github.com/actorapp/actor-
platform/blob/master/actor-server/actor-peer-
managers/src/main/scala/im/actor/server/peermanagers/GroupPeerManager.scala#L128)

~~~
gh0zt
Those are just Scala unicode operators [http://scala-
lang.org/files/archive/spec/2.11/01-lexical-syn...](http://scala-
lang.org/files/archive/spec/2.11/01-lexical-syntax.html#identifiers). They are
equivalent to <\- and =>

