On 3 May 2013 08:53, Marcos Pividori <marcospivid...@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.
Hi Marcos, I really like this project, I think it will be very useful. You've listed a lot of deliverables. In what order would you plan to do things, and what deliverables would you consider essential to call the project a success? It sometimes happens with GSoC projects that some random task takes longer than expected, or something in real-life delays progress. To ensure success, you could make a timeline with all the essential deliverables done about 60% of the way through, and the rest of the time for bonus deliverables and polishing. cheers, Conrad. _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe