<div dir="ltr"><div class="gmail_quote"><div dir="ltr"><p style="margin-bottom:0cm"></p><p style="margin-bottom:0cm"><font color="#000000" face="arial, helvetica, sans-serif">Greetings, </font></p><p style="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="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="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>
<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>
<p style="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><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="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><p style="margin-bottom:0cm"><font color="#000000" face="arial, helvetica, sans-serif">-------</font></p>
<p></p></div></div></div>