Monday, March 18, 2019

Memories of Sweden

Walks from Farsta Strand towards Vidja
I lived in Sweden for 4.5 months as KTH was my second university during my MSc (EMDC). However, unlike Portugal, which I hosted my first university, I did not stay beyond one semester in Sweden. I, of course, visited Sweden later for multiple occasions.
 
We had fun in Stockholm. I had to share a studio with a roommate to reduce the rent in the costly Stockholm, as we still just got the same 1000 Euro as the scholarship, even though Stockholm is more expensive than Lisboa. Our studio was provided by KTH. It is in a walking distance to the Kista campus, on top of the Kista shopping mall. Therefore, any time we wanted to buy something, we just had to come downstairs to the shopping mall! I also visited the shopping mall in Farsta frequently. We visited the central Stockholm, including Gamla Stan and T-Centralen neighborhoods often.

From the cruise to Helsinki
I often frequented Farsta Strand neighborhood for its woods. I used to walk from Farsta Strand towards Vidja. Farsta Strand also had a God Ganesh temple of Sri Lankan origin that I visited a few times. I like the view of Langholmen island. Therefore, when I came back later to Stockholm for the MSc graduation, we stayed in the Langholmen island. Although most of our courses were in the KTH Kista campus, some classes were on the main campus. The main campus building is stunning and it changes its appearance entirely based on the season. I often frequented the KTH main library, which was much bigger than the ones in Lisboa. Before returning to Lisboa from Stockholm, we made a cruise trip to Helsinki. We also flew to Copenhagen and took a train ride to Malmo from Copenhagen. 2013 December is probably the best new year vacation in my life so far, just like the 2013 NYE remains the best NYE.

Karlstad University
My first return to Sweden was for our KTH graduation in Stockholm in 2015. We had our EMDC Spring event in the Fejan island. I returned to Stockholm and Fejan again in 2015 for the spring event again, organized for our junior batch. I represented the EMDC 2012/2014 batch in the spring event. It was good to be back in Fejan for yet another spring event. My visit to Karlstad for ACRO summer school in Karlstad University was productive. It was one and only summer school I had during my entire studies. I also visited Stockholm on my way back. Although it was such a short stay, Karlstad immediately became one of my favorite cities. I don't know when I will be back in Sweden. But it is undoubtedly a country that I would love to visit again, or even live again -- probably for a much more extended period!

Saturday, March 16, 2019

10 Years of Blogging with Llovizna

10 years of Llovizna
When I started blogging in 2009 March, I was wondering where will my blog be in ten years. Now, 10 years have passed, and my blog Llovizna still remains active. My blog has always remained a mixture of technological and personal posts. My posts discussed what I learned and also where I have been to. I maintain a list of posts that I like to blog in the future about (Future Blog Posts) and also discuss My Travels. Most of my travels are for conference presentations anyway.

At times in between I tried to separate my personal views into other platforms, and eventually always realized it is too much of work to maintain multiple blogs and platforms. Interestingly, several platforms came and went, thus affecting a few of my posts. I tried my best to fix those broken articles. One notable example is docstoc.com where I used to post my presentations. As it closed down, I had to take down the links and embedded presentations from the posts. Despite all these changes, Llovizna has been part of my life since 2009 for the past decade.
 
Interestingly, blogspot has survived the 10 years test. Now I am curious to see where my blog will be in 10 more years later. Let's see whether blogspot will continue to survive the test of time. I hope it will, and I hope to write a similar post again in 2029.

Weekends

Coffee during a weekend
Weekends - who do not love them? They are a welcome change in a daily routine, to catch up with the other things that are left behind in a tight weekly schedule.

Weekends in Sri Lanka
My perception of weekends, of course, changed with time. During my school days, I had lots of tuition classes during the weekends. As a result, weekends were not really free. Sometimes we had long weekends, thanks to public holidays coming on Fridays or Mondays. Every month had a full moon day, which is a public holiday in Sri Lanka. Weekends were always a welcome change from the daily school days routine. During my undergrad days, I was usually free during the weekends, except for a few Saturdays when we had lectures. When I started working, that was when the concept of free weekends took a full shape. I was free during the weekends except when I had deadlines.

