Transcript: Django Fellow - Mariusz Felisiak
hi and welcome to another episode of django chat i'm carlton gibson joined as ever by will vincent
hi carlton i will and we have special guest today mariusz feliciak my fellow django fellow hi marius
hi carlton hi man um so marius um let's begin um you're a django fellow like myself so let's
Let's first of all talk about how you got into Django,
and then perhaps we can get on to what the Django Fellowship is and what we do.
So tell us about how you found Django and how you got into that.
So I worked with Django for almost 10 or 11 years now.
And most of this time I worked with Oracle databases.
And in the same time I used Django heavily.
It seems that it's not a common combination.
It was quite rare.
When in 2015, I think, Django folks posted, announced that they are trying to find someone
that will help in maintaining the Django ORAC backend, the entire ORAC infrastructure
and everything that is related with ORAC.
Because if they will not find anyone, then they will consider to removing the ORAC backend
from the core because it's really hard to maintain without an expert that is using it daily.
I decided that maybe that's the best time to start to contribute to Django to help them with
maintaining our infrastructure and to be honest I was really surprised at the beginning with such a
warm and friendly welcome because basically at the beginning as i was a person that nobody really
knows and after a few weeks i started to be responsible for the oracle ci infrastructure
and i started to contribute to django
This became a part of my daily routine, to be honest, so after my normal day of work,
I check in new tickets, try to find bugs in, especially in the arriving backend at the
beginning, but then I moved also to another part of Django, I tried to find some small
optimization, cleanups, reviewing pull requests, which is not really a common thing to do,
because most of contributors would like to submit patches and be a part of Django,
be one of the authors of Django,
but there's only a small amount of people that really would like to review tickets
and check if they work properly.
Right, and you said you were doing that...
Because it's the hardest job.
Yeah, no, I mean, it's difficult, right?
I mean, we'll come on to the fellowship role and what that is in a minute,
But you said you were doing this after your work.
So it was like you were employed.
Were you using Oracle at work as well?
Yeah.
So we used Oracle Database and Django at work.
And after normal day of work, after eight hours,
I came back to home and used my computer to contribute to Django.
So it was quite a hard time for me because also in the same time,
I tried to defend my PhD.
I also have a family, a small kid, etc.
So it was quite a hard time for me.
Yeah, because one of the big things with open source is people getting burnt out,
people putting in too much, people running their energy levels low
and then not being able to carry on.
So, I mean, how did you manage that?
Were you allowed to contribute as part of your work
or was it purely on your own back or purely extra time?
So I did this purely in my extra time,
so it was a really intensive time for me.
But now, finally, I have some free time
because Django is my daily work,
so I don't need to do this in my extra time.
But still, probably I spend some extra time in Django.
Yeah.
Do you have any tips for people contributing?
Like how to be aware of how much time they give
versus the other things in their life?
For sure, you should have some bounce of time
that you want to spend on any open source project.
It doesn't need to be a Django.
So you can contribute to one of Django third-party package.
you can contribute to another open source package there is plenty of them
there is a there's plenty of maintainers that really would like to get your help
that was not so obvious for me at the beginning when i started to to work in an open source world
because i imagine that all open source packages and their maintenance are just
some kind of superheroes out know everything and and it's it probably will not be helpful for them
to to to to get any any time or any code from me but that's not true right not all superheroes wear
capes right but like all projects are under maintained or well i don't know i don't know
whether all projects but most projects most maintainers could do with a helping hand like
they could do with your input yeah i've said i've started with really small uh django filter packages
that is called django request and it was also quite surprised for me that after sending five
or six pull requests to to this package it may turn and ask me to hey maybe we will create a
Django request team and you will help me to maintain this field map. I was really surprised
also with such a word welcome because it was someone's work and
he gave me an access to his repository and asked for help. It was a small but big step for me.
open source maintainers are very trusting i was curious carlton since you also got started with
a number of packages if that was a similar case where a couple prs in the maintainer says
here's here's the store here's access because in you know non and non open source engineering
context no one would do that but it seems actually quite common uh in open source if they get a sense
that you're a reputable actor um i guess you can always revert everything but people are pretty
trusting once you've crossed a bar. Yeah, I think so. I mean, the issue is time, right? So,
you know, I've got a few projects that I want to work on over the summer. And the reality is we're
halfway through the summer, and I've, you know, not had very much time to work on them at all.
But, you know, I'll chip away and, you know, I'll get to do a release in the autumn. But
the cadence for that kind of management is very much slower than, you know, something that's
fully maintained with paid time simply because it's volunteer effort and so if you can come along
and say look i'll fix this issue or i'll you know triage tickets or i'll that's amazing um i don't
know a single maintainer who's not going to jump at that because i don't know any project which has
got more hands on it than is needed to keep it going right uh well uh marius for you um what
was that process like uh becoming a fellow how did how much work did um carlton need to do to
indoctrinate you or what was that onboarding process like because when we had tim graham on
um carlton and tim talked a little bit about that process but what was it like for you because that
was that wasn't that long ago so to be honest at at the at the very beginning
it wasn't
really tough for me because
I was already a part of the Django
core team
I had access to the Django repository
I was aware of how to
backport changes, how to
review tickets, how to
triage tickets, etc
so I know the
entire process
mainly
I can say that
But especially I should be thankful to Tim Graham for that because from 2017, when I became a member of Django Core team,
He helped me a lot with reviewing tickets, with the entire process, with a lot of tips
and how to do some things.
So I'm extremely thankful to him, to I can say Scheiberger, because he was responsible
for the Oreg backend previously.
Of course to Simon Charette, who is our ORM star in the jungle, so if you have any questions
heavy ORM specific issue, then we can also ask him for help.
But I don't think that the entire process of
becoming a Django fellow was really tough for me. I just switched from doing
almost the same in my extra time to normal daily work. Maybe with some
small differences like releasing Django, previously I didn't know how to release Django,
there is a new version of Django but now I can do this. Yeah, I mean the difference is well I wasn't
actively maintaining Django before I became a Django Fellow whereas Marius was. I got the
the fellow role from the basis of my work on drf and jenga filter and you know other packages but
maris has already been there and working on the orm and you know when tim said he was going to
step down i was a bit like wow tim knows so much how's it going to work without him and then when
the fellow committee then they nominate when they picked marius i was like wow that's the perfect
person it's you know exactly i know you were telling me like and i was asking you how do you
how you felt about it carlton you were saying how thrilled you were and then you've been saying the
same thing the last couple months how you know maris is a superhero amazing work you've been
doing maris so thanks anyway right maris tell us about the um what is the for our listeners tell
us about the fellowship role and tell us you know what that involves and you know what is the
fellowship role for people who don't know because i've seen you you you do tweets i think monthly
is it talking about um tickets you've you've handled um i find that uh very helpful i almost
wonder actually for you two fellows um in the same way that tom christie does a monthly update
if perhaps more visibility on the the roles that you that you got that you both are doing would be
helpful to the community well there is we do um fellow reports on django developers where we um
which is the public the the public facing work that we do so that you know tickets that we've
reviewed on track or um or prs that we've reviewed on github um we see those there's other work that
we do like security work which we don't put in those those fellow reports but yeah well maybe
it's maybe it's more just there's a divide between developers and the rest of django and
i feel like um you know perhaps i can promote it a little bit on my newsletters the fellows report
but i think most people aren't actually aware of what the two of you are doing yeah maybe what are
we doing what's the uh yeah so what are you doing even for me it was quite hard to uh explain what
i'm really doing in in this job even to my previous colleagues or other developers here
when they asked what you are doing as a jenga fellow and when i try to explain them that it
It is not mainly related with writing a Django, with writing a code to the Django core.
I was quite surprised that it is not the biggest part of our job.
So we are mainly responsible for reviewing tickets, for triaging tickets, for reviewing
pull requests.
think that's the main part of our job and so my daily routine starts from checking Django updates
with checking all events on our track instance comments that people add new tickets etc
I started, I mainly started from reviewing tickets, reviewing unreviewed tickets
and after that reviewing pull requests, left some comments. We are also responsible for
maintaining CI infrastructure, we are also responsible for
Bing for example on IRC channel and other support Django channels to
be one of the line of supports for users but we have so many people that are involved in
supporting users on django users google group or in django irc channel that
it is not a it is not the biggest part of our daily work so mainly charging tickets
reviewing requests merging them backporting changes but we are also checking django security
group discussed security issues if it's a security issue or not how to solve them
mainly that's it and doing the security releases and yeah yeah that's one of the biggest yeah we're
gonna sorry call them we're uh we'll link to the django developers and django users groups because
i'm i'm looking now at the monthly fellow reports that you um you both put out um so for folks who
do want to see there is a lengthy detailed report i just this is the separate question of communication
within django and it is when you use it at google groups work but um maybe not the most public
facing forum for stuff i mean one thing that's been coming to me recently over the summer there's
been you know we just did a security release release with four security issues and then the
month before that there was a security race with um one or two i can't remember without looking
right now but there's been a lot of work there and then there's also been issues on django project
tom.com and then there's a django people and there's django packages and you know there's
there's all these other extra site django snippets i think he's under the um django organization now
as well or has been for years i don't know but there's these other bits of the kind of django
ecosystem that ostensibly marius and i meant to maintain as well or part of our remit is to keep
those maintained we just don't have the time because we're working on the core django project
um the django you know open source project the django and so one thing that's really been coming
to me is that is when as an as another way that people could contribute is in all these other
things around the community which i've been coming to realize are part of the fellow role
but which are almost unmaintained because there just isn't the bandwidth there to support them
well what's an example of a community that does this right is there a a language or framework
django can borrow from um i mean because this is a hard problem that's a good question um i guess
part of the issue is that django truly is open source and community driven whereas some some
projects are much more solo efforts with a little bit of help and so those solo efforts can have a
canonical you know i'm thinking of view or laravel where there's one person who's really
driving it i guess um drf it's you know it's you and tom carlton for quite a while yeah i mean what
would i say i mean i think there's things like django packages which has been around for a long
time which is super which is great um and there's django snippets which again has been around since
the early days of django and but they're not really picked up and loved and we either need
to sort of say to them well say either we need to go to the dsf members mailing list which if
you're not a member of the dsf join it as we say every week almost um but we either need to go to
that mailing list and say hey there's there are these resources that need maintaining can we find
some volunteers to help maintain those or we need to end of life them and scale back a bit um i don't
know what do you think maris because you you i saw you a week or two ago you ended up spending
you know quite a lot of time maintaining django people um so what happened there and what are
your thoughts on the scope of the of the django project yeah we have a lot of packages and
to be honest also a lot of sites that are under django swings so uh it's it's it's really hard to
maintain all of them
just like the issue that we had
with Django
people
a week or two ago
with some
strange size
that we get instead of
Django people
and to be honest
it's still something that
we did not understand
how it
was having probably some issue in Heroku, but it's hard to understand what really happened.
But yeah, I spent the entire day on bumping requirements, on redeploying Django people on Heroku, etc.
But previously, before this issue happened, I did not really spend time
in maintaining Django, in maintaining Django people so
But suddenly an issue appeared on the Django people that they have a strange size in-seat of Django people and maybe we should
fix this
So I was whoa
What just happened?
It's really strange. Maybe some outdated requirements? Let's bump them?
No, no. It wasn't better.
So yeah, but it seems that currently it works fine, but we have a lot of packages
that are currently in the Django org, like Django docker box that we
moved from Tom Forbes' repository under the Django.
Let's talk about the Django docker box project for a minute.
What is that?
Because I think that's going to be a really useful tool.
Can you explain what that is and how people might use it?
To be honest, for me it's extremely useful
because I'm not able to have multiple databases versions on my own laptop.
In the Django docker box we have ready-to-use containers with a different version of all
databases that are currently supported by Django, with different version of libraries, for example,
GIS libraries. And you can use them to run tests. We can use them to find issues on different
versions. Because our CI infrastructure currently works with a single version of each database,
mainly the last the newest supported version of each database and in the Django docker box
we have all supported versions with the entire test suits and we are able to catch some small
issues in the previous version of each database like I don't know this single test is failing on
PostgreSQL 9.4
for example
or MariaDB 10.1
point something
which you will not be able to catch
without it
and it is also really helpful
for users because you don't need to
set up the entire test suite
Right, so that's what I was going to say
Do you think using Django Dockerbox
is a better way forward for new contributors?
I mean, assuming they're happy with Docker
you think
that's the way forward to recommend to
new users to get going with the Django
DevSuite and get going
with it. Exactly, if you have a
basic Docker knowledge like me
then you will maybe
to use them
to run the entire test without
the entire
process that
can be quite hard to
set up database
1, 2, 3 or 4 different
databases
databases and to set up everything correctly
it's easier, especially if you are trying to submit a patch
to the URL, it's the hardest part because you need
to support all database versions
And so speaking of all database versions
you said you got into Django because of your use of Oracle
because you chose to support the backend, so for all of us who aren't using Oracle
what what's the offer what's you know because it's got this reputation as the enterprise
beast but you obviously have fun with it so you know give us the 10 second elevator pitch what's
oracle for us and why should we use it yeah i think that the oracle is just a normal database i i know
that is maybe not as supportive for users and developers.
That's the main issue, I think, with the ORAC database.
That is not developers-friendly,
just like Pository SQL, for example, or other databases.
But it is changing in the last few years.
So you can see that there is a process
of changes in the ORAC database
and it starts to
look almost like
a PostgreSQL.
For example, a year or two ago
they added a feature that is really similar to the
different databases like in the PostgreSQL.
You can have different databases in the same engine, in the same instance.
So I think that it was a big step forward.
Now they are trying to support JSON fields and a few other features that they added recently.
So it's better than it was a few years ago, but currently I'm not using it daily.
So, and I'm thankful for that, to be honest.
I think that the biggest advantage of using Oracle Database
is the entire asset of enterprise management utilities
that they give for you.
So, probably you will not find so many features for DBAs
like in the Oracle Database.
Okay, so it's easy to administer.
Yeah, it's easier than in other databases.
Oh, I was going to ask if Oracle ever reached out to you
or other Django people directly.
Do they give a shit about Django with new features saying,
hey, we worked on this, or is it just they toss it out there
and assume someone like yourself will do the free work to integrate it?
I'm not sure if they really care about the open source world,
But few years ago, they take under the Oracle organization at least Python driver that was previously maintained by a single person.
Currently he's an Oracle employee and I think that it is his daily work to maintain Python driver for the Oracle database.
so at least some step forward but but yeah they did not try to uh preface i'm not sure if
we try to reach them to to to get some funds it's it's hard for me to say it seems like something
that we should do right we should reach out to this giant megacorp oracle and say hey can you
give us some peanuts so that we can maintain the support in the leading or one of the leading
python web framework well and there's a real danger marius with you not using it day to day
that it will not be as maintained as it has been so who would we who would do that reach out carlton
this is actually just so we make this for those listening part of the problem with django is that
there's a lot of cooks like who who would anybody who's empowered to do that reach out so marius
could email them i could email frank could email frank president of the sf board could email them
but we'd have to put that on his radar um you know any member of the dsf anybody any user could
be like hey i use django and i listened to this podcast on django and they said that oracle don't
fund maintenance of the back end how about you fund like but yeah ultimately i guess we should
reach we should reach out and say hey dear oracle please can you support us but well and ultimately
it's finding there are big companies out there using oracle and django and in the absence of
support we'll need to drop one or both for their project yeah probably the hardest thing in
reaching them would be to to get contact with someone that that that really can make a decision
yeah because it's a huge organization yeah well yeah and we don't have to spend the whole episode
on oracle but they must it must be a solved problem for some other frameworks or languages
it can't always just be this beast that is totally disconnected from the programming world that uses
it and pays their bills anyway maybe someone from oracle is listening what would be like what would
be helpful i'd be nice like for you both what would what would you like people to know about
fellows that they don't already know and what could the community do to make your roles easier
Probably people that are not maintaining any open-source project don't know how hard it is to maintain open-source projects.
So, one thing that I like to say, if you reach any open-source project, Django or any other, then be polite to maintainers.
because they are real people that, in many cases, have their own job,
have their own family, and maintaining open source projects
is not what they would do daily for eight hours.
And sometimes in an open source world, you reach that kind of discussions or conversations
conversation when people are just arguing or or trying to
say not really supportive things like you are not maintaining this package very well so i will not
use it yeah and they are not there you don't understand that it is not something that uh
would like to hear and in most of cases they shouldn't really they don't really bother of
that kind of comments yeah yeah well it's and i think it's it's an extreme version of what
happens to a lot of software um if you if you're at a startup there's often the case where you're
less happy as it grows because the numbers on the screen increase but the amount of complaints you
get from users that's you know you hear those and you have to deal with those so even though
you've gone from 100 to 10 000 users day to day you're going from 5 to 50 complaining people and
so you're just sort of miserable because there's that disconnect between digital and the human side
of what you're doing and i for for you both as well you yeah and i think a lot of that like the
the job of tree art the reason why no so why was the fellowship program created was because no one
was triaging tickets and no one was reviewing pull requests and it can it it can be really
difficult you know you've got a pull request that's three years old on the ticket that's
nine year old nine years old that's been updated and some more tests have been added but comments
which were vital four years ago haven't been addressed and to find that history and to really
work out what's going on it can you know it's really hard work and then you get to the end of
then you're like wow i'm exhausted and that's why the fellowship role exists because that work
simply can't get done and we're working our butts off to get us to do as well as we can
and if people people all i guess i would ask is people recognize that and people realize that
we're doing our best and if you don't agree with us that's fine just say hey i don't agree and try
and explain why rather than the passive aggressive or i'm going to stop using janga it's like
you know
come up with a better insult
right? I mean that's not
yeah
but I need to say that in Django community
we are
really happy people because it's not
really often that we get that kind
of comments
but yeah instead of
adding comments to some
track tickets that's when you will
move this forward
you need to always remember that
patches are welcome yeah if you want to move it forward prepare a patch and we'll review it as
soon as as we will be able to and we we do quite well you know we did like the the patch so in the
track system there are patches which there are lots of patches submitted there's 200 open pull
requests but lots are flagged with need improvement they've got reviews on them or they need
documentation so they've got reviews there's only about 20 which are sort of they not with a review
already in place and that that 20 rolls over pretty quickly you know you we get there we get
there quite fast we i think we do quite a good job and you know maris is amazing and i do the
best i can so well marius i'm curious for you uh so django has a number of new features coming
forward i guess most prominently um async what are you excited about that's coming to django
as opposed to the maintenance role
that you have to spend a lot of time on?
To do this async thing,
I'm not an async person or an async expert
and it was a huge challenge for me
to review this first async ticket
with adding an SG handler, for example,
because I didn't even know where to start.
And in the same time,
You are responsible for adding this to Django, for the quality of this code, because partly
we are responsible for that, for not creating new regressions, etc.
So I had to learn a lot about async in this first patch.
And probably I will learn even more when we add async support for views and to another
part of Django.
I think it will be a big challenge, I'm not sure if we will be able to reduce Django 3.0
to at async support for views, but we'll see, because we have only one month to the feature
freeze and also a lot of other features in the line like adding enums for example to Django.RM,
adding a new currently we added a new exclusion constraints to PostgreSQL, we
have also a lot of new features that are waiting in the line and currently when we have only one
month to the future freeze you can see a beginning of this pressure that's my new feature you should
add it because if not then I will need to wait another few months to the next Django release
so please please add it at this last day before the future freeze you should review it and
move it into coral. So we need to be really
assertive people, at least in these few last weeks before the future freeze.
But we have so many new features currently in the Django 3.0 that even if we will not add any new
new feature to Django 3.0 it is already astonishing what is that date for a feature freeze it will be
at the beginning of September 8th of September I think 9th I think but yeah okay yeah well perhaps
we want to editing note move this episode up Carlton just so that people are aware of that
deadline who maybe wouldn't pee yeah I mean I think anybody who's regularly developing knows
the feature freeze is coming because it's it's kind of yeah i just i think most again i'll be
the voice of ignorance i think a lot of people aren't aware of the schedule and for your yeah
so if someone has submitted something they're aware of that for a regular person they're not
aware that by september you know it's coming in december more or less yeah i mean so the
interesting thing with the feature freeze is like it it gives us time to release the alpha or the
beta the the release candidate get those tested in the community and that's generally speaking why
the the point releases are good quality and they're you know there'll always be half a dozen
little mini regressions in some new feature but the point of the having the feature freeze is to
allow time for those bugs to be found but you know we we have to be i don't know kind of certain that
there isn't bugs we can't just go oh we've still got three months to fix it it's like no no this
is if it's not ready we we can't bring it in at this point right any projects you want to make
side projects you want to mention marius yeah i'm i'm so involved in in django that
in the last i don't know two or three years i didn't have time for any side projects
if people do want to get in touch beyond the google developers uh the developers google group
is there a way that they could or should twitter email do you have any preference
i think that the best way to to reach us is on django irc channel django dev irc channel to be
honest because basically we are there for then for the entire day maybe not actively but when i
start my job I'm just opening RSC channel and I get the entire history from
from the last few hours yes so we are able to respond to any comment there so
if you have an issue with I don't know running a test suit or you would like to
propose a new feature but you are not sure if this should go to the core you
You can add a new comment on our IRC channel, and if not one of us, then probably another
from the community will respond to that.
I think that the IRC channel is the best and the most responsive way to get help in using
Django and to get help with starting to contribute to Django also.
okay great yeah maris is maris is very active there and so a lot of the other core members
i'm less so i'm more of an asynchronous methods person so you know for me if you want to help get
setting up the test suite email django core mentorship and i'll get that and reply there
you know i'm on irc but yeah well we'll link to all these resources in the show notes so
they're available to everyone right brilliant right let's leave it there thank you marius
thank you very much for coming on to the show um it's been super having you and thank you for
joining us everybody we're on twitter at chat django and um django chat.com join us next time bye