Cosmos Browser – Connect to the Internet via SMS, no data or wifi required
github.com
github.com
Do not get discouraged by all those people who are telling you that its too expensive. Those guys are sitting in behind a high-speed access and don't seem to look beyond the horizon, that sometimes its not about getting 2GB across with SMS (really? ... I mean... REALLY?!), its about getting basic access to information. Not every country is as awesome as the US or Europe in this world. Not everyone is free. And not everyone uses the internet the way we seem to got used to it.
Keep up the great work, its an awesome idea. For sailors, for people without access to internet, for quite a bit of an audience we like so much to forget. Keeping it open and turning down VC firms is even better.
GREAT JOB!
However, simply stripping the junk out of web pages for mobile delivery has real promise. Just put all third-party content on "load on user request only", like mail attachments.
That would be pretty cool for a normal web browser too.
EDIT: I'm also part of the team, that comment looks really strange out of context.
We don't have specific monetization plans yet, but we're probably going to do some sort of donation system, or maybe ads (through wifi). No idea though, it is pretty expensive.
Assuming the average user gets only one burst of three messages per query, uses it only twice a day for 200 days a year and the service gets only 10,000 users signed up, the costs just to send the texts for the next year alone would be $90,000.
Seems like it will be hard to scale but I agree that this is a really cool way to get connectivity! Best of luck.
Seems reasonable to think that you might pay $5-9/mo on a budget for a limited access to internet such as this; now it sounds like potentially economically viable to even have an employee or two after paying for all the texts.
If they can just get those SMS costs down it would be much easier to scale.
They also aren't entirely free to the operators themselves - once you start counting them and charging for them, there are administrative costs; then there are costs related to interconnections with other operators, and costs related to maintaining their own SMSCs (SMS centers). The only thing in this whole mechanism that the operator gets for free (actually not free since they have to pay for the network and base stations) is the delivery channel which is not insignificant but it is also just one part of many.
Kudos!
US pricing for texts seems much more extortionate, for some reason..
Unfortunately that does introduce additional complications like knowing which packet failed (maybe there's a better method for checksuming for this type of situation?), but even in the worst case scenario, it only adds a small overhead to infrequently resend the entire stream than to double up each stream with ACK responses.
Ideally though, you'd be right that something more concise would be preferable.
Any cuttings in data transfer have a huge return in less costs and faster replies.
The few options out there are focused on email and expensive. To get an idea: sailmail.com offers email-only SSB (single side band) for $250 / year.
SMS is the most expensive data service on the planet. It costs more per byte to send SMS then it does to send data to Jupiter (factoring in the space ship you had to launch there to receive it).
WhatsApp's entire business model is based on the fact that SMS is just stupidly expensive.
So there are definitely places where SMS is cheaper than data access. In the US it's inverted purely due to the business model choice of the carriers.
Try to push high volumes through it, and expect to see SMS's delayed - SMS can be delayed for hours at the whim of the operator - or simply dropped, at the whim of the operator. Or simply rate limited.
This generally works out well until people figure out creati e ways to consume levels of service beyond the effective limit -- then the service provider is oversold, and it's either underdeliver or invest in living up to new demand (probably financed with a price increase).
>>> (2<<30)*8/(160*7)
15339168
You can send an amount of data equivalent to 13,421,772 SMS with 2GB. That's almost 6 SMS per second on average. I'm sure "unlimited" SMS has a limit much lower than 1M SMS.For all of those countries where maybe the best speed for internet is EDGE or GPRS, but where SMS are cheap, if not unlimited, this service is huge. I don't think the target is rich western world with LTE.
The backend takes the url, gets the HTML source of the website, minifies it, gets rid of the css, javascript, and images, GZIP compresses it, encodes it in Base64, and sends the data as a series of SMS's.
This is yet another interesting idea that will get screwed up in practice because of massive overreliance on JavaScript in modern web development. This is why developers should do progressive enhancement. There are a lot of thing that are possible with declarative markup that are not possible or not safely feasible with imperative code, which generates things on the fly.
Google also shows javascript-only content in search results now.
Also, very few companies and no individuals will have the same technical capabilities as Google with it's horde of developers, years of experience in the domain, billions of dollars and ability to control everyone's visitor stream. They shouldn't be the only company that can effectively innovate in this field.
Here in Brazil internet on mobile is expensive and limited, and the SMS is easily found free and unlimited. This project can potentially improve mobile Internet here.
Remember me the Opera Mobile case that was largely used in Africa where 3G was too much expensive. I remember to saw in some news that Opera brought digital inclusion to many African countries with their browser that basically shrink the requested pages at server side before sending to the phone.
I don`t know about the speed and reliability, but at least, it would be a option.
They could gain a lot of efficiency by using a 127-entry index table (or 128 if the ESC character doesn't need to be avoided - I don't know how the Android SMS APIs handle it) rather than a 64-entry one.
Hell, this might even be faster than loading stuff over WiFi.
UC Browser aggressively optimises for page size by cutting out javascript and sending out only 10 kb segments at a time.
I owned an old Nokia feature phone and used to browse the internet all the time almost as if I had a smartphone with a good internet connection.
On slow 2G connections here in India UC Browser can be a god send.
But there are privacy risks.
Is it a web browser? If so, then I don't see the point. Why not simply write some kind of driver that does IP over SMS; then any app that uses the net could connect that way.
(And if it isn't a web browser, then why "browser"?)
But we might take it as a negative comment on the modularity or ease of configurability of the environment supported by Android (or, more generally, by Linux).
Reminds me, though, of Georgia Weidman's Smartphone Pentest Framework[1] which provides tools to hack a target smartphone and from there create a data connection via SMS via which you can then access a firewalled corporate network using SMS over the cell network as your tunnel in. I've seen it demoed, and it's frankly incredible.
[1] https://github.com/georgiaw/Smartphone-Pentest-Framework
- It bets on technology going backwards rather than forwards (i.e. will have cheap android phones with cheap data plans before you can scale it)
- It doesn't provide much more than novelty self promotion. "Hey i made a webpage deliver via SMS"
- Its usually more expensive and time-consuming to produce what almost always becomes an inherently inferior product.
Even most countries in sub-Saharan Africa has at least GPRS - most of them have 3G. Some of them are deploying LTE. Certainly there will be areas where for some time still there will still be limited data access, but the question is how many of those areas actually has functioning cell coverage.
Here is my self-promotion:
* http://nerdhow.net/uzblsms-a-way-to-browse-the-web-via-text-...
* and of course I had it on Hacker News: https://news.ycombinator.com/item?id=5835365
It's open-sores and free to set up and use (if you have a text plan) It would be pretty easy to turn it into a sms terminal which might be negligibly more useful (using a PTY with the kbd is easier than using an X Server). I guess the OP's project and mine would be perfectly equivalent if anyone's written a text-only, line-based browser, but I stopped short of this. Maybe someone else will make one? (:
My biggest takeaway from the whole project was how easy it is to fall into the trap of doing something just to be able to pat yourself on the back. Real altruism isn't this cheap.
By far my favorite unintentional turn of phrase I have seen today :)
Assuming the user has to other internet access, you could offer access to the login / payment / info pages for free. However, you do need some secure sms payment option. I believe all current sms payment options are operator dependent. A huge business in Africa if I recall correctly. An independent version might be another opportunity ;-)
Calling my number and using the good old dial-up method sounds much more efficient actually. Isn't the bitrate around 128kbps in normal calls?
> The phone recieves this stream at a rate of 3 messages per second
So note that's 180 text messages a minute maximum throughput, not thousands.
I think you raise an interesting question of if it might be faster to implement a software modem over your voice connection, but I also have no idea if that's actually feasible or not.
(will various kinds of digital audio compression or filtering get in the way? I dunno. Can android apps easily get access to the voice audio stream in the way they'd need? I dunno.) (it'd certainly be a lot harder than letting the SMS network take care of the transmission layer, at any rate). (But yeah, if internet over SMS is a cool hack, then internet over software modem over audio would be even cooler!)
In fact, isn't that what the "read it later" type apps do? I'll bet there is a free js library that already does the detection or you.
We have a platform that enables access of internet services over sms, i did the android app which enables accessing all the content offline as well.
I was going to ask how you direct the SMS to the app, but taking a quick look at the src, it seems the app reads the sms inbox, looking for the specific phone number?
I guess this means that:
- the user sees alerts for the incoming sms?
- the user needs to delete (does the app/could the app do that?)
Great stuff, really interesting. Thanks for sharing it.
The browser contains same basic stylesheets and the user can change this (h1,h2,p,...)
Keep the link functionality with # (for single page apps) somehow, for links {{the text}{the link}} could be used.
Strip everything else.
While there are higher bitrate codecs, a full-rate GSM channel is only about 13 kbps, and depending on radio conditions the voice data may be compressed down to half that or even less.
For comparisons, when landline connections are digitised, it is typically compressed to a 56kbps or 64kbps channel.
I know that SMS plans are often "unlimited" in the US, which is why (at least from what I've seen) WhatsApp is far more popular in Europe.
But I've thought about building HTTP-over-WhatsApp. Mobile providers here offer prepaid contracts where you don't pay for WhatsApp access, regardless of your balance or traffic remaining.
The issue is that it quickly ends up costing about the same amount as a data connection would in the first place.
Unfortunately, voice calling uses lossy compression, so your data rate would be somewhat limited as you struggle to be 'heard' over that.
That by itself could get you up to about 0.5kbps for text with decent compression, with no other effort.
I think we lost that feature in the transition to 3G.
Yeap, except voice is now carried over a digital channel, so it'd be digital-over-voice-over-digital :)
Over a cell phone connection you will get much less. GSM data modems gets to bypass the voice codec, and are still limited to 9600 bps. An acoustic modem over a GSM connection will get less than that, if it will connect at all: A full data rate GSM code is compressing the audio down to about 12.2kbps using codecs geared towards reproducing voice as well as possible, which is going to be brutal to a regular modem and far more wasteful than GSM data.
I'm guesstimating you'll find an upper bound, assuming "friendly" telcos that don't start rate limiting, or dropping SMSs, at no more than about 6kbps. Quite likely less.
GSM data (which is normally possible anywhere where you can get a GSM voice connection) is 9600bps and uses the full, raw GSM data/voice channel. You'd not be able to exceed the channel bandwidth. Then you have the SMS overhead. And you're unlikely to manage to max out the channel.
Text messages are free to deliver these days right?
>The backend takes the url, gets the HTML source of the website, minifies it, gets rid of the css, javascript, and images[...]
Still, major admiration from me for getting that to work!
Would be an optimal way of encoding the return.
Currently I have a working email-based proxy server, with Browse (HTML to email), Translate, Base64 Download, and Base64 upload.
I send the URL in the email's subject line, and Google App Engine fetches the page and replies to the sender. Base64 uploading is sent via POST to a PHP script on an OpenShift web server.
Email to SMS is also possible via gmail2sms (their blogspot is in Russian, but it's legit, I promise). That uses Google App Engine to copy emails to Google Calendar, which sends SMS event notifications for free. You need to authenticate your number first though.
I'm still missing some features though. Originally my purpose was to use SIP (e.g. Jajah, Voipcheap: Betamax services) to dual-dial a payphone and another phone number for a 5 minute free trial call. I almost got that working in early 2013, but ended up being banned by most Betamax services.
The other is how to initiate communications. I found a hack that allows me to send email for free while on prepaid 3G roaming with zero balance. There was another hack before that allowed me to receive email as well, but the website's format changed and it's no longer working. Also, most people just want me to have a "normal" local phone number instead of using my Google Voice SMS-to-email.
I've learned a lot about web technology through this ongoing project, though. Now I can code PHP and Python, browse using Elinks, script using Expect, and more.
On a meta-level though: is it worth it? Internet access is basically used for just a few purposes: - Information recall (Wikipedia) - Maps (Google Maps) - Communication (Email, Facebook, Twitter, Skype, etc) - News
The first two can be completely offline using Wiki2Touch (7.5GB text only Wikipedia) and Galileo (1 GB map of Taiwan). It's only communication and news that change often, so I need to access them.
I can get news through FM radio (does anyone still use that? I'm pleased to have it on my Sony MW600 Bluetooth remote).
Facebook and Twitter have email APIs. Skype doesn't. WeChat, WhatsApp, KakaoTalk, QQ, LINE, and all those other chat apps are terrible for their lack of standard APIs. Why can't we all just use instant messaging that's compatible with email or Jabber? For the same reason, these apps aren't available on my Raspberry Pi.
The Cosmos Browser's SMS gateway doesn't provide communication links, just HTTP GETs of static pages. Pages that I can save offline beforehand.
Congratulations to the developers for some impressive coding, but I can't yet find a killer app for this. And we should all switch to simple email instead of those pesky chat apps.
Peter