Weekends in the EU

Then I moved to the EU for my higher studies. During the MSc days, we had loads of fun during the weekends with friends that I fondly recall. My PhD time schedule was very flexible. Sometimes I worked during the weekends while having fun during the weekdays. Therefore the differentiation between the weekdays and weekends became blurred once again. Still, weekends were the days I usually went to beaches or movies. I always loved the weekends for some coffee in Portuguese cafes (I miss those Portuguese cafes and their cheap, but quality coffee) or for a stroll in a shopping mall.

Weekends in the Kingdom of Saudi Arabia

When I went to Saudi Arabia, the weekends consist of Friday and Saturday. But we often worked on Friday due to our international collaborations. Similarly, our work was somewhat relaxed on Sundays due to lack of collaborators present on Sundays from other countries. Therefore, depending on how you see it, the weekends fluctuated between 1 (Saturday), 2 (Friday and Saturday), or 3 (Friday, Saturday, and Sunday) days in the Kingdom.

Weekends in Atlanta
Now in Atlanta, I spend my weekdays at work. With a routine schedule, weekends have become yet again well-defined. I spend most of my weekend, catching up with shopping, attending to non-work stuff, and listening to some music. :)

Memories of Sri Lanka

It has been more than 6.5 years since I left Sri Lanka. The country that gave me the best of everything. I was lucky to study in arguably the best boys school in the country, and then one of the best universities and departments - all without spending money thanks to our free education! That's great for me as I come from a very humble background. If we had to pay for education, I might not have had this opportunity. I received my undergraduate education from the best of the teachers in my department. Some of my lecturers treated us like their own sons. Does it sound weird to you? Then probably you are not a Sri Lankan. ;) For us, teachers are family! Not a single day, I felt poorly treated in my university - based on the language I speak or my religion. I am a Hindu. But I loved spending Christmas time with my friend's family and enjoying the prayers and family meals. I enjoyed Watalapam (that sweet dessert that only Sri Lankan Muslims have a secret recipe ;) ) shared by my Muslim friends. I enjoyed the Avurudu (Sri Lankan new year) with our (mostly) Buddhist neighbors who were always there for us whenever we needed them! Of course, we shared our Thai Pongal celebrations with them too!

My memories left me with a strong association and fondness towards my country. Time passed, and now my memories are also filled with the memories of me in 6 other beautiful countries where I lived. Still not a single day I felt bad about Sri Lanka (opinions about the politicians do not count as an opinion about the country). OK, maybe only when I had to apply for a visa. Unfortunately, Sri Lankans need a visa to go to almost anywhere, except maybe around 40 friendly countries. :) I hope that improves so that we all can move around freely.

I love Sri Lanka and Sri Lankans, and I want everyone to be the same, despite their current location. We all originated from that island. :) One common mistake many Twitter users do when talking about Sri Lankans abroad is using a broad brush. Some of us have spent most of our lives in Sri Lanka and have a loving relationship with the motherland. Others have escaped the war and may have bad memories. Some are born abroad and never had the chance to experience anything Sri Lankan beyond what is taught by their parents. They may not even hold a Sri Lankan citizenship. So our opinions are shaped by our different experiences - some of us are lucky to have good memories. We received the best in our country - we had fun. Others may not. Don't check the Twitter location and judge someone as diaspora just because he/she is currently in a foreign country. It does not help your argument.


Ideally, I want everyone with SriLankan origin to associate with SriLankan identity strongly. It does not matter even if you never had a SriLankan citizenship. SriLanka was not a perfect country in the past. But which country was? We all had our faults. I don't want our next generation to be divided and live in hatred. If your parents/grandparents are from Sri Lanka? You are Sri Lankan. Did you lose someone you love to the war, terrorists, or the military? Still, you are Sri Lankan. I have seen vast divides between the Sri Lankan communities in countries such as France and Switzerland. We (including we personally and our elected leaders) must act to reconcile. I think, with a strong distributed presence of Sri Lankans globally, we will have a collective advantage, if we all work together, rather than spending time attacking each other or discrediting each other. I am just a person online sharing my opinions. But I hope I share some positive vibes on the Internet.

