[Haskell-cafe] Google Summer of Code Proposal - Communicating with mobile devices

Marcos Pividori marcospividori at gmail.com
Mon May 13 05:01:49 CEST 2013


Hi, Thanks for your feedback! I have presented the proposal, and now I have
to wait for a response.
I want to let you know that I have already replaced the code for an English
version.
You can see it: https://github.com/MarcosPividori/Yesod-server-for-GCM
I hope it will be more useful now!
Thanks,
Marcos


2013/5/4 Kristopher Micinski <krismicinski at gmail.com>

> Marcos,
>
> Great to see you've revised a copy of this.  I've often felt that push
> communication to devices has a very continuation-y flavor, and I think
> having something in a web framework to express this would be great.
>
> It looks like a large part of your time may be spent developing demo
> apps, which is too bad, since ideally (for a Haskell project) you'd
> want to spend as much time as possible writing in Haskell :-).
> Perhaps you could write a fleshed out demo app for one environment
> (iOS, Android, etc..) and then shallower examples for the rest.  (In
> theory of course, you don't even need to write sample apps for most
> platforms, since the push API should be an abstraction layer above
> that...).
>
> Should this project make it through to be one of Haskell's GSOC
> projects, I'd be happy to chat with you about your development.
>
> Kris
>
> On Thu, May 2, 2013 at 8:53 PM, Marcos Pividori
> <marcospividori at gmail.com> wrote:
> > Greetings,
> >
> > I am a Computer Science student from Argentina. I am interested in
> working
> > this summer in a project related to Haskell for the Google Summer of
> Code. I
> > have been discussing my idea with Michael Snoyman in order to have a
> clearer
> > idea. Now, I would like to know the community interest in this project.
> >
> > I want to develop a server-side library in Haskell for sending push
> > notifications to devices running different OS, such as Android, iOS,
> Windows
> > Phone, BlackBerry, and so on.
> >
> > To pass a subject, I have recently worked with Yesod (a Web Framework
> based
> > in Haskell) developing a server to comunicate with Android-powered
> devices
> > through Google Cloud Messaging. (It is available:
> > https://github.com/MarcosPividori/Yesod-server-for-GCM – It is a Spanish
> > commented version because it was a project for my University, I will
> replace
> > it for an English version in the next weeks)
> >
> > To develop this project, I have read a lot about this service and Yesod
> > libraries, and I developed two programs, a server written in Haskell and
> an
> > Android application for mobile phones. Also, I developed an EDSL to write
> > programs which exchange information with the devices.
> >
> > I would be really grateful if you could give me your opinion about this
> > project and the proposal. I want some feedback in order to know if this
> > would be a useful tool and what you would like to get out of it.
> >
> > Communicating with mobile devices
> >
> >
> > Abstract
> >
> > The aim of this project is to develop a server-side library in Haskell
> for
> > sending push notifications to devices running different OS, such as
> Android,
> > iOS, Windows Phone, BlackBerry, and so on.
> >
> > The fact is that every company is developing Push Notification services,
> and
> > these are very similar. Then, I want to find the fundamental concepts to
> > construct a library which enable to configure the options for the
> different
> > services and send messages easily.
> >
> > When I say they are very similar, I refer to the fact that they all are
> > asynchronous, best-effort services that offers third-party developers a
> > channel to send data to apps from a cloud service in a power-efficient
> > manner. The most popular are:
> >
> >    - Google Cloud Messaging (Android)
> >
> >    - Apple Push Notification Service (iPhone / iPad)
> >
> >    - Microsoft Push Notification Service (Windows Phone)
> >
> >    - BlackBerry Push Service (BlackBerry)
> >
> >    - Windows Push Notification Services (Windows 8)
> >
> >    - etc.
> >
> > Once we have this libraries, I will investigate the possibility of
> mainting
> > a "back and forth" communication between a server and mobile devices and
> I
> > will develop a library to handle this.
> >
> >
> > Motivation and expected benefits
> >
> > I think this idea would be very useful because it will allow all Haskell
> > developers to open to a new world of mobile devices and to build useful
> > programs/services that interact with them.
> >
> > Pushing data to smartphones provides users with instant access to desired
> > updates as they happen, such as news and weather, sports scores, stock
> > prices and other time-sensitive content. The push services provide an
> > efficient way to quickly push timely information updates to many
> smartphones
> > at once, in a centrally managed and controlled manner.
> >
> > Generally, you can also be very selective in who you send information to,
> > including individual customers or many customers (multicast).
> >
> > This services minimizes the impact on the smartphones battery life.
> Instead
> > of actively checking for new data, the applications can remain closed.
> Once
> > the data is delivered, the application can be launched in the background
> to
> > process it as needed.
> >
> > This processes offer an alternative to other less efficient methods,
> such as
> > polling, where a device regularly polls an application server to see if
> new
> > content is available.
> >
> > The main differences between the services, refer to details as: the maxim
> > payload length, the quality of service, queueing the messages or not, and
> > the time limit for this, the way the messages are handled in the devices,
> > etc.
> >
> > As all the libraries to access to these services are developed in Java, I
> > thought that it would be a good idea to offer an option to Haskell
> > programmers. Taking advantage of the similarity of these services, I
> could
> > develop a very adaptable library which fits the necessities for each one
> and
> > at the same time offer an abstraction to the user.
> >
> >
> > Deliverables.
> >
> >
> > * An API library to build and send messages including:
> >
> >    - GCM and a demo Android app.
> >
> >    - APN and a demo iOS app.
> >
> >    - Microsoft Push Notification Service (Windows Phone) and a demo app.
> >
> >    - Documentation for all the code developed. Including the
> explantation on
> > how to use the server
> >
> >      library and how to try the demo apps.
> >
> >
> >
> > * A library to handle a "back and forth" comunication between a server
> and
> > mobile devices. Tools to mantain a state of the connection and manage
> with a
> > lot of devices at the same time. A Yesod app example of the use of this
> > library and a demo app for each OS (Android, iOS, Windows Phone, etc) to
> > manage this communication.
> >
> >
> >
> > * Optionally:
> >
> >    - an API for communication through BlackBerry Push Service
> (BlackBerry).
> >
> >    - an API for communication through Windows Push Notification Services
> > (Windows 8).
> >
> >
> >
> > Technical Considerations
> >
> > In the developing of the APIs for the communication through Push
> > Notifications, I will aim to develop a good abstraction and find the
> > properties in common between the differents services in order to
> develope an
> > customizable tool but at the same time with a common structure.
> >
> > I want to let the user build messages and send these in a simple way
> > following each protocol. Also, I will abstract the process of registering
> > the devices in the server and let the user manage the different
> > registrations behind a similar abstraccion.
> >
> > To develop a “back and forth” comunication between a server and mobile
> > devices, I will investigate the different possibilities of maintaining a
> > state of the connection. It could be through the use of cookies stored by
> > the clients or maintaining some extra information in the server which
> would
> > enable it to identify the different connections and provide the
> appropiate
> > services.
> >
> >
> > _______________________________________________
> > Haskell-Cafe mailing list
> > Haskell-Cafe at haskell.org
> > http://www.haskell.org/mailman/listinfo/haskell-cafe
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20130513/4555b66d/attachment.htm>


More information about the Haskell-Cafe mailing list