top | item 9889057

Show HN: Actor Messaging platform

110 points| ex3ndr | 10 years ago |github.com | reply

38 comments

order
[+] ex3ndr|10 years ago|reply
We asked (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|10 years ago|reply
Thanks so much!

Is there anything HN community can help you with?

[+] wiradikusuma|10 years ago|reply
Is this like Atlas from Layer.com? I.e. open-sourced client SDK for their proprietary messaging platform?
[+] ex3ndr|10 years ago|reply
No, it is completely open source with server too. This is main difference from Layer.
[+] 0xdragon|10 years ago|reply
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|10 years ago|reply
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.

[+] sandGorgon|10 years ago|reply
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|10 years ago|reply
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

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.

[+] ex3ndr|10 years ago|reply
Actually for network layer we need to implement much more complicated things: replace TLS. This is dangerous, of course. But TLS is source for HUGE lags in networks because of it's triple handshake. And on mobile networks ping usually big and application can try to connect in several seconds. When you remove TLS (like QUIC) then time to connect drops to 200ms and you don't need to wait for successful connection that also reduces latency. This is level of quality that Actor Platfrom try to satisfy.
[+] posnet|10 years ago|reply
The use of unicode in the source is interesting. ← and ⇒
[+] CatsoCatsoCatso|10 years ago|reply
Could you link to the sources you're talking about? That sounds interesting.