Sunday, March 10, 2019

[GSoC] What if the project idea that I am working on doesn't get into the final list?

I have received this question in the past and recently. I decided to post my answer as a blog post for future references.

A student asks, "There are like 11 project ideas for your organization. Based on my observation, I see that you have received only 4 - 6 final projects accepted, despite having 10+ project ideas. Now I work hard for a project idea, and what if you guys decide not to select the project idea because that idea is not important to your organization? Will my hard work go wasted? So is this pure luck?"

I decided to leave a detailed answer as the primary organization administrator for GSoC/Emory BMI.

tl;dr: Work on your project idea and be the best. Avoid worrying about the selection process.

The long answer: One thing I can assure is, most GSoC organizations select students. Not project ideas. As much as I know, GSoC organizations (including us) don't list project ideas that are not the priority to them. That means, all the ideas have near-equal priority (of course, there will be minor variations among the project priorities).

In the worst case, I have experienced in the past once when 2 of the best students apply to the same project, the mentors tried to encourage the 2nd best student to apply for another project in the same organization. Every organization is different, and every mentor is different. So don't quote me on this with another organization.

Wearing my ex-GSoC student hat, my advice to current potential students is, try to be the best among the organization's potential applicants. Remember you also can apply for up to 3 projects if you are worried a lot. I have been a GSoC student 4 times successfully (now you can be a student only twice. But those days, no such limitation).  2 out of 4 times, I applied to more than one project. During my first GSoC as a student (2009), I applied for 2 projects in the same organization. The mentors choose one project  that was the most relevant for them among the 2, I applied. In 2014, I applied to 3 different organizations and 2 chose my proposal (and of course in that case, mentors try to contact you to find your first option, or sometimes agree upon themselves which organization should accept you. You can of course work on only one GSoC project at a year. No exception).

Now, my only worry as an organization administrator that Google may not give the maximum number of slots we (open source organizations) want. Google has a limited budget and a number of students in mind. It is around 1000 students. Therefore, many organizations do not get the number of students they want. Of course, we always can ask for one additional slot than they offered. But still, there is no guarantee. I ***guess*** we will get 4 - 5 slots this year. But that is just a guess. But I strongly believe, we will get at least 2 slots. Definitely not possible to get 11 slots. That means, some of our ideas won't have students working on them as a result. But that is life. ;)

To answer your comments on the discussions in Quora on GSoC: Take them with a grain of salt. Many of them i) are subjective, ii) plainly wrong despite their high up-votes iii) often come from someone who has never been a student or a mentor, iv) based on limited experience, or v) outdated as GSoC has changed its rules during the past 15 years.

Now, stop worrying and focus on working on the project ideas. Optimism and hard work go a long way! Make sure to do your research and show your talents to the mentor. We can only choose one student for a project idea, and naturally, that goes to the best candidate.

Wednesday, March 6, 2019

Using Apache Spark to query a remote authenticated MongoDB server

[1]  First, download and extract Spark

$ wget http://apache.spinellicreations.com/spark/spark-2.4.0/spark-2.4.0-bin-hadoop2.7.tgz 
$ tar -xf spark-2.4.0-bin-hadoop2.7.tgz

$ cd spark-2.4.0-bin-hadoop2.7



Create spark-defaults.conf by copying  spark-defaults.conf.template in conf/

Add the below line in the conf file.

spark.debug.maxToStringFields=1000


[2] Now connect to Mongo in a remote server.

We use the MongoDB Spark Connector.

First, make sure the Mongo in the remote server has the bindIp set to the value appropriately to the correct local IP (not just localhost). Use the authentication.

root and password below indicate the credentials of your authenticated mongo. 192.168.1.32 is your remote server's (where Mongo is running) private IP. We are reading the oplog.rs collection in the local database. Change these accordingly. Similarly, we are writing the outputs to the database sparkoutput. Change it too as you prefer.

spark-2.4.0-bin-hadoop2.7]$ ./bin/pyspark --conf "spark.mongodb.input.uri=mongodb://root:password@192.168.1.32:27017/local.oplog.rs?readPreference=primaryPreferred"               --conf "spark.mongodb.output.uri=mongodb://root:password@192.168.1.32:27017/sparkoutput"               --packages org.mongodb.spark:mongo-spark-connector_2.11:2.4.0



