summaryrefslogtreecommitdiff
path: root/Documentation/contributing/gsoc.md
blob: 4f854268a8d529a3bdf193e5730878a3974d59f0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
# Google Summer of Code


## Contacts

If you are interested in participating in GSoC as a contributor or mentor,
please have a look at our [community forums] and reach out to us. Working closely
with the community is highly encouraged, as we've seen that our most successful
contributors are generally very involved.

Felix Singer, David Hendricks and Martin Roth are the coreboot GSoC admins for
2022. Please feel free to reach out to them directly if you have any questions.


## Why work on coreboot for GSoC?

  * coreboot offers you the opportunity to work with various architectures
    right on the iron. coreboot supports both current and older silicon for a
    wide variety of chips and technologies.

  * coreboot has a worldwide developer and user base.

  * We are a very passionate team, so you will interact directly with the
    project initiators and project leaders.

  * We have a large, helpful community. coreboot has some extremely talented
    and helpful experts in firmware involved in the project. They are ready to
    assist and mentor contributors participating in GSoC.

  * One of the last areas where open source software is not common is firmware.
    Running proprietary firmware can have severe effects on user's freedom and
    security. coreboot has a mission to change that by providing a common
    framework for initial hardware initialization and you can help us succeed.


## Collection of official GSoC guides & documents

  * [Timeline][GSoC Timeline]

  * [Roles and Responsibilities][GSoC Roles and Responsibilities]

  * [Contributor Guide][GSoC Contributor Guide]

  * [Contributor Advice][GSoC Contributor Advice]

  * [Mentor Guide][GSoC Mentor Guide]

  * [FAQ][GSoC FAQ]

  * [Rules][GSoC Rules]

  * [Glossary][GSoC Glossary]


## Contributor requirements & commitments

Google Summer of Code is a significant time commitment for you. Medium-sized
projects are estimated to take 175 hours, while large-sized projects are
estimated to take 350 hours. Depending on the project size, this means we
expect you to work roughly half-time or full-time on your project during the
three months of coding. We expect to be able to see this level of effort in the
results.

The standard program duration is 12 weeks and in consultation with the mentor
it can be extended up to 22 weeks. Please keep in mind that the actual number
of hours you spend on the project highly depends on your skills and previous
experience.

Make sure that your schedule (exams, courses, day job) gives you a sufficient
amount of spare time. If this is not the case, then you should not apply.


### Before applying

  * Join the [mailing list] and our other [community forums]. Introduce yourself
    and mention that you are a prospective GSoC contributor. Ask questions and
    discuss the project that you are considering. Community involvement is a
    key component of coreboot development.

  * You accept our [Code of Conduct] and [Language style].

  * Demonstrate that you can work with the coreboot codebase.

    * Look over some of the development processes guidelines: [Getting started],
      [Tutorial], [Flashing firmware tutorial] and [Coding style].

    * Download, build and boot coreboot in QEMU or on real hardware. Please email
      your serial output results to the [mailing list].

    * Look through some patches on Gerrit to get an understanding of the review
      process and common issues.

    * Get signed up for Gerrit and push at least one patch to Gerrit for review.
      Check Easy projects or ask for simple tasks on the [mailing list] or on our
      other [community forums] if you need ideas.


### During the program

  * To pass and to be paid by Google requires that you meet certain milestones.

    * First, you must be in good standing with the community before the official
      start of the program. We expect you to post some design emails to the
      [mailing list], and get feedback on them, both before applying, and during
      the "community bonding period" between acceptance and official start.

    * You must have made progress and committed significant code before the
      mid-term point and by the final.

    * We require that accepted contributors to maintain a blog, where you are
      expected to write about your project *WEEKLY*. This is a way to measure
      progress and for the community at large to be able to help you. GSoC is
      *NOT* a private contract between your mentor and you.

  * You must be active in the community on IRC and the [mailing list].

  * You are expected to work on development publicly, and to push commits to the
    project on a regular basis. Depending on the project and what your mentor
    agrees to, these can be published directly to the project or to a public
    repository such as Gitlab or Github. If you are not publishing directly to
    the project codebase, be aware that we do not want large dumps of code that
    need to be rushed to meet the mid-term and final goals.

We don't expect our contributors to be experts in our problem domain, but we
don't want you to fail because some basic misunderstanding was in your way of
completing the task.


## Projects

There are many development tasks available in coreboot. We prepared some ideas
for Summer of Code projects. These are projects that we think can be managed in
the timeline of GSoC, and they cover areas where coreboot is trying to reach
new users and new use cases.

