GSoC - Learning Program


#1

Discussion on figuring out a good model to introduce the 21st-century skills to university students interested in programming.

Tangible Outcome - Students will be able to put out a strong application to the GSoC program.

Google document with the current ideas - https://docs.google.com/document/d/1p79_nEG8A-YJZ3UfJBROCKnh30J-1IxpWU9GL5KLk24/edit?usp=sharing

How to contribute?

  • Each subtopic is written as a reply to the main thread topic. If you want to create a discussion on a new subtopic click reply to the main thread topic and start typing.

  • To add to the discussion on a current subtopic click on the reply button to the subtopic thread and start typing.

  • To reply to a specific idea or question inside any of the topic/sutopic, highlight the text and click on the ‘Quote’ button that pops up.


#2

Thread for - Resources to learn about the basic details of GSoC

Detailed student guide

https://google.github.io/gsocguides/student/index

Archive of previous GSoC organisations and projects

Timeline of GSoC 2019

https://developers.google.com/open-source/gsoc/timeline

Stats of 2018 GSoC


#3

Target Group - whom should we bring in for the program

Of the 11 previous participants that I analysed almost all of them have an active Github at least six months before the application. Say if they applied for March 2018 GSoC, they started actively coding on projects from Dec 2017. They have also started committing on projects by the start of 2017 ( though not active as from Dec 2017 ). This is the general trend by analysing the 11 participants from 3 different projects.

So we need to decide ( based on the time, resources and depth of our learning program ) which Target group should we be focusing on

Different Target Groups based on their experience

Target Group 1 - students who have just started messing around with programming. Shares a lot of interest in coding.

I don’t think this is our target group. Will require heavy technical skills training which I feel will be hard to do in a short time frame.

Target group 2 - Worked on a lot of individual coding projects. Have not collaborated with a group on a project. Does not have a well maintained Github/Bitbucket profile.

Target group 3 - Collaborated with teams on programming projects. Does not have a showcase worthy Github/ Bitbucket profile. Have not contributed to open source before. Mostly freelancers who don’t have public projects to showcase.

Target group 4 - Have collaborated with teams on programming projects. Have contributed to open source projects.

Q) Which of the 4 target group should we pick for the program?

The initial feeling based on seeing the profile of the previous participants and my experience talking with developers for the Startup Village programs is that we should focus on Target group 3. With target groups 1 & 2 we will have to spend a lot of time on the fundamentals of software development. Target group 4 has both the technical skills and the soft skills and they have already done what GSoC offers.

Target group 3 has the basic technical skills, but mostly lack awareness and the soft skills required to apply for a program like GSoC.

Different Target group based on the area of interest

GSoC has many categories of open source projects. We can divide our target group based on these categories as

Target Group A - Web e.g. : Ruby on rails, Mozilla, Internet Archive etc
Target Group B - Operating system
Target Group C - Cloud
Target Group D - Programming languages and development tools
Target Group E - Security

Q) Should we focus on students interested in only one of the category or open it up to all categories?

It depends or whether we are planning to give technical mentoring for the participants inside the program.


#4

What should we provide through the program?

It looks like you can split the skills needed for applying to the program into two:

  1. Technical skills
  2. Soft skills

GSoC has a very detailed Student Guide ( similar to the GHCI guidance wiki and the handbook Rethink has created ). Also, there are links to all projects and participants of the previous years. The application submitted and the code they have created are all open sourced. So there is plenty of resources to go through if one is interested in applying. I think the information and resource part is taken care of.

Also, for learning technical skills there are other communities and resources. I believe we should focus on the soft skill part of the application process.

One interesting and challenging soft skill part of the application process is, figuring out which organisation/open source project to work with, talking with the mentors of the respective organisation and finally putting in a project plan that they can finish in 3 months.

Working on the above project I believe requires all the 4Cs of 21CU. I believe it is a great way to introduce the 21C skills to students through a personally meaningful project. ( Aligns with our ‘Project before problem’ principle )

So you can look at the fundamental structure of the program as this:

The fundamental structure of the program

General skill a participant learn:
Figuring out what interests you and finding and working on a project with existing communities that share your interest. ( This I believe will involve all the 4Cs of 21CU )