Python 2.7.5 (default, Oct 30 2018, 23:45:53)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
Ivy Default Cache set to: /home/pkathi2/.ivy2/cache
The jars for the packages stored in: /home/pkathi2/.ivy2/jars
:: loading settings :: url = jar:file:/home/pkathi2/spark-2.4.0-bin-hadoop2.7/jars/ivy-2.4.0.jar!/org/apache/ivy/core/settings/ivysettings.xml
org.mongodb.spark#mongo-spark-connector_2.11 added as a dependency
:: resolving dependencies :: org.apache.spark#spark-submit-parent-33a37e02-1a24-498d-9217-e7025eeebd10;1.0
    confs: [default]
    found org.mongodb.spark#mongo-spark-connector_2.11;2.4.0 in central
    found org.mongodb#mongo-java-driver;3.9.0 in central
:: resolution report :: resolve 256ms :: artifacts dl 5ms
    :: modules in use:
    org.mongodb#mongo-java-driver;3.9.0 from central in [default]
    org.mongodb.spark#mongo-spark-connector_2.11;2.4.0 from central in [default]
    ---------------------------------------------------------------------
    |                  |            modules            ||   artifacts   |
    |       conf       | number| search|dwnlded|evicted|| number|dwnlded|
    ---------------------------------------------------------------------
    |      default     |   2   |   0   |   0   |   0   ||   2   |   0   |
    ---------------------------------------------------------------------
:: retrieving :: org.apache.spark#spark-submit-parent-33a37e02-1a24-498d-9217-e7025eeebd10
    confs: [default]
    0 artifacts copied, 2 already retrieved (0kB/6ms)
19/03/06 08:24:16 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /__ / .__/\_,_/_/ /_/\_\   version 2.4.0
      /_/

Using Python version 2.7.5 (default, Oct 30 2018 23:45:53)
SparkSession available as 'spark'.

>>> from pyspark.sql import SparkSession

>>> my_spark = SparkSession \
...     .builder \
...     .appName("myApp") \
...     .config("spark.mongodb.input.uri", "mongodb://root:password@192.168.1.32:27017/local.oplog.rs?authSource=admin") \
...     .config("spark.mongodb.output.uri", "mongodb://root:password@192.168.1.32:27017/sparkoutput?authSource=admin") \
...     .getOrCreate()


Make sure you are using the correct authentication source (i.e., where you authenticate yourself in the Mongo server).


[3] Perform queries on Mongo collection.

Now you can perform queries on your remote Mongo collection through the Spark instance. For example, the below query finds the schema from the collection.

>>> df = spark.read.format("com.mongodb.spark.sql.DefaultSource").load()
>>> df.printSchema()                                                           


root
 |-- h: long (nullable = true)
 |-- ns: string (nullable = true)
 |-- o: struct (nullable = true)
 |    |-- $set: struct (nullable = true)
 |    |    |-- lastUse: timestamp (nullable = true)
 |    |-- $v: integer (nullable = true)

Sunday, March 3, 2019

Google Summer of Code: The best of both worlds - II

Google Summer of Code (GSoC) is an exciting program dedicated to open source projects, funded by Google. I have been a student 4 times - 2009 with AbiWord, 2010 with OMII-UK, 2014 and 2015 with Emory BMI. I have been a mentor 4 times too - 2011, 2012, and 2013 with AbiWord and 2016 with Emory BMI. After a short break, now I am happy to be the primary organization administrator for Emory BMI - my first time as an organization administrator, my 9th year of involvement with GSoC. In this post, I plan to share a few suggestions to the potential students.

 While I have written several posts in the past on this topic, several things have changed recently. Most importantly, now the students can do a maximum of 2 GSoCs in their lifetime as a student. There was no such limit during those days, and some of us ended up with 4 or more years as GSoC students. This change means, if you have been a GSoC student twice before (for example, GSoC 2016 and GSoC 2018), you cannot be a student anymore. That means I can never be a GSoC student again. :P Second, previously there were only 2 evaluations. Now there are 3. 2016 and before, everyone received the same stipend. Now, it depends on the country of your university (most likely this is your resident country). Also, you can apply only up to 3 projects now. Previously this upper limit was higher (It was reduced from 20 to 5, and eventually became 5). The reduced limit aims to favor quality instead of quantity.

