<div dir="ltr"><p style="margin-bottom:0cm"><font color="#000000" face="arial, helvetica, sans-serif">Sorry, I am resending this email because I didn&#39;t write a correct title before.<br><font face="arial, sans-serif">-------</font><br>
<br><font face="arial, sans-serif">Greetings, </font></font></p><p style="font-family:arial,sans-serif;font-size:13px;margin-bottom:0cm"><font color="#000000" face="arial, helvetica, sans-serif">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.</font></p>
<p style="font-family:arial,sans-serif;font-size:13px;margin-bottom:0cm"><font color="#000000" face="arial, helvetica, sans-serif">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.</font></p>
<p style="font-family:arial,sans-serif;font-size:13px;margin-bottom:0cm"><font color="#000000" face="arial, helvetica, sans-serif">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. </font><font color="#000000" style="font-family:arial,helvetica,sans-serif"> (It is available: </font><a href="https://github.com/MarcosPividori/Yesod-server-for-GCM" target="_blank" style="font-family:arial,helvetica,sans-serif">https://github.com/MarcosPividori/Yesod-server-for-GCM</a><span style="font-family:arial,helvetica,sans-serif"> )</span><br>
</p><div class="im" style="font-family:arial,sans-serif;font-size:13px"><p style="margin-bottom:0cm"></p><p style="margin-bottom:0cm"><font color="#000000" face="arial, helvetica, sans-serif">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.</font></p>
</div><p style="font-family:arial,sans-serif;font-size:13px;margin-bottom:0cm"><font color="#000000" face="arial, helvetica, sans-serif">I would be grateful if you could give me your opinion about this project and the proposal I am starting to write.</font></p>
<div style="font-family:arial,sans-serif;font-size:13px"><div class="adm"><div id="q_13e51cc106bf7a61_3" class="h4"><div class=""></div></div></div><div class="im"><p style="margin-bottom:0cm"><font color="#000000" face="arial, helvetica, sans-serif"><br>
</font></p><p></p><font color="#000000" face="arial, helvetica, sans-serif"><b>Proposal GSoC 2013:</b></font><p></p><p style="margin-bottom:0cm"><font face="arial, helvetica, sans-serif"><br></font></p><p style="margin-bottom:0cm">
<font color="#000000" face="arial, helvetica, sans-serif"><b>Abstract</b></font></p><p style="margin-bottom:0cm"><font face="arial, helvetica, sans-serif"><font color="#000000">The aim of this project is to develop a server-side library </font>in Haskell for sending push notifications to devices running different OS, such as Android, iOS, Windows Phone, BlackBerry, and so on.</font></p>
<p style="margin-bottom:0cm"><font color="#000000" face="arial, helvetica, sans-serif">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.</font></p>
<p style="margin-bottom:0cm"><font color="#000000" face="arial, helvetica, sans-serif">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:</font></p>
<p style="margin-bottom:0cm"><font color="#000000" face="arial, helvetica, sans-serif">- Google Cloud Messaging (Android)</font></p><p style="margin-bottom:0cm"><font face="arial, helvetica, sans-serif"><a name="13e51b82b44106d4_13e518e2e797ab57_13e4a086ac65530c_pageTitle"></a><font color="#000000">- Apple Push Notification Service (iPhone / iPad)</font></font></p>
<p style="margin-bottom:0cm"><font color="#000000" face="arial, helvetica, sans-serif">- Microsoft Push Notification Service (Windows Phone)</font></p><p style="margin-bottom:0cm"><font color="#000000" face="arial, helvetica, sans-serif">- BlackBerry Push Service (BlackBerry)</font></p>
<p style="margin-bottom:0cm"><font color="#000000" face="arial, helvetica, sans-serif">- Windows Push Notification Services (Windows 8)</font></p><p style="margin-bottom:0cm"><font color="#000000" face="arial, helvetica, sans-serif">- etc.</font></p>
<p style="margin-bottom:0cm"><font face="arial, helvetica, sans-serif"><br></font></p><p style="margin-bottom:0cm"><font color="#000000" face="arial, helvetica, sans-serif"><b>Motivation and expected benefits</b></font></p>
<div><p style="margin-bottom:0cm"><font color="#000000" face="arial, helvetica, sans-serif">I think my 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.</font></p>
</div><p style="margin-bottom:0cm"><font color="#000000" face="arial, helvetica, sans-serif">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.</font></p>
<p><font color="#000000" face="arial, helvetica, sans-serif">Generally, you can also be very selective in who you send information to, including individual customers or many customers (multicast).</font></p><p><font color="#000000" face="arial, helvetica, sans-serif">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.</font></p>
<p align="LEFT" style="margin-bottom:0cm;border:none;padding:0cm;line-height:0.48cm"><font color="#000000" face="arial, helvetica, sans-serif">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.</font></p>
<p align="LEFT" style="margin-bottom:0cm;border:none;padding:0cm;line-height:0.48cm"><font color="#000000" face="arial, helvetica, sans-serif">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.</font></p>
<p align="LEFT" style="margin-bottom:0cm;border:none;padding:0cm;line-height:0.48cm"><font face="arial, helvetica, sans-serif"><font color="#000000">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.<br>
</font><br></font></p><p style="margin-bottom:0cm"><font color="#000000" face="arial, helvetica, sans-serif"><b>Deliverables.</b></font></p><p style="margin-bottom:0cm"><font face="arial, helvetica, sans-serif"><br></font></p>
<p style="margin-bottom:0cm"><font color="#000000" face="arial, helvetica, sans-serif">* An API library to build and send messages including:</font></p><p style="margin-bottom:0cm"><font color="#000000" face="arial, helvetica, sans-serif">- GCM and a demo Android app.</font></p>
<p style="margin-bottom:0cm"><font color="#000000" face="arial, helvetica, sans-serif">- APN and a demo iOS app.</font></p><p style="margin-bottom:0cm"><font color="#000000" face="arial, helvetica, sans-serif">- Microsoft Push Notification Service (Windows Phone) and a demo app.</font></p>
<p style="margin-bottom:0cm"><font color="#000000" face="arial, helvetica, sans-serif">- Documentation for all the code developed. Including the explantation on how to use the server library and how to try the demo apps.</font></p>
<p style="margin-bottom:0cm"><font face="arial, helvetica, sans-serif"><br></font></p><p style="margin-bottom:0cm"><font color="#000000" face="arial, helvetica, sans-serif">* A demo server taking advantage of this libraries to communicate with the demo apps through push notifications.</font></p>
<p style="margin-bottom:0cm"><font color="#000000" face="arial, helvetica, sans-serif"><br></font></p><p style="margin-bottom:0cm"><font color="#000000" face="arial, helvetica, sans-serif"></font></p><p style="margin-bottom:0cm">
<font face="arial, helvetica, sans-serif"><font color="#000000">* Optionally: </font><font color="#000000">(Only in the case that I finalize the rest of the objectives before the deadline)</font></font></p><p style="margin-bottom:0cm">
<font color="#000000" face="arial, helvetica, sans-serif">- API for communication through BlackBerry Push Service (BlackBerry).</font></p><p style="margin-bottom:0cm"><font color="#000000" face="arial, helvetica, sans-serif">- API for communication through Windows Push Notification Services (Windows 8).</font></p>
<p style="margin-bottom:0cm"><font face="arial, helvetica, sans-serif"><br></font></p><p style="margin-bottom:0cm"><font color="#000000" face="arial, helvetica, sans-serif"><b>Technical Considerations</b></font></p><p style="margin-bottom:0cm">
<font face="arial, helvetica, sans-serif"><br></font></p><p style="margin-bottom:0cm"><font color="#000000" face="arial, helvetica, sans-serif">I have to complete this....</font></p><p style="margin-bottom:0cm"><font face="arial, helvetica, sans-serif"><br>
</font></p><p><font color="#000000" face="arial, helvetica, sans-serif"><b>Timeline</b></font></p><p><font color="#000000" face="arial, helvetica, sans-serif"><span style="background-color:transparent">May 27:</span> (Accepted students announced)</font></p>
<p><font color="#000000" face="arial, helvetica, sans-serif">  - &#39;Community Bonding Period&#39; (~1 month)</font></p><p><font face="arial, helvetica, sans-serif">    <font color="#000000">+ Get to know mentor(s).</font></font></p>
<p><font face="arial, helvetica, sans-serif">    <font color="#000000">+ Refine this proposal with mentor(s).</font></font></p><p><font face="arial, helvetica, sans-serif">    <font color="#000000">+ Set up svn accounts.</font></font></p>
<p><font face="arial, helvetica, sans-serif">    <font color="#000000">+ Set up a wiki page or blog for this project.</font></font></p><p><font face="arial, helvetica, sans-serif">    <font color="#000000">+ Make sure that everything is ready for coding.</font></font></p>
<p><font face="arial, helvetica, sans-serif">    <font color="#000000">+ Try to involve the community as much as possible, ask for new </font>ideas/suggestions/etc.</font></p><p><font face="arial, helvetica, sans-serif"><br>
</font></p><p><font color="#000000" face="arial, helvetica, sans-serif"><span style="background-color:transparent">June 17:</span> (Start of the program)</font></p><p><font color="#000000" face="arial, helvetica, sans-serif">  - &#39;Library to use the GCM Service&#39; (Total: ~4 weeks)</font></p>
<p><font face="arial, helvetica, sans-serif">    <font color="#000000">+ Familiarize with the GCM service and understand the details related. (~1 week)</font></font></p><p><font face="arial, helvetica, sans-serif">    <font color="#000000">+ Develope the server library to send GCM messages and a demo Android app. (~2 weeks)</font></font></p>
<p><font face="arial, helvetica, sans-serif">    <font color="#000000">+ Document all the code developed, and check details. (~1 week)</font></font></p><p><font color="#000000" face="arial, helvetica, sans-serif"><br></font></p>
<p><font color="#000000" face="arial, helvetica, sans-serif">  - &#39;Library to use the APNS Service&#39; Part 1 (Total: ~2 weeks)</font></p><p><font face="arial, helvetica, sans-serif">    <font color="#000000">+ Familiarize with the APNS service and understand the details related. (~1 week)</font></font></p>
<p><font face="arial, helvetica, sans-serif">    <font color="#000000">+ Start to develope the server library to send APNS Push Notifications and a demo iOS app. (~1 week)</font></font></p><p><font face="arial, helvetica, sans-serif"><br>
<br></font></p><p><font color="#000000" face="arial, helvetica, sans-serif"><span style="background-color:transparent">July 29: </span>(Midterm evaluation period begins)</font></p><p><font color="#000000" face="arial, helvetica, sans-serif">  - &#39;Midterm evaluation period&#39; (~1 week)</font></p>
<p><font face="arial, helvetica, sans-serif">    <font color="#000000">+ Submit the midterm review.</font></font></p><p><font face="arial, helvetica, sans-serif"><br><br></font></p><p><font color="#000000" face="arial, helvetica, sans-serif"><span style="background-color:transparent">August 2: </span>(Midterm evaluation deadline)</font></p>
<p><font color="#000000" face="arial, helvetica, sans-serif">  - &#39;Library to use the APNS Service&#39; Part 2 (Total: ~2 weeks)</font></p><p><font face="arial, helvetica, sans-serif">    <font color="#000000">+ Continue to develope the server library to send APNS Push Notifications and a demo iOS app. (~1 week)</font></font></p>
<p><font face="arial, helvetica, sans-serif">    <font color="#000000">+ Document all the code developed, and check details. (~1 week)</font></font></p><p><font face="arial, helvetica, sans-serif"><font color="#000000"></font></font></p>
<p><font color="#000000" face="arial, helvetica, sans-serif"><br></font></p><p><font color="#000000" face="arial, helvetica, sans-serif">  - &#39;Library to use the MPNS Service&#39; (Total: ~4 weeks)</font></p><p><font face="arial, helvetica, sans-serif">    <font color="#000000">+ Familiarize with the MPNS service and understand the details related. (~1 week)</font></font></p>
<p><font face="arial, helvetica, sans-serif">    <font color="#000000">+ Develope the server library to send MPNS Push Notifications and a demo Windows Phone app. (~2 weeks)</font></font></p><p><font face="arial, helvetica, sans-serif">    <font color="#000000">+ Document all the code developed, and check details. (~1 week)</font></font></p>
<p><font face="arial, helvetica, sans-serif"><br><br></font></p><p><font color="#000000" face="arial, helvetica, sans-serif"><span style="background-color:transparent">September 16: </span>(Suggested pencils down date)</font></p>
<p><font color="#000000" face="arial, helvetica, sans-serif">  - &#39;Pencils down&#39; (~1 week)</font></p><p><font face="arial, helvetica, sans-serif">    <font color="#000000">+ Final code clean up.</font></font></p><p>
<font color="#000000" face="arial, helvetica, sans-serif">    + Present library to the community and analyze feedback.</font></p><p><font color="#000000" face="arial, helvetica, sans-serif"></font></p><p><font color="#000000" face="arial, helvetica, sans-serif"><span style="background-color:transparent">September 23:</span> (Firm pencils down date)</font></p>
<p><font color="#000000" face="arial, helvetica, sans-serif">  - &#39;Summing up&#39; (~1 week)</font></p><p><font color="#000000" face="arial, helvetica, sans-serif">    + Submit Final Code to Google.</font></p><p><font color="#000000" face="arial, helvetica, sans-serif">    + Present final evaluation.</font></p>
<p><font color="#000000" face="arial, helvetica, sans-serif">    + Analyze possible future work and document it.</font></p><p><font color="#000000" face="arial, helvetica, sans-serif"></font></p><p><font color="#000000" face="arial, helvetica, sans-serif"><span style="background-color:transparent">September 23:</span> (Final evaluation deadline)</font></p>
<p><font face="arial, helvetica, sans-serif"><br><br></font></p><p style="margin-bottom:0cm"><font color="#000000" face="arial, helvetica, sans-serif"><b>About myself and my interest in this project</b></font></p><p style="margin-bottom:0cm">
</p></div></div><p style="font-family:arial,sans-serif;font-size:13px;margin-bottom:0cm"><font color="#000000" face="arial, helvetica, sans-serif">-------</font></p></div>