Of course your application does not have to be based on any of the ideas listed.
It is entirely possible that you have a great idea that we just didn't think of
yet. Please let us know!

The blog posts related to previous GSoC projects might give some insights to
what it is like to be a coreboot GSoC contributor.


## coreboot Summer of Code Application

coreboot welcomes contributors from all backgrounds and levels of experience.

Your application should include a complete project proposal. You should
document that you have the knowledge and the ability to complete your proposed
project. This may require a little research and understanding of coreboot prior
to sending your application. The community and coreboot project mentors are your
best resource in fleshing out your project ideas and helping with a project
timeline. We recommend that you get feedback and recommendations on your
proposal before the application deadline.

Please complete the standard GSoC application and project proposal. Provide the
following information as part of your application. Make sure to provide multiple
ways of communicating in case your equipment (such as a laptop) is lost,
damaged, or stolen, or in case of a natural disaster that disrupts internet
service. You risk automatically failing if your mentor cannot contact you and if
you cannot provide updates according to GSoC deadlines.

**Personal Information**

  * Name

  * Email and contact options (IRC, Matrix, …)

  * Phone number (optional, but recommended)

  * Timezone, Usual working hours (UTC)

  * School / University, Degree Program, expected graduation date

  * Short bio / Overview of your background

  * What are your other time commitments? Do you have a job, classes, vacations?
    When and how long?

**Software experience**

If applicable, please provide the following information:

  * Portfolio, Website, blog, microblog, Github, Gitlab, ...

  * Links to one or more patches submitted

  * Links to posts on the [mailing list] with the serial output of your build.

  * Please comment on your software and firmware experience.

  * Have you contributed to an open source project? Which one? What was your
    experience?

  * What was your experience while building and running coreboot? Did you have
    problems?

**Your project**

  * Provide an overview of your project (in your own words).

  * Provide a breakdown of your project in small specific weekly goals. Think
    about the potential timeline.

  * How will you accomplish this goal? What is your working style?

  * Explain what risks or potential problems your project might experience.

  * What would you expect as a minimum level of success?

  * Do you have a stretch goal?

**Other**

  * Resume (optional)


### Advice on how to apply

  * [GSoC Contributor Guide]

  * The Drupal project has a great page on how to write an GSoC application.

  * Secrets for GSoC success: [2]


## Mentors

Each accepted project will have at least one mentor. We will match mentors and
contributors based on the project and experience level. If possible, we also
will try to match their time zones.

Mentors are expected to stay in frequent contact with the contributor and
provide guidance such as code reviews, pointers to useful documentation, etc.
This should generally be a time commitment of several hours per week.

Some projects might have more than one mentor, who can serve as a backup. They
are expected to coordinate with each other and a contributor on a regular basis,
and keep track of the contributor process. They should be able to take over
mentoring duty if one of the mentors is unavailable (vacations, sickness,
emergencies).


### Volunteering to be a mentor

If you'd like to volunteer to be a mentor, please read the [GSoC Mentor Guide].
This will give you a better idea of expectations, and where to go for help.
After that, contact Org Admins (see coreboot contacts section above).

The following coreboot developers have volunteered to be GSoC 2022 mentors.
Please stop by in our community forums and say hi to them and ask them
questions.

  * Tim Wawrzynczak
  * Raul Rangel
  * Ron Minnich


[community forums]: ../community/forums.md
[mailing list]: https://mail.coreboot.org/postorius/lists/coreboot.coreboot.org
[Getting started]: ../getting_started/index.md
[Tutorial]: ../tutorial/index.md
[Flashing firmware tutorial]: ../tutorial/flashing_firmware/index.md
[Coding style]: coding_style.md
[Code of Conduct]: ../community/code_of_conduct.md
[Language style]: ../community/language_style.md
[GSoC Timeline]: https://developers.google.com/open-source/gsoc/timeline
[GSoC Roles and Responsibilities]: https://developers.google.com/open-source/gsoc/help/responsibilities
[GSoC Contributor Guide]: https://google.github.io/gsocguides/student
[GSoC Contributor Advice]: https://developers.google.com/open-source/gsoc/help/student-advice
[GSoC Mentor Guide]: https://google.github.io/gsocguides/mentor
[GSoC FAQ]: https://developers.google.com/open-source/gsoc/faq
[GSoC Rules]: https://summerofcode.withgoogle.com/rules
[GSoC Glossary]: https://developers.google.com/open-source/gsoc/resources/glossary