How do you do it?
By working towards contributing to an open source project in one of your interest areas ( we can ask participants to choose from the existing organisations of the GSoC )

Tangible Outcome for student
You build all the resources ready for putting up a strong application to the prestigious GSoC program.

Tangible Outcome for the public ( public good )
Code contribution to an open source project


#5

Duration and timeline of the program

GSoC publishes the list of participating organisation and the project ideas that students can choose from by Feb 26. Application deadline is April 9.

So we can have our program from Feb 3rd week - April 1st week ( 6 - 7 weeks )


#7

This depends on what we decide to provide through the program. See that discussion here - GSoC - Learning Program


#9

Conversation with previous participants

Questions asked

  1. Does such a program makes sense? Will it be useful?
  2. What kind of students should we take into the program? Passionate beginners? Expert programmers? Moderate programmers?
  3. How long did you work on the application? ( 1 month? , 2 - 3 months? , more than that? ) What is an ideal time frame?

1. GSoC Participant from Amrita Kollam

Does such a program makes sense? Will it be useful?

Ofcourse 200% it will useful and does give you a hell lot of learning oppurtunity. So It is really useful,
I wil say what I have gained after doing GSoC, and its personal

  • Objective C: I feel now I am comfortable doing stuff with objective C
  • Learned how to work with the large codebase
    -Also became familiar and understood many parts of the VLC codebase
  • Learned time management and meeting the deadlines and also GSoC helped to stop procrastination up to an extent
  • Became flexible using the Xcode environment.
  • Learned to how to debug applications crashes and much more
  • Also you will have mentor who could write the recomendation letter in your name which is the most precious thing imo

What kind of students should we take into the program? Passionate beginners? Expert programmers? Moderate programmers?

Even First years who have little exp to programming gets and completes GSoC,
The main thing is how much you know about the project you gonna do, and how are you gonna work. If you have a fair enough idea on these two then no major issues

How long did you work on the application? ( 1 month? , 2 - 3 months? , more than that? ) What is an ideal time frame?

For this
I Chose to do with VLC in early Jan and depending on the orgs you will need to do some basic tasks,
First thing you should do is
Select an org
Do local building
Fix some bugs
and finalise it

So if we want to encourage more students to apply for GSoC ( and contribute to open source ) what do you think would be a good way?

IMO best thing would be making them understand what is GSoC helps, thats pretty much the easy way right, I am not sure, just preaching others about it doesnt help, one himself/herself should take the initiative else its futile.

Does an online community/forum make sense? Or do you think some other structure would be better. Maybe a more structured program to take them through the steps?

It does make sense, the problem that might arise is that, there might be even people who simply join and waste space of others and might give a bad impact overall, need to find a potential solution for that too, a proper mailing list and a group like this is pretty much enough right, I am not sure maybe @r3xnation could comment more on his view.
If we do over planning and all, at the end we might add up too much efforts for a thing which should happen in the flow and which might even result in loss of huge time and resource.

2. Sidharth - GSoC 2018 participant from Amrita Kollam

Does such a program makes sense? Will it be useful?

  1. This program makes a lot of sense. GSoC introduces students to how an Organization works - a really important skill in the future. There are certain set of objectives, rules, deadlines etc that each organization follows and you get to experience that first hand.

You learn to follow syntax, document your work, publish your work and maintain separate work flows at the same time. Probably makes you a much more mature and efficient programmer overall. And you need to do it properly and systematically - time is an important factor.

Another great thing about GSoC is that it allows you explore newer domains and go deeper into them with help of a community that’s really active and ready to help. Getting into the program shows that you have some stuff in you and people always are ready to help. (This “mentor - student” thing is really amazing and useful.)

What kind of students should we take into the program? Passionate beginners? Expert programmers? Moderate programmers?

GSoC is for people who are passionate or have fun writing code. There are projects for beginners, intermediate coders and experienced people. You can take your pick.

Your selection of the projects should mainly depend on some area that you are experienced with or have an idea of. Some communities are very beginner friendly(eg KDE, MediaWiki ) since their frameworks are pretty easy to get a hang off. Other communities (eg BSDs, Qemu, r2 etc) prefer people with some experience in their respective areas mainly because there are some underlying concepts that the participants need to be aware of.

