Training Students in Free Software Development through GNU/Linux ecosystem contributions
Watch on YouTubeVideo summary
This presentation details a university course designed to train students in free software development by engaging them directly with the GNU/Linux ecosystem. Developed by researchers from the Institute of Mathematics and Statistics at the University of São Paulo, the one-semester program aimed to answer critical questions regarding how best to introduce newcomers to free software, what core skills are necessary for success, and whether meaningful training can occur within a short timeframe. The course was structured around three distinct but overlapping phases that took place in a dedicated building known as the Free Software Competence Center. It brought together undergraduate, graduate, and specialist students who participated through a mix of traditional lectures and intensive workshops where they worked collaboratively at tables rather than in a centralized lecture hall format.
The training methodology progressed from a foundational phase focused on contributing to the Linux kernel to more autonomous phases involving other projects within the ecosystem. The first phase challenged students to tackle the notoriously difficult task of submitting patches to the Linux kernel, specifically targeting subsystems like Industrial I/O and AMD GPU drivers. To ensure success for complete newcomers, mentors guided them through setting up environments, building custom kernels, and navigating the email-based patch submission process, often filtering out common beginner mistakes before students engaged with official maintainers. The second phase encouraged greater autonomy, allowing students to choose projects from a curated list or find their own within the broader GNU/Linux sphere, while the third phase focused on Debian packaging, highlighting the importance of community dynamics and distribution maintenance.
Throughout the course, the organizers emphasized mentorship, in-person interaction, and practical experience over rigid academic deliverables. Students utilized lightweight monitoring methods such as blog posts to document their journeys, which included both successes and challenges encountered with command-line tools and Linux systems. The results indicated that starting with the Linux kernel was a bold but effective strategy that demystified free software for many participants. By the end of the program, students reported increased confidence and autonomy, having overcome initial fears about terminal usage and community interaction. They also developed essential soft skills, particularly in communication, which they recognized as vital for succeeding as contributors, while gaining a comprehensive understanding of the various layers of the Linux ecosystem.
The presentation concluded by acknowledging that while the approach was not universally applicable due to the specific institutional history and resources available at the university, the core principles were highly effective. The course successfully demonstrated that even students with minimal prior experience could make significant contributions, such as removing hundreds of lines of duplicate code or engaging in continuous integration discussions. Although some challenges arose, including toxic behavior in certain communities and technical hurdles for users relying on Windows Subsystem for Linux, the overall outcome was a profound shift in student perspective. The experience fostered a sense of responsibility and community spirit, proving that with proper support and hands-on workshops, universities can effectively cultivate the next generation of free software developers.
Read the full video transcript
This session is a training student in
free software development through the uh
GNU Linux ecosystem contribution. Uh
it's a uh Paulo Mary and David Tadro
please talk start.
Hi everyone.
Uh can you hear me well?
>> Okay. So hello everyone. My name is
Davidu and today I'll be presenting the
talk titled training students in free
software development through GNU Linux
ecosystem contributions.
Um the authors of this talk are
Palomidis and myself. Uh you're going to
have to trust me that this is me. I look
a a lot a lot more adventurous and with
short hair and a lot less pale but trust
me this is me and we are both from the
Institute of Mathematics and Statistics
of the University of S. Paulo
unfortunately Paulo couldn't be here so
I'll be presenting this talk on behalf
of us and throughout the talk I'll be
referring to my institute as emus which
is this acronym
so before I start with the actual talk I
just would like to give you some quick
questions to provoke you don't worry I
won't be demanding participation a lot
in this talk but I would really
appreciate if you actively Think how
would you answer those questions, right?
So the first one is really simple. Uh
what is a good introduction to free
software for newcomers? And I say this
is simple because given this high
caliber audience that I have, I assume
most of you have already been confronted
with this question. So you probably have
an idea of an answer, but in reality it
isn't quite as much an easy question to
answer. So the next one is what core
skills are required for you to succeed
in any or at least most free software
projects. So imagine that you have a set
of skills that if you have those you're
probably going to s succeed in most
project of course disregarding the
effort for you to learn the project
specific stuff like software stack or
particular development workflows. So the
thing is are there core skills like
those and if so what are those core
skills
and finally can we train a group of
newcomers through free software and
foster core skills while doing it in a
relatively short period of time. And
this is the objective of this talk to
present how we try answering those
questions by training students in a
university course.
And a quick but really most important
disclaimer is that we do not argue that
our approach is infallible or that it
can be universally applicable or
anything like this. So the goal of this
talk is to only present the experiences
we had with this training and also the
things we learned along the way.
So here are the contents of this talk.
First I'll give you an overview of how
this training was structured and then
I'll go into the details about all the
phases of this training and then talk
about of some of the resources and the
preparation we had to do in order to
make it happen.
uh we then move on to some of the things
we learned. Uh you can can consider
those as our results and at the end I'll
present some final remarks. So starting
with the training overview the first
thing is where did it took place. So as
I mentioned me and Paulo are from the
Institute of Mathematics and Statistic
of the University of S. Paulo and this
is the building a picture of it. It
isn't the most high quality image you've
ever seen, but I like the angle and the
color. So, this is it. This is what we
call IMUSP.
But to be a little more bit more
specific, the training actually happened
in this building right here, the CCSL.
And at the end of the talk, I'll come
back to it and explain what this acronym
stands for. But keep in mind that it has
something to do with free software.
And in what shape did this course took
form um as a one semester uh university
course? Sorry, what shape did this
training took form as a one semester
university course that in our system
roughly amounts to four months and the
course was named free software
development and it its objective was to
introduce both conceptually and
practically free software to students
and do this with hands-on experiences.
So the course was composed of
undergraduate, graduate and specialist
students and by specialist students I
mean someone that is neither enrolled as
a graduation or as a post-graduation
student. Um as in any course we had
in-person meetings that were composed of
the usual lectures where someone stands
in the front of the class and exposes
knowledge.
However, we focus much more on workshops
which essentially go on the other way.
So students sat around tables working
together in an activity breaking this
classical centralized way. Uh some
people call this a lab class. So it's
nothing too fancy, nothing too new. And
the course was divided into three phases
plus an initial one.
And when did it happen? We actually
already had two offerings of this
course. One in the first semester of
last year and another in the first
semester of this this year. So we just
finish it
and to just give you a landscape of the
demographic of the students that we had
there were 25 plus students in each
offering and if we aggregate those those
offerings we got around 75% of students
being undergrads.
Uh in general the students had really
basic skills git skills. So they could
do a git add a git commit maybe a git
log with some fancy flags here and there
and also say push to a remote branch
into gitlab or github but they lacked
experience with more advanced stuff like
rewriting a branch using git rebase or
doing good git practices in general. So
around 65% of the students claim to be
familiar with the concept of free
software which is good and by familiar
I'm not talking about knowing all the
types of licenses or even the four
essential freedoms just having a
marginal understanding of what free
software is. Nevertheless, around 85% of
the students claimed to have never
contributed to free software. And just a
quick spoiler alert uh at the end of the
course every single one of them did in
various ways multiple times
of course as the own title of my talk uh
says we devised the course around GNU
Linux. So contributions were done in the
context of Linux kernel support in to
Linux development dist packaging and so
on as we will shortly see.
So moving on, we're going to dive in
each of the training phases,
we kickstarted the course with a small
introductory phase that was very
singular if we compared it with the
other phases. So we were much more
focused on lectures to expose free
software conceptually to students. So
even though most students seem familiar
with the concept of free software, we
had to make sure that everyone started
from the same point and had the same
knowledge. So we introduced the free
software definition by the free software
foundation going through the four
essential freedoms and whatnot.
We then explained the concept of
software licenses and the type of
licenses in this realm and gave some
examples of it.
As Git was created in the context of
Linux development, we highlighted to
show people that even though they may
not know or even care about free
software, they were using a tool
probably daily that was a product of the
necessity from a free software project.
And we then show the ideas brought in
the essay the cathedral and the bazaar
from Eric S. Raymond and how he used the
Linux kernel to characterize what he
called the bizaar model and distinguish
it from what he called the cathedral
model.
However, beyond Raymon using this essay
as a way to promote the concept of
open-source software and bootstrap the
open source initiative that in my
opinion maybe I think this is a good
great place to say this that it's a way
to take free software and strip it from
its political stance. He just observed
Linux development model and didn't
actually participated in it. So this
screenshot here is what I found to be
his only patch to the kernel, but as we
can see, it was only done in 2010. So
part of the idea of the course was to
take the path that Raymon didn't take
and make students actively jump into
Linux development.
Okay, before we move to the next phases
which contain the actual training part,
here are some of the common
characteristics to all of them. Indeed,
we did split the training into phases.
So phase one started before phase two
and phase two started before phase
three, but there were times like phase
one activities were happening when phase
two or even phase three was still
occurring. So workshops were a constant
throughout the course and no phase was
an exception and mentors were there to
support in any way inside and outside
the class.
Okay, phase one was about contributing
to the Linux kernel project. And some of
you may think that this is kind of a
radical idea considering that most
students were complete newcomers to free
software and that the kernel is
considered as one of the most difficult
projects to contribute with many movie
parts and maybe some outdated workflows.
Right? So if you think this I won't
discuss with you. You're probably right.
This is and was a radical idea. But as I
intend to show you, this isn't a bad
idea.
So just to ensure that we are on the
same page here is a really streamline
and washdown explanation and view of the
Linux kernel development model. So when
we say the Linux project we actually
mean this umbrella that is composed of
the many sub projects called subsystems.
So when you send a contribution to the
Linux project, you are not sending it
directly to Torvos
but to a subsystem maintainer/ community
that upon approving your contribution
only then it will start propagating it
up the hierarchy by sending it to the
maintainer above it and so on until it
reaches the G repository called the
mainline which is the one maintained by
Linus and that's represents the official
release of the kernel.
And another important aspect of Linux
development is that it uses email as a
medium to propagate contributions which
are called patches. So sometimes in this
context a contribution is generally
called a patch set. So a set of patches
related, but even though you can send
like a single patch, sometimes it would
be still called a patch set. And this is
an example of a patch that I sent with a
simple code style cleaning. Uh you're
probably not going to be able to see
what's written here, but the idea that
is if you look closely, a patch is
essentially a commit converted to a
plain text email message with the commit
being the subject of the email. And the
commit body and code diff, in other
words, the actual change as the email
body. This relation between a commit and
a patch is so real that we can
seamlessly convert it into a patch using
git comments and vice versa.
Now going into the actual activities of
the phase uh students started by doing
workshops that were structured around
tutorials on Linux development. So this
went from setting up a testing
environment to learning to build and
deploy a custom kernel from source to
playing with the building compilation
configuration and also some basics about
character device drivers. [snorts]
uh as I mentioned because the Linux
development has so many contexts we
decided to set the scope to a specific
subsystem which was the industrial input
and output or also known as IIO
subsystem and this decision was wasn't
random at all because a veteran IO
developer was the one who produced those
tutorials based on a set of tutorials
from another veteran Linux developer but
we get into that and This IO developer
also helped us in the last part of the
phase which was to actually submit a
patch set to a subsystem. So after all
the preparation and the learning the
workshops all students chose something
to work on from a pool of curated issues
that included IO stuff but also issues
from other subsystems like the AMD GPU
and display.
However, instead of them directly
sending the contribution for the real
subsystem maintainer and community,
students had to go through a screening
step. So, they first send those
contributions to us for us to review.
And I say, the mentors and the idea was
to filter out rough but really natural
mistakes that newcomers do and also give
students more confidence when sending
the actual patch set. So after it was
accepted and I say quote unquote
accepted because we really didn't try to
play the role as the maintainer just to
rough out those common mistakes. We gave
the students the green light to send it
for the real review processes and then
they engaged in the real review uh with
the maintainers of the subsystem.
However maintainer as mentors still gave
support throughout all this process.
Okay, going to phase two.
Uh, it revolved around contributing to a
project in the Ginu Linux ecosystem. And
what I mean by a project in the Ginu
Linux ecosystem is one that is closely
related to it or in some sense
supports its development. So for
example, some of the projects that we
pre-selected were Gignome and Git, which
if you remember was created by Torvos in
2005 to support Linux, and Kworkflow,
which is a developer automation workflow
system for the Linux developer. And
maybe you never heard of it. So if you
are interested in learning more about
it, I invite you everyone to see my
dedicated talk on the subject on Friday.
And in this second phase, we let
students loose and stopped holding their
hand so much. They had to the freedom to
choose the project from the pool of the
pre-selected projects, but they also
could go around and choose a project for
themselves with the only requirement
being that it should be related to GNU
Linux.
And here workshops didn't stop at all
but students didn't follow the same
journey like in the first phase where
everyone did the tutorials and everyone
sent contributions to the Linux kernel
and they had to be much much more
autonomous at this stage. So they had to
seek out their own issues discover how
to engage with the community they chose
to contribute and also to learn the
project specific stuffs like the
workflows and the software stack.
However, with that being said, mentors
were still close and available to
support, albeit in a more passive way,
as the students had to bring the
problems that came up from their own
active engagement with their chosen
project.
Last but not least, far from it, uh
phase three was about contributing to
debin packaging. So in it we had the
privilege and also the pleasure to team
up with four awesome members of the the
Dabian Brazilian community which were Jo
Costa which is here in the audience,
Akila Medu
uh which is here also in the audience.
Both of those helped us in the first
offering. So thank you guys and also
Lucas Kanashir who is here also and Shai
Milada who I think is not here but thank
you also that helped us in this second
offering
and to be honest we mentors didn't do
much beyond interfacing between them and
the students because they completely
prepared and conducted the lectures and
workshops. And it was was really really
interesting because even though this
phase was shorter than the others and
much more self-contained, they managed
to introduce the Debian world philosophy
and dynamics while providing great uh
practical experiency through software
packaging in the context of Debian.
So thank you guys once again. For the
training to work, we had to gather a
variety of resources and space that
could house the course activities. So,
we needed a place where we could do the
usual lectures, but also the workshops.
So, in this picture, you see the
classroom that we use in its lecture
mode. So, everyone is in a chair paying
attention to an expository class, which
by the way, I think was Joan class on
Debian packaging. But for the same
classroom, we had portable tables that
we could quickly open and rearrange the
chairs to create an environment that
much which was much more suitable for
our workshop sessions. So, as you can
see in this picture, probably not so
well, but the only uncensored person
right here is me uh helping someone with
something which I don't quite remember
because we mentors help a lot of people
with a lot of stuff. But the idea is to
illustrate this dynamic that was the
core of the course and also the
workshops that students gathered around
helping each other to do activities
counting with the support of us mentors.
And speaking about mentors,
these were the people who played this
part. So Paulo Males, Hafel Pas,
Marcelis Pisto, Lucas and myself. But I
would like those were actually the
primary mentors. But I would really like
to bring attention to Marcel Shibich and
Hodria as Shimich was that IO developer
that I mentioned. So the person who
actually devised the tutorials that we
used in the first phase and generally
helped us in this phase and cicada was
the one I call the other Linux developer
that made the original set of tutorials
from which she built upon.
We also had to deise teaching materials.
So things like the tutorials themselves,
slides, pads and any other reference
were used to cover more concepts and the
le uh to complement the lectures and the
workshops. So for example, this is an
part of a pad that I produced that aim
to give simple and straightforward
guidelines on how to develop a patch to
Linux from cloning the right kernel tree
to sending patches using git or car
workflow for for instance.
And to keep track of the progress of
students, we used monitoring mechanisms.
However, we aimed them for being
lightweight as the course was focused
much more in having the students getting
their hands dirty and experience free
software in practical terms. So, we
didn't want to overflow students with
things like tasks or recurring
deliverables.
And the two main monitoring mechanisms
that we use were blog posts that
students had to write that follow kind
of a log book format. So these posts
were about the things that went right,
the things that went wrong and
observations in general. So on
students also did presentations in the
form of quick pitches. So mostly
happened before and before the start of
the next phase and at the end of the
course
and probably the most valuable resource
we had were the expert collaborators. So
people that were specialists specialists
in the many areas that we were touching
upon like the Linux development itself,
GNU Linux distros, Debian packaging and
so on. uh and as I mentioned
collaborators did many things like
prepare and conduct lectures and
workshops but also supported as students
and us mentors alike. So once again I'm
going to take the opportunity to thank
everyone. So sorry it's going to be a
long thank you but everyone that
participated with with us deserves so
Melissa Wayne Magalis
Antonio
Olivera au Joa
Alexandri Abidu Lucas Kalashi Charles Me
and everyone else who collaborated with
us. Uh I think I got everyone but I do
apologize if I am forgetting someone.
Okay. So before this the start of the
training of course we had to prepare the
course plan with the phases activities
and some of the deliverables yet Paulo
always says that the only thing we are
sure about a plan is that we're going to
have to change it. So a essential
ability that we had to have is
adaptability.
So sometimes a phase would stretch more
than we thought it would. Sometimes
things would work in a way we didn't
expect. So we had to adapt a lot
and going to topic number four. So here
I present some of the things we learned.
In essence, you can see those as our
results. But I won't dive too deep in
the data and the scientific part of it
as this isn't the focus of this talk. So
once again, I'm going to promote another
talk I'm going to give tomorrow about
the scientific part of it. So if you are
interested, I invite everyone to see
that tomorrow.
And the way we got our insights was by
collecting and analyzing data from three
main sources. The first one was the
mentors observations that were recorded
throughout the course and after it. And
speaking from personal experience after
a semester of closely accompanying
students, we had a solid understanding
of how much they evolved and where they
evolved.
Secondly, we ran a voluntary survey for
the students at the end of the course to
aggregate their perspectives in
hindsight. So they were looking back to
everything they did throughout the
course. So for example, some of the
statistics that I showed about the
demographic stem from these surveys.
And the third data source were the blog
posts themselves which had data that was
much more raw but at the same time more
contextualized to when the blog post was
written. So by triangulating the sources
we find out that we found out that
starting with Linux development was
indeed a bold move but at the end of the
day had many positive outcomes. But I
mean I don't get me wrong the first
phase was chaotic in both offerings and
in the second offers offering we did
prepared so much and said oh this time
there won't be chaos but chaos came
anyway.
So uh students have to overcome many
challenges like not being familiar with
GNU Linux systems or using terminal or
CLI tools and there were like many
strange problems from setup because we
were messing around with the kernel and
virtual machines.
But at the end of the day, this support
that mentors and the collaborators gave
could solve mostly all the problems
except of course users of Windows
Subsystem for Linux, which we didn't
help. Now, jokes aside, even in those
cases, we help them by convincing them
to at least do a boot to a GU Linux
system. And this may seem like a joke,
but if you're trying to take something
out of it uh and try to do something
similar like this, we do really uh
recommend staying away from Windows
Subsystem for Linux. There are ways to
do this. But at the end of the day, we
found out that it isn't just much worth
it to to use it. And we learned that
from all this chaos, gin gin Linux and
free software in general was much more
demystified as students didn't seeing it
more like a obscure thing or distant. So
they were much more like, "Oh, I thought
this would be really stressing and I was
scared of diving it." And at the end of
the day, they said, "Oh, it isn't much
of a trouble." So, okay. But most
importantly is that starting with the
Linux made students a ton more confident
and autonomous to the point that they
claim that they felt uh confident enough
to contribute to any project. And a
funny thing that we also observed is
that as the course evolved, they became
less and less dependent on us mentors
and even started to help the other
colleagues.
Throughout the the talk, I kept
stressing that we focused on mentorship
and on-site workshops because from all
the three data data points, we confirm
that those were paramount for the
success of the students and possibly the
biggest strengths of the course and
beyond that when activities had to be
done outside the workshops like engaging
with the patch set development of phase
one or doing the contributions of phase
two. The students that were present in
the workshop reported that they found it
easier to do the assignments at home.
In terms of skills, both hard and soft,
we detected that students left the
course with a solid foundation of Git
and overall good practices and some
struggles that I just mentioned like
having a difficult time using a G Linux
system or interacting with the computer
through terminal and using CLI tools
were generally not a problem at the end
of the course. Um students learned that
good communication is key and
acknowledged that this skill goes a long
way in terms of succeeding in free
software as a contributor. But on the
other side, they also mentioned that
good communication was a desirable
characteristics for maintainers and the
community in general, which I don't
think this is much of a surprise, right?
But a curious curious thing that we
didn't quite expect it because there
were some strange projects that had the
requirement spec specifically in phase 2
that had the requirement of being
related to Gino Linux. We we detected
that the specific skills for the the
project didn't matter much in the end
because everyone contributed to many
different projects and although they had
some problems that are natural for you
when you are learning to contribute to a
project everyone could accomplish to do
this. So this is kind of a curious
result you can say.
Uh and also uh finalizing with the Dian
packaging that was much more much
shorter and self-contained was really
really important because it displayed
how free software is all about the
community. So the people who are
evolving it and maintaining it. So it
fixated the idea in students that the
most important thing in a project is
indeed community and it also gave a
comprehensive view of the whole Linux
ecosystem as at the end students had
experience all the different layers of
it and also the concept of a distro was
dismystified as it realistically showed
how one is maintained and how the choice
is taken gave each dro a unique flavor.
going to the final remarks.
Uh so first how we came up with the idea
of the course. Back in 2019, Rodrigo
Cicera and other members of Flus
did a 10-hour hackathon. I don't know if
I can call a 10-hour session a
hackathon, but anyway, uh that was
called the kernel dev day. And the
objective of it was to produce and send
a contribution to the IO subsystem. So
this simple initiative was the seed that
sprouted in what ended up being the free
software of course the free software
development course that I was showing
you.
Uh also I emuspy has a long history and
deep ties with three software. So the
just mentioned flusp is an example as in
its own name which is flaws atusp. We
can detect the flaws word that if you
are not familiar with it it means free
li and open source software. So we have
an extension group for it.
Um there's also the so-cal ginu Linux
network which is a computer network that
is in production at imus since 1995 and
runs debian. So it's it's really
interesting and that hosts many services
that are essential for the imus
community. So for example, all capstone
projects are submitted to the gin Linux
network and whatnot. And as I promised h
at the start of the talk, this acronym
CCSL in free translation goes to free
software competence center and that is
that building inside where our computer
department is located and where all the
activities of the course took place.
And I mean I could go on and on citing
some of other examples of this bond
between the institution and free
software like the Linux install fest
that Flu organizes every year to help
people test and install Gino Linux in
their own hardware. But the point of
this slide and the slide before is to
give you some kind of a disclaimer that
even though our results may be of value,
we have the privilege of having this
longlasting baggage. So this could be a
factor on why we kind of successed uh
was successful in our approach.
Um just to illustrate to you a bit more
how was our experience I'm going to show
you a sequence of uncensored pictures
not uncensoring this the sense of viewer
this question but that I didn't censor
the faces of the the students like in
the other pictures that I show you. uh
this slide and the next ones won't be in
the uploaded version. So I think it's
just to illustrate to you what the
things we were done doing.
So, some of photos of the workshop.
Uh, here another take of the classroom.
Sometimes the room that was this one
which was our main classroom wasn't
enough. So, we had to occupy the
corridors and other places of CCSL and
it wasn't uncommon for people to come by
to us and say, "Oh, what's going on?
What's happening?" And it was a good
opportunity for us to introduce free
software. So this was kind of a good
side effect so we could uh advocate more
for free software.
Uh here's a picture of Ter and Shala
and J also here in the J is coming up a
lot in my presentation
and they were talking about uh
continuous integration in the context of
Linux kernel.
Another shot of the class in lecture
mode. Uh here's Melissa Wayne talking
about the work she does at Egala with
graphics and GPU drivers in the kernel.
Uh here is Magal explaining the work she
does at Canonico and Ubuntu.
Oh, this is really nice. Uh I think it
was the 2023 edition of the Linux
install fest. So as you see there are
many people here sitting with laptops
and we had like a bunch of live boots
and installers. So this is like a
tradition in our institute.
U more workshop photos the main room but
empty. And here is where we stashed the
tables. So they were really close to us.
So we could do like even not only uh
workshop sessions and lecture sessions
but we could do hybrid sessions in the
sense that we started with 30 minutes of
expository classes and do the other one
1 hour and 10 minutes in workshops
because it was really easy for us to
rearrange the chairs and open up the the
the legs of the the table. And finally I
think this the last Yeah. and Charlie
and Kanashi conducting the Debian
packaging workshop.
And to end this talk, like the previous
speaker, I would like to read an excerpt
from the freedom by Cecilia Meresh,
which was which is one of the greatest
Brazilian poets from all time that reads
as and I hope I don't butcher it.
We are then creatures long nourished by
freedom, inclined to sing it, love it,
fight for it, and certainly die for it.
In short, to be free is to be
responsible, to reject the condition of
being an automaton or remotely
controlled, is to proclaim the liinal
triumph of the spirit. I suppose that's
what it is.
And
okay, so this is what I had prepared for
today. Uh actually given that I have
quite a little bit of leisure time, I'm
going to show you some interesting
stuff. Oh,
that I have prepared. So yeah, this is
one of the many patch sets that I just
did a quick sampling of the of the some
of the artifacts that were produced
throughout the course. So this one is
from a student that did quite lot of
interactions with the maintainers. So
they had this is a version six. So they
had like many iterations of review and
you can see that uh he engaged a lot in
reviewing and the funny thing is that he
didn't quite really knew what Linux was.
He thought it was oh this is the thing
that runs on Android right so he didn't
quite had the grasp and at the end he
could like do a really robust change. Uh
another thing uh we didn't just do not
there is nothing uh wrong about it but
we we didn't just focus on trivial
changes. So for the example we had a
student that send a patch to reduce
duplication and at the end he removed
400 lines of code from the AMD GPU
driver. So it was of good impact right?
Uh
ah here is the
the pad that Kanashid and Charlies Meada
gave to to us. So they prepare a whole
list of packages to people to finalize
the packaging. Of course they prepared
it a lot for us but it was really nice
that they had the this experience of
sending a contribution to Davia.
Uh we had also a student from the first
offering that started contributing to
Gnome. So uh he did quite lots of
contributions to the point that he
contacted the maintainer one of the
maintainers of Gome who is George
Stravasc which was a Brazilian and he
even ended up came to coming to Imusp to
give a lecture. So this was really
interesting.
Uh we also had let me see what was okay.
We also had some bad experiences like
toxic behavior which I won't focus too
much but just to show you that it all it
ain't all just roses right because this
was an example of a student interacting
in a issue. Let me see if I go down
here. We're like, oh, no one's willing
to fix, but I don't really want to focus
in it. But just to show you that's all
always the other side, right?
And for example, all of these closed uh
pull requests were submitted from
students in the phase 2 to K workflow.
So yeah, we we had quite a a var
variability of things we did in this
course. But yeah, this is everything
that I planned to talk. So thank you so
much for the attention and I'll be open
for questions now. Thank you so much.
[applause]
Hi. Well, uh Oh, thanks. Erh. So, well,
congratulations for this work you're
presenting. It's very impressive. Erh,
one thing that well, you know, we that
work at the universities, the first
things that jump to my mind is the
administrative
bureaucratic health that we often have
to traverse. Uh, was this course a
course granting credits? How do you
manage to have a course with both
undergraduate and graduate students? And
well, how how was that part? we have
that as a complete separation and it's
well very very tough to propose
something like this.
>> Well actually funny enough it is quite
common for in my institute for us to
have courses that mix like uh under
undergraduate graduates and especially
students alike. So this isn't really
uncommon for us in the sense that I
would say in the bachelor's of computer
science which I've done I would guess
that 30 or 40% of the courses are hybrid
in this sense. So this wasn't much of a
problem. Uh
but yeah, we did kind of a really
specific thing with the evaluation. So
we didn't have tests. But this is a
specific part that you asked about
mixing graduates and undergraduates
wasn't quite a problem. It was it is
quite common in our institute. Yes,
>> if I can follow up. I know the I know
the institute. Um the thing it's as if
it were two different courses. Uh in the
graduate level they required to present
more like for the university
perspective. It's like they have
different evaluations. So the level of
an undergraduate the how they are
evaluated is one way and the graduate
are evaluated in another way. So you
could have two courses but they actually
run on the same space.
>> Right?
>> And it makes sense. everyone benefits
but at the end it's as if they were
different courses.
>> Yeah, thank you Ta. I think uh she
answered better than me because this is
the reality. We do kind of the same
activities but uh in those courses it
isn't also common for people from the
postgraduation to have to do uh more
robust things. They don't have the
chance to uh fail and do a final test to
recover. So although courses are mixed
up, yes indeed at the end of the day
it's kind of two courses in parallel
having the same class sometimes even
splitting classes. So yeah, thank you to
because I didn't answer it right.
So you talked about um [clears throat]
so you talked about workshops on site.
Um, so were the students partially in
their homes or or across the country or
how was the setup there or were they
permanently resident around the
university and could attend in person
most of the time? So what was the setup
there? Yeah, that that's kind of a
limitation because we didn't were like
uh too much strict in the sense that you
should be here in every workshop
but uh you you needed to be present in
at least like 80% of the classes. So
yeah, we people had to be present in
person. Uh now that you mentioned it, we
can we could adapt it. But one of the
things that I'm also going to talk
tomorrow is the importance of this
in-person workshop and whatnot is to
create kind of this simulated community.
So people sitting around tables much
like that camp, right? So it can work uh
not only uh distributed with people
doing uh meetings and and other stuff
but also asynchronously. It could happen
but
I feel like it loses a little bit of the
purpose of the c the course but yes this
is kind of a limitation of it right.
Hi. Um so um uh we discussed the course
before and I it's really intriguing and
surprising to see the opposite end of
yeah we maybe let's not go from the
shallow depth to a deeper thing and more
so learn like learn more of the
technical aspect of it. What really
interests me? Well, what is my concern
or well my focus is did people do you
think uh like I remember you mentioning
something about some people from this
course eventually switching to Linux
distributions full-time or learning to
actually use their systems to more full
potential with uh other free software.
Do you think that other parts of
people's life also changed? Like I in
one of the slides I believe uh of a
screenshot of the pad you had prepared.
Um there was a screenshot of there was a
contact information for you and it was
still like a telegram handle. Uh yeah
this one. So like it's good to see it's
a pad hosted on rise up which I
appreciate but uh it's not like a Google
doc or something but I think uh I would
like to inquire like do you think people
changed their social habits like did
people communicating over emails for the
Linux uh development actually changed to
start using emails for uh their personal
stuff?
Um, I wouldn't say that it was uh too
much impactful in the sense that people
that were just accustomed to WhatsApp
and other messengers started like using
IRC or email so much. But I can give you
an anecdote for someone that quite
analogously with the one who didn't
actually knew Linux. Uh that uh she
didn't quite understand how email
worked. So because patches are sent
through email in in the kernel, they
must be plain text. So some uh email
clients like Gmail and whatnot, they
don't quite render well. So she was
saying like oh this maintainer is
answering me with blank reply I can't
see the reply and then we say oh we have
to teach people to go and click with see
the original m format right and I can
tell you that it mutated a lot in this
sense but for sure people started to
using Linux and it became kind of a joke
that
uh in the final presentation or during
some of presentations when people said
oh I never used Linux we started learn
using Linux everyone applauded so one
more one more to the team so
yeah this is it but to answer more
shortly yeah we had kind of impact but
in the sense of using email and whatn
not I can't tell you for sure right
>> time's up oh I have time okay so my
question is um you mentioned that the
phase is the different phases overlap.
So what why why was that? Uh I missed
the detail.
>> Okay. No, the thing is because uh the
final part of the phase one phase one
lasted around two months in both
offerings. So the last two weeks we had
also workshops but they were much more
focusing oh see this pool of issues and
try to contribute it to and after the
two weeks we started phase two. So there
was some buffer time for maintainers to
reply and also to uh say maybe the
review was this is good but change this
a little bit and the people changed it
and the reviewer or the maintainer
lasted a week or so to reply again. So
there were times where people were still
working on a contribution that was
started in phase one but ended around
phase two or phase three and the same
goes to phase two with general
contributions. So we had times where the
pitches for say phase two contained
updates from phase one. So they kind of
over overlapped in this sense but the
activities were yes they were
containerized in this sense. Yeah.
>> Thank you.
Okay, this is the time is almost up and
uh uh thank you the do session. Thank
you.