The beauty of open source projects come into play that it gives you a chance to work on something that you are interested in, in your way. But not many of us get time to dedicate to an open source project due to our other commitments and as we are busy with our regular work, study, and related activities. Now let's come to the topic.

Why GSoC?

GSoC is an annual program from Google for the university students of age 18 and more. Each student codes for her preferred open source organization for 3 months. Google coordinates and awards the successful students. Though open source organizations are run mostly by volunteer developers, Google pays the students. The exact money you will get depend on the location of your country, varying between 3000 $ - 6600$. For example, if you study in Portugal, the total you will get is 4200$. If you study in Sri Lanka, this will be 3000$. You will also receive a certificate, an awesome t-shirt, and some small gifts! Hence you can focus entirely on the program during the 3 months.

3 milestones. 
    • First Evaluation (paid ~July 1): 30%
    • Second Evaluation (paid ~July 29): 30%
    • Final Evaluation (paid ~September 5): 40%

      Some statistics of 2019
      • 206 Organizations
      • Expecting more than 2000 mentors and co-mentors.
      • Expecting more than 1000 successful students.

      The success rate is pretty high!
      Historically, 1 in 4 students gets accepted to GSoC. That means, for every 4 complete project proposals, 1 got selected. Once the student is selected, the chance of her completing the project successfully is much higher. In the past years, the success rate was around 85 - 90% for the students who are accepted. The high success rate is because the mentors and the organization are with the student to provide him assistance and guidance, whenever is needed.

      The passion for open source and the desire to be an outstanding student are considered to be the primary reasons for a student to participate in the Google Summer of Code. Not forgetting to mention, earning money for the summer.

      A computer with the Internet connection, knowledge and experience in the domain, and the motivation are the required to participate. Of course, you should be interested in contributing to the particular open source organization.

      Don't forget to check the timeline and adhere to it strictly.

      Before you begin..
      • Google Summer of Code is all about being Open Source.
        • Get your basics and motives right.
      • Netiquettes.
      • Sign up to the mailing lists (if any).
      • Join the relevant Slack/IRC channels (if any).

      Technologies
      • Version Control Systems
        • These days, it is mostly Git. But this depends on your organization.
      • Build Tools
        • Mostly Maven.
      • IDEs (Integrated Development Environments)
        • IntelliJ IDEA, Eclipse, Microsoft Visual Studio, ..
        • Of course, specific to the programming language
      • Issue Tracker
        • GitHub, Jira, Bugzilla, ..

      Communicating with the team..
      .. and the mentor, over the Internet..
      • Slack or Internet Relay Chat (IRC)
      • Mailing Lists
        • Dev, User, Commit lists, sub-groups, ..
      • Issue Tracker
      • Forums and wiki
      • Blogs
      • Only if the mentor proposes - Skype, Personal Mails, gtalk, conference calls, ..

      Network Etiquettes
      • Be Specific and clear.
      • Research (google.. ;) or Go through the previous Slack/mailing list messages) before asking.
      • Be helpful to others.
      • Be ethical; respect.
      • NO CAPS! (UNLESS YOU ARE SHOUTING!)
      • Don't take messages personally.
      • Dn't snd ur sms msgs to thrds or lsts.

      Proper Addressing..over the lists/irc/..
      • Address the devs and users properly.
        • First Name or Preferred calling name.
        • No excuse not knowing the mentors' names. Mentors' names are listed under the project descriptions.
        • NO Sir, Madam, bro, sis, pal..
          • Even if you know them, personally.
          • Especially, don't say "Dear Sir/Madam". Can be perceived as too pretentious, lazy, or impersonal.
        • No Mr., Dr., or Prof. either.
      • Be gender neutral.
        • “Folks” over “Guys and Girls”.
      • Not too personal.
        • “Hi” is preferred more than “Dear”.

      Mailing lists
      • Post only to the relevant list.
      • Check the mail archives first.
        • To avoid getting RTFW/RTFM responses.
      • No [URGENT]/[IMPORTANT] tags.
      • No unnecessary attachments.
      • No Cross Posting.
        • Stick to the proper mailing list only.
      • Don't hijack threads.
      • Don't post off-topic.

      IRC/Slack Etiquettes
      • Be a reader first when you enter a Slack channel. Check the previous discussions before asking a question. Most likely your question is already answered. I know, "No question is a bad question". But remember, you are being evaluated for GSoC slots (Even if we want to mentor all of you, we cannot. GSoC gives only a certain number of slots to each organization, and mentors have limited time too). You don't want to come across as someone who is lazy.
      • Refer to others using their irc/slack nick.
        • Whenever my irc nick is mentioned, I get a pop up message from my irc client such as pidgin.
        • Don't use @channel in your message at all. This will send a notification to everyone. You don't want to send a message "@Channel, I have submitted my proposal".
      • Don't expect immediate replies; wait.
      • Avoid these common mistakes.

      Find a mentoring organization..
      • More than 200!
      • Find the organization you like the most.

      Find THE right project..    
      Once you have found the right organization(s), that matches your interest and expertise, you have to go through the ideas list (e.g.: the project ideas of Emory BMI). You can apply up to 3 projects in total - either from the same organization or from 2 or 3 organizations.


      Get to know more about the projects
      • Talk to the mentor(s) Assigned by the organization for each project idea.
        • Use the recommended channels. 
        • Avoid the temptation to send private emails, LinkedIn messages, private Slack messages, etc. These are not going to help you. Use the appropriate public channels (unless advised by your mentor otherwise).
      • Mailing lists and archives.
      • Issue Tracker
        • Open issues or tickets
          • New features/enhancements (RFE)
          • Bugs (easy/difficult and normal/critical)

      What makes you special?
      • Experience
        • Being a great user doesn't mean that you can be a good developer.
        • Demonstrate your ability to perform the task with prototypes and bug fixes.
        • Possess the required skills.
          • If you have no clue about C, you will be unlikely (although I sound negative to say this) to get selected for a project that requires expertise in C. Better luck applying for a project that you know the development language and the tools.
      • Complete the prerequisites for the project and additional requirements related to the project proposal from the mentors.
        • The prerequisites such as a screenshot/video of a working deployment/demo/prototype, pull requests, or some prototype code are there for some reason. Don't ignore them if you want to be considered seriously.
      • Your interests and motivation
        • Pick something you enjoy doing.
        • Being a great developer doesn't mean that you can be a good contributor.
        • What makes you the right person?
      • Willingness to contribute to the community beyond the time frame of GSoC. 
        • Usually, Open Source organizations want committers and longtime volunteers - Not just students!
      Experience
      • Languages
        • Java, C++, C, ..
        • Not much time to learn a new language (?)
      • Prove It with pull requests to existing bugs or feature requests in the code base!
        • Submit well-tested and complete pull requests. Don't send half-baked pull requests that won't even compile or breaks a functionality. Remember, you are consuming the mentor's time who might be answering up to 100 of students (depending on the popularity of their project ideas). Also, for most of us mentors, GSoC is just a part-time activity or a hobby. It is not our full-time job (in contrast, the selected students are expected to consider GSoC as a full-time job during the 3 month coding period).
        • Assist other students!!!
        • Project expertise
          • Bug reports and fixes.
          • Go through the archives, wikis, and web sites.

      Opportunities..
      • A project that matches your previous work experience.
        • Choose the right project.
      • Timezone Difference 
        • Use it effectively - Most students prefer to work in nights too, as they may have lectures in the mornings.
      • Multiple Applications (3!) If you apply for multiple projects, make sure all of them are of high quality. Remember the equation of quality vs. quantity.
      • Communicate early and often.
      • Be heard, visible, responsive,  and quick!
        • Ask questions, and more importantly answer others' questions.

      Apply

      Register as a student for GSoC, as the first step of the application procedure. Make sure to follow the deadline and submit the application and the student proof such as a transcript or student ID indicating that you are currently an active student (as important as the GSoC proposal, as far as Google is concerned) on time. No execuses and no exceptions. If you miss the deadlines set by Google, your mentoring organization cannot help you, even if they want to. Share your draft proposal with mentors early on, and iterate over it with the mentors' feedback.

      Apply on Google's site, at the earliest possible, as you can edit it later, until the last minute. Check often for the mentors' comments and attend to them. Only the organization mentors can see your proposal unless you decide to make it public. Please don't wait until the last minute to submit the proposal and the other necessary documents. There will definitely be a powercut or an Internet outage right at the deadline. I have warned you. ;) Submit early and continue editing. That's the approach.

      How to impress the mentors/developers?
      • Stick to the organization's template.
      • Abstract.
      • Introduce yourself properly.
        • Focus on the relevant facts.
        • Why do you fit? Your skill sets.
        • List of the pull requests or patches (if any) you have submitted. Make sure to identify the working/accepted ones.
      • Project Goals
        • Proves you got them correct.
      • Deliverables
        • Code, documentation, test cases, binary releases, ..
      • Description - can also be given along with the timeline
        • Benefits to the organization and other projects  
      • Timeline
      • Links - References and additional details.

      After the submission..
      • Don't go invisible!
        • Evaluation is still going on.. ;)
      • You may be asked to provide additional information.
        • Pull requests, prototypes, demos, patches, ..
        • Screenshots.
        • A Skype Interview request from the mentors!!
      • Start coding on your project - if you have time and of course it will help in the selection process (It is going on once you have submitted).
      • Be motivated.

      Got Selected? Community Bonding Period!!!

      Don't panic. You have 3 more weeks, just to mingle with the developers and the code base. Mentors are there to help you! Keep touch with the developers and users. Learn the project by going through the code base and documentation such as coding styles and coding guidelines. This will help you understand the project idea more. Come up with a design and start with simple hacks.

      Coding

      Finally comes the coding - the easiest task of all. Commit often, if you are given committership. When committing or sending pull requests or patches, make sure to include meaningful Commit messages. Get feedback from the mentor(s) on your commits or patches frequently. Keep the community updated. Committing or sending patches daily would be a good approach.

      Plan for the 3 evaluations early, with the mentor. This will help you reach the target successfully. You might also need to revisit the project goals if required, during the milestones.



      Conclude/Continue

      Whatever coding or related job done on your project after the GSoC deadline will not be considered part of your summer of code, and will be considered a volunteer work on the project. Try to stick around your project community after the successful completion of your GSoC. You can aim to be a committer, long-term contributor, or even a mentor for GSoC next year.

      Saturday, March 2, 2019

      Can I apply for more than one project in GSoC?

      Many of the students have asked in public forums and in person whether it is a good idea to apply for multiple projects in the Google Summer of Code (GSoC). While quality is better than quantity, if you can manage - why not? go ahead - you may submit up to 3 proposals. Anyway, you will be allowed to work with only of the projects for the Google Summer of Code each year, even if multiple organizations may have chosen you.

      As summarized by Stephanie, GSoC administrator: "If multiple organizations decide they want a student, the organization that selects the student first will have the opportunity to keep the student. The 2nd org wanting the student can contact the first organization and ask if they will release the student and the first org can make the decision to keep the student for their org or to release the student so another org can have the student."


      In practice, the organization mentors often tend to ask the student her/his opinion. It is always important to be online and available for such communications, especially during these de-duplication time frames. When a student was chosen by two organizations, the second organization may (and often, will) be in a better position to get the student, if they have the word from the student that they are the student's preferred organization.

      Many factors will influence the decision making process from the first organization, including,
      1. Indication from the student which is the most preferred project.
      2. The availability of other good students for the same project. If there are more candidates good enough, they may decide to lose this student and get the next one.

      As a student, you may also indicate to your potential mentors that you have applied to multiple projects, and this particular one is the most preferred. This will definitely help, if you are applying for multiple projects from the same organization, as the organization mentors can always communicate internally to find the best-fit among projects and students. It will be still useful in negotiations/discussions among the organizations, if the student was chosen by two (or more) different organizations. It always worked for me as a student. So probably will work for you as well.

      However, this is just my own experience as a mentor and a student.