Personally, I chose NetBSD due to the projects they had which were in line with the areas that I wanted to learn more about and had a pretty basic idea of.

How long did you work on the application? ( 1 month? , 2 - 3 months? , more than that? ) What is an ideal time frame?

This depends purely on your expertise and familiarity with the organization framework. I decided I would do GSoC halfway after the application period started there was probably a week or so left for the deadline. :sweat_smile::sweat_smile:

I already had experience working and debugging the Linux kernel so switching to the NetBSD kernel wasn’t really hard. Also I had some experience working with Memory management systems so that was an additional bonus. So I regularly completed tasks that my mentor gave me during the application period and kept contributing after the deadline. Maybe contributed around 3k lines in a period of 2 weeks so the organization was happy.

So if you are confident about what you want to work on you can wait for a while and select it after the organizations release their projects and there is something along what you want. You could probably spend time building up expertise in that area - write blogs, learn concepts, try out stuff etc

But yes - If you want a guaranteed spot in. Better start now itself.

My proposed steps -

  1. Go through previous year projects - check the ideas list and accepted projects
  2. Do an initial talk with the organization and discuss about the project if it’s still incomplete (if it was there last time and not completed then it would be there this time also)
  3. Learn any theory or concepts related to the project - blog about it (really useful for application)
  4. Get a better idea of the organization by doing some small bug fixes or contributing some code. Would definitely save you time for the project.

So if we want to encourage more students to apply for GSoC ( and contribute to open source ) what do you think would be a good way?

We are already a part of a FOSS club in our College. It’s a community which encourages open source contributions and participation in events such as GSoC etc.
It is a really good initiative to introduce FOSS clubs and similar communities everywhere. But the issue is managing such a community - mentoring a student isn’t really a easy task and can be a huge waste of time if the student isn’t serious.
We have a strict set of rules etc which makes it easier to manage people but still it’s a huge headache.

Management is a huge mess but if done properly I guess you can get some good results.


#10

3. Adarsh - GSoC participant from Model Engineering College

  1. It obviously would be helpful because the presence of such a peer group goes a long way. You can do much better with a peer group around who could help you contribute and work on the project. Since persistence is a big part of Open Source contributions, a program would definitely make sense cause most people give up due to the overwhelming feeling.

  2. I mean the program acts as a natural filter. Either they’ll give up in a week or they’ll keep on doing it even if considerable progress isn’t made (which is most of the initial time)

3.I started contributing 10 months before the program so I had very good ideas on what the project was and where it was lacking. I had previously learned the technology involved beforehand itself. I worked 3 months on the proposal.


#11

Discussions on the wiki for GSoC

Hey @aryamurali on the wiki for GSoC, I had a few doubts. Google already has a very detailed student guide with a structure that matches the GSoC program very well. Its also on Github so it is open source and continuously modified with inputs.

This is the student guide - https://google.github.io/gsocguides/student/index

Do we need to create a replica of that on our Wiki? I was thinking of directing to that student guide from our Wiki. What do you think?


#12

Our wiki for an opportunity usually has basic, minimal info about the opportunity. Key info there is really the list of previous winners, application resources and so on. Creating a simple wiki for GSoC still makes a lot of sense.

In terms of guidance, the Github student guide can be an excellent resource we recommend. On top of that, we may have additional guidance that we develop based on our frameworks as well as knowledge from having spoken to multiple previous winners.

Before putting together a guidance wiki, what makes sense is to focus on doing the basic wiki (with info of previous winners) and interview few previous winners.


#13

Good resources on understanding more on Open source contributions


#14

One of the ideas that came with discussion with previous participants is that - there are already a lot of info and resources on how to write a good proposal for GSoC. The info that is not out in the open is

  1. How to select an organization.
  2. How to communicate with the organization (people generally seem to have issues communicating)
  3. What to do during the application period (what not to do also)

So I will try and focus on open sourcing info on these 3 points and then add that to our wiki.

I have created a first version of the wiki here - https://wiki.rethinkfoundation.in/Google_Summer_of_Code#Previous_Winners


#15

Existing good resources on being part of GSoC

How to write a good proposal

Guides on selecting an organisation