Hacker News new | past | comments | ask | show | jobs | submit login
Mars – A cross-platform network component developed by WeChat (github.com/tencent)
88 points by qixinghaitang on Dec 29, 2016 | hide | past | favorite | 25 comments



Pardon my ignorance, but I tried reading through the page and could not figure out what this is or does. Can someone point me to a quick summary or overview?


It has a lot of overlaps with other network frameworks such as OkHttp, AFNetworking, cronet, etc., but I think it main contributions are these two components:

Xlog: in memory mmap log for fast logging and also supports encryption. Xlog log enables them to log everything fast and "safely" even in production build to quickly identify bugs.

STN: short and long TCP connection manager, which is optimized for various networks in China.

Plus other network utilities to make development easier.


Out of curiosity, is XLog better than the app simply logging everything to STD out, then let the invoker worry about the storage?


Depends on what the invokers wants. If the invoker only wants to log things to disk and read those logs later, surely he can do it himself. What XLog provides for the invoker under the hood is essentially performance: the invoker can log lots of things and does not need to worry about IO speed, disk space, and log safety. And of course it's cross platform. A detailed performance analysis is here (in Mandarin Chinese): http://mp.weixin.qq.com/s/cnhuEodJGIbdodh0IxNeXQ


an AFNetworking/OkHttp alternative written in C++ and use socket instead of HTTP


So id could be used to avoid proxy capturing your requests?


i think it's more about performance. Wechat ha HUGE amount of users in China, an low level socket connection would get better performance than a standard HTTP request


This looks like a cross between OkHTTP and a jobqueue (like https://github.com/WhisperSystems/jobmanager or https://github.com/yigit/android-priority-jobqueue).

But I think this is the first cross platform framework that does this.


Can you explain what is the definition of cross platform here, I mean in which part of it is "cross-platform"? Is Realm also consider a cross-platform database solution for mobile?


The library itself claims to be cross platform. It has libraries available for iOS/Android/windows mobile.

I'm not sure about Realm..But I was talking in context of the job manager and network libraries.

But I suppose you could SQLite as cross platform.


I guess there are two ways to define cross-platform. The obvious one is the software being available for more than one platform, but since that could really be accomplished with two separate implementations, there is also the more generic definition as a piece if software that is build in such a portable way that it can easily be ported to any platform.

Since Realm is available for iOS, Android and Linus from one code base(and open source, so you could port it to other platforms) I would definitely term it as being cross-platform.


I hope this contains the code that makes Wechat connections work so well on the often intermediate/slow/bad connections in China. Because then most companies can learn something from it (looking at Skype, Slack etc here which are horrible with bad connections).


Im surprised no one brings up how bad Slack's infrastructure or backend design is. It's my slowest app from launch to signed in and can see the latest message.

In the old days MSN messenger was faster.


So it's not just me! I have issues with Slack quite regularly, from messages simply not appearing on web (usually iOS works fine) to the app not being able to reconnect without a hard refresh. Add to that the slow 'boot-up' and memory usage and all in all the experience is quite disappointing, especially for such a loved product where good connectivity should be a core requirement.


I think I read somewhere the client is hybrid? That does not explain the very bad connectivity but could explain boot up and memory. I find it quite weird that so many techies adore it to be honest.


Oh yeah, it's most definitely a 'web app' packaged as an executable.

I mean, I get why people like it. When it works it's a pretty decent experience (and I grew up with IRC).


The popularity of Slack despite their horrible apps never ceases to amaze me.


It makes Slack unusable for me from my house and in China...


Great to see a open source project from WeChat. WeChat is extremely viral in China. I am sure there is some amazing engineering work underneath.


The language barrier has been their main issue, they'd definitely would love to collaborate more with teams outside of China I know. They have an astonishing amount of dev resources as well, they wrote an entire cloud platform (they're at maybe 10% of AWS) from scratch, in C.


> entire cloud platform (they're at maybe 10% of AWS) from scratch, in C

Impressive. Any link to this? I'd love to take a look.


In C++ actually.

Few years back Tencent had three internal teams making Wechat, the GuangZhou based Foxmail team won. Wechat IM protocol is basically a modified version of Microsoft Exchange.


Their public cloud is http://qcloud.com/, I don't think everything they've written on the backend is public however.


It has nothing to do with WeChat. qcloud is developed by TEG (Tech. Engineering Group), and the cloud service for WeChat is developed by WXG (Weixin Group).


What is China's Super-App "WeChat" and how China is changing your Internet https://www.youtube.com/watch?v=f-YuU3J-YV0




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: