 Good morning! These are the Euro-Python sprints. I am going to give you a short introduction. Basically, the same as what I did on Thursday for the conference, plus with a few additions. Then we are going to have a set of short intros to the various different sprint teams. Let's start. Welcome to Euro-Python 2020, the 19th Euro-Python Conference. This is the sprints opening. We already had two days of conference. We sold more than 1,000 tickets. We were sold or registered. We had attendees yesterday, up until yesterday, from... Actually 69 is not right anymore. It's actually over 70 now. 70 countries, which is a whole lot. It's really incredible how this online format makes it possible for other people from all around the world to join. We'd like to especially welcome all the new Euro-Pythonists. So if you haven't been to Euro-Python before, then you're very welcome here. And we'd like to ask all the regulars, people who've come to Euro-Python before and know, for example, how the sprints work at Euro-Python, to help these newcomers feel at home. Because we want to make it possible for everyone to participate in the same way. And we want big family and this is your conference. So basically what you have to make the conference happen. We can provide the framing, but it's really up to you to make this a great conference. We want to thank the sponsors who make it possible to run these events, especially Microsoft and Bloomberg, the main ones. There is a sponsor exhibit available on Discord. I am not sure whether the sponsors will actually attend and be available in those exhibits, but you can try, of course. You can see the sponsors in Discord on the right. They are shown up, I think in purple it was. Well, originally, of course, we wanted to do the conference in Dublin. COVID-19 made that impossible. And so we had to move online. It was a lot of hard work, but we will go back to Dublin and Ireland next year. So you can already record the date. It's the last week of July next year, July 26th until August 1st. And we will start with the organization later this year and then probably announce everything maybe in December or maybe in January. So that you can then sign up there. We will have sprints there, of course, as well. The format is almost the same as what we had for the online event. Plus we will have training days and workshop days, which we had to drop this year. So it's going to be a lot of fun. You know, having an in-person event is, I think, it's always better than an online one. But that's all you can do, right? There is also a chance in doing something online. Like I said, you can join from many different parts of the world. And indeed, many people did. So we had lots of people from Asia join, lots of people from the Americas join. And so I think in this aspect of doing something online, this is not something that you should just ignore. It's just actually something very important. You can reach out to more people. And this also goes for the sprints. We've extended the schedule for the sprint days to have more room for people from other time zones to join. So in the morning sessions, the Asian time zones can join. We've added more sessions in the late night, we call them, after dinner, basically, so that the Americas can continue working there or can run their sprints there as well. It was a huge effort for us to convert from the in-person event to the online event. We do know how to run an in-person event. So that's basically business as usual for us. It's still a lot of work, of course. But we know what to do. We know exactly where the pain points are. We know how to address these. And we know where to get help from vendors and so on. For the online event, we had to basically relearn everything from scratch. So it took us four months to get from basically zero to this, what you have right now. It was a huge challenge. It only worked because of our fantastic team that we have. And I really actually thank our team. We've put a collage up here. These are some of the team members, not all of them. We have 25 people in total. And yeah, I'd like to give them a big hand. So let's play our applause again. This is what we do to emulate the applause at the in-person conference. So, EuroPython is backed by the EuroPython Society. This is just so that you know who is running this. It's a nonprofit organization. The purpose is to run EuroPython and to support the European Python community, much like the PSF, but on a smaller scale. So we only focus on Europe. It's all volunteer-driven. No one gets paid for this. All the profits that we generate using the conference go directly into the grants and the fin-aid. And so this is how we operate. Some statistics from yesterday's closing session of the conference, or the conference days, let's say, we have around a thousand attendees from more than 70 countries. We sold more than 1,000 tickets or registered them. We've registered around 350. Actually, the number is not right anymore. I think it's 390 now. Sprints only tickets. So there is a huge potential there if you're running a sprint to get lots and lots of new people into your project and then welcome them and introduce them to what you're doing. So how will we run this? I think we already put some information up on the website. So we are using Discord as our main platform. Discord is going to be used for chatting. It's going to be used specifically for the sprints, also for the audio-video part. For the smaller sprint teams, we are going to use Zoom rooms for larger groups. So let's say you have a group of maybe, I don't know, 30, 50 people or so, then using Discord does not really work that well anymore. So we will provide you with Zoom rooms. And so we would like to then ask you to reach out to one of the organizers so that we can reserve one of the Zoom rooms for you and then we can configure everything, make it happen. A few words about Discord. If you don't know Discord, it's a chat tool. It was originally created for gamers, but now it's broadening the scope a lot and lots of other communities are joining on Discord to work together. It has a very standard setup. On the left you have, I don't know if you can see my cursor, but on the left you have the channels. You have categories here that you can open and close. On the right you see the people who are currently online. And in the middle part, this is the chat part. What you see here is the welcome channel. This is where you registered for the conference. And then you probably talked to our registration bot who registered you to the rest of all the channels. Most important here is the announcement channel. This is where we will post announcements. And then what's not on the screen is we have a sprint category. And in the sprint category, there's a channel called Sprint Hall, I think it's called. And that channel is going to be used basically for us to mingle. We will post the announcements to the announcements, but probably also reference or copy them into the sprint hall. In the sprint hall you can also then ask organizers if you want help. You do that by using the organizer mentioned. So in Discord, how it works is that you enter this, maybe you can read this, but it's at organizer. And then one of the organizers, the people in yellow here, will then be able to see this and will then reach out to help. There is Discord, if you don't know Discord, it's a bit overwhelming because there's so much functionality there that you have to be aware of. It's quite intuitive. Some things are not that intuitive. So for example, the channel title is what you see here, Welcome. These are typically clickable and then open a dialogue. What we do is we put additional links into these dialogues so that you can easily navigate to other parts of the system. For example, the zoom rooms. So if you go to the sprint hall and you click on the sprint hall title, then it should now have the link here to the Microsoft room that we're using for the opening also later on for the sprint presentations. The Discord channels that we've set up for the sprints, they each have an audio channel as well. The way that Discord sorts, it puts the text channels first and then it puts the audio channels second. So you have to scroll down a bit if you want to find the audio channel for a particular sprint. In order to join a Discord audio channel, you just have to click on it. So entering the channel is very easy. Exiting is not that easy because you have to know where to click. So there is something called a disconnect icon next. It will appear down here. When you only enter a channel, it will appear down here. It's basically an X that you have here. You can then click on that to exit the channel. You can also easily move around between channels. You can drag and drop yourself and then put yourself into other channels. That's possible as well. Down here you see the mute button. And you also see this button here, headphones. This is a deafen button. So you can prevent to hear audio from Discord by clicking on this one. This is very useful. A lot of stuff is going on, especially when you're developing and maybe you don't want to listen to everyone else talking. Very useful is control K. That's a hard key. It's a quick search. If you want to find something, let's say you want to find a particular sprint, you enter control K, you start typing. It will auto-complete and then you can very quickly move around. Something we like to ask is that you please don't share the Zoom links that we have outside the conference because we don't want to attract spammers. Spammers on Zoom are a real pain. It's very hard to get rid of them. Because we wanted to make it very easy for you to navigate, we basically put Zoom links up, which also include the passcode. That's why we don't want you to share the links, because if you have the link, you can immediately join a room. If you do have a problem in one of the rooms that you're using with the spammers, then please contact an organizer and then we can do something about it. Right, which brings us to the next point. We are using Zoom for the larger sprints and also for the sprint hall, for the Microsoft track. It's quite easy to use. We actually forgot to enable that. We should have streamed to YouTube as well. Maybe I can enable that after the opening session and then we can make it happen for the later sessions. It's easy to use. Like I said, you can get one of these rooms by just calling out to an organizer and then asking them for help. The YouTube streaming, like I mentioned, this will be set up later on. And this can be used to replace sessions. It can be used to put the session on your TV, which is nice. We will not make use of this a lot for the sprints, though. Then I wanted to point you to the digital conference back that we have. This is available for the sprinters as well. There are coupon codes, drop-offers, free stuff. It's a secret link that goes to a web page that we have on the website. And the link has been posted to the announcements, so you can find it in the announcements. So it's worthwhile going there. And maybe one of the sponsors is there is in the sponsor exhibit as well. Maybe they can then reach out to you. Right. So what does the schedule look like for the sprints? We had already posted this on the website some time ago. What we did in the past few days is we added some extra sessions down here. So this is new. All of these parts are new here as well. We also added a repeated introduction here. This is mainly meant for the Americas when they joined because this is about the time when they would join to get an additional intro. We will have the same here for the announcements on Sunday so that we can manage like this. And all these orange or brownish kind of fields here, those are the sprinter sessions where you can work. You don't have to adhere to all of these things. This is mostly just to put some structure with it. Lunchtime, you know, this of course depends on your time zone. But it's certainly something where you can maybe mingle a bit in the sprint hall when the time comes and it's always good to get up and have a coffee or have a drink or do something else. So I've talked a lot about sprints. I've not really introduced what a sprint is. Of course not everyone knows or has been to a sprint before or some communities call these hackathons. Sprint is more like the Python term for these things. The way it works is that it's completely self-organized. So there's usually one person or maybe a few people from an open source project or maybe it's just private people who have an idea you want to try something. And they will then want to get together and code together. That's basically the main purpose of a sprint. And the sprints are a great opportunity to work together with other people. If you want to learn something new, then you can get together with people who already know about this perhaps or you want to sit together with some people and then investigate new things. Let's say you have some great idea for a bot or so and then you want to work on that bot together. It's a lot more fun doing this together than just doing it by yourself. And this is what sprints can offer. And the main purpose is to have fun, to learn new things, to try new things. There's absolutely no pressure there to get something done. There's no pressure there to succeed or to have something to show. It's also possible to have negative results. So I often did sprints where I basically wanted to try out something and then found in those two days that it wasn't actually working because I had made a wrong assumption. But at least then I knew that this doesn't work. So it's actually a good result as well because you don't have to spend time on that again. You have a chance to work with open source projects so you can get into open source. That's another nice thing about sprints. And you have the law of two feet, which means it doesn't really apply to the online conference. Of course, let's say it's a law of two clicks or something. What this wants to say is that if you don't think that a particular sprint team or what they do is really interesting to you or is applicable to what you want to have at the sprint, then you can just go to a different team. So you shouldn't be shy. If you selected a sprint team and you find that this is not the right topic for you, then you can just say, okay, no, I'm going to leave this. I'm going to go to some other team because this was not what I expected. That's perfectly fine. No one will be upset or anything about this. That's what sprints are about. Okay, so these are the sprints that we had registered up until yesterday. I don't know whether any new sprints were added. These are also the sprints that have already been set up. If you want to do something else, something that's not on this page yet, then it is still possible to register for this. Actually, I think we should probably put this. I don't know if we have already entered the sprint hall. Maybe put the link here and in there. If you want to add a new sprint, then this is still possible. It's even possible during the day. You should always put your sprint on this wiki page. The wiki page is not hosted by us. It's actually hosted on the Python wiki itself, but the page is editable for anyone. So you can just go there. You can edit it and then save it and everyone will see. And then maybe if you want to announce it, then you can go to the sprint hall and then announce it there. Or you can also ask an organizer to announce it for you so that we put something up in the announcements. After you have put it on the sprint page, then please ask an organizer for help. So all you do is you write into the hall that, okay, I want to run this new session and then you put this add organizer next to the message and then we will see that. It will take a bit to set up because we have to create the Discord channels, the audio channels. Maybe we have to set up a Zoom room for you as well. And we need also in the back end, we need to do some organizational stuff. You should always let us know who is in charge of each of the sprints. So this is something that Nicholas is currently setting up. So we have a spreadsheet that lists all the sprints and we need a single contact of basically who we can work with in case there are issues or the sprints want to have some additions. Let's say they want to have a Zoom room maybe for a short while or maybe for the whole sprint. It's always useful to have a single contact there. So please define one contact and then tell Nicholas about the contact so that we can add it to the sheet. Right, and of course we have a code of conduct. In very short terms, the full versions on the website, in very short terms it's be nice to each other, be professional and don't spam. Especially the be nice to each other is very, very important for sprints because we want to make this very welcoming. We want to have everyone feel at home, like I said in the beginning. And it's very important to adhere to this. There's absolutely no need to get angry at each other. So maybe if you're getting upset or angry, maybe it's better to just walk away from the notebook or from the desktop for a while and then maybe have some fresh air and come back. If you do run into issues with the code of conduct, then these are the people to contact. We put the Twitter and the Telegram links here if you want to contact them directly. Most of these will also be at the sprints. So you can find them on Discord and then use the ad and then the name to contact them directly. You can also reach out to all of these by using the ad COC mention. And then we will see that and then can step in. Right, we hope this doesn't happen yet. Up until now we didn't have any reported code of conduct issues. And of course we'd like to keep it that way. So please be a good citizen and then we can get through the events without any of these issues. Right, so that was all I wanted to say. Enjoy the sprints. I think I overran a bit. Let's now start with the introductions. The way we will make this work is we will have to convert from each of the teams. We will have to convert the lead to a panelist. And then the panelist has two minutes to introduce himself or herself. Let me start with the sprint that we wanted to do for the EuroPython website. I don't have any slides to show there. But essentially what it's about is we want to we have a few tickets open for the website. Sorry, Mark. I would say that the rest of the people that is going to present click in the right hand at the bottom. And I would need to promote them to panelists while you are talking. Okay, very good point. Yes, for those who we have not made a panelist yet, please use the raise hand feature in Zoom. So I see one, two raised hands there. And then Nicholas can make you a panelist. Right, so the first sprint, the one let me go back to the page here with the sprints. So it says here EuroPython website. EuroPython website, this is about continuing development of the EuroPython website. We have a couple of tickets open there. It would be nice if we could close a few of those. Unfortunately, I don't know exactly how much time I can devote to this. Maybe someone else can take over the lead of that one from the web work group. Maybe it's the fun. So that's essentially all I wanted to say about this. So let's see who's next. Nicholas, can you just... Yeah, so next one is the Python doc in Spanish. So Christian can... Yeah, can you hear me? Yes. Good morning. So I can share my screen. It says that host is disabled. I don't know if you can... I'm sorry, let's enable that. Okay, it should work now. Okay, let me try one more time. Yes. And blink once if you are able to see the slides. Yes, we can see. Okay, so let me afraid slides are in Spanish, but I will do the presentation in English so everyone can kind of follow. So good morning and greetings from Berlin. And I am just one of the many people involved in the official translation of the Python documentation to Spanish. I did my best to collect all these flags there. There's a lot of countries involved, so we hope to get many people on board. So just briefly going through some details of the projects, the beginning was inspired by the official... the initial translation by the Python Argentina group and they translate the tutorial. Then they decided to move to a different type of file, the profile, so it's easier to translate and also to synchronize with AppStream. And this initiative was starting around May. We already managed to be accepted officially and if you go now to the official documentation page, you know you can select Spanish from there. So just to give you a number view of the collaborations, we still have many open issues because we need to open more and more due to the amount of people that get assigned more and more. We have a really active community, still 26 only without any assignment. Still some PRs opens that need some people to read it in Spanish and make sense of it. We have many closed PRs of course and the community on Telegram which is the group that we have to organize is around 90 people. So we have a link there that of course we can share afterwards. So if you are interested in the channel, just to get all the details to start, but your nutshell is just for it to assign an issue and then monitor your progress. So it seems like kind of easy, right? But the problem is that we have many countries. So which words do we use since everyone refers to different things in different ways? So for that we also have some memory. So it's like if you have some doubts, you go there, you can check which word to use. And the local configuration is nothing else of creating some environment and to write a couple of tools around the PO files. And if you want to, as I said previously, you have your issue, then you create some local branch, then you submit the pull request. So this is what everything that you need to do. So it is kind of really easy, but then of course people, and this is just an overview, will maybe face these issues that some bills are paying. So just to highlight a couple of, don't worry about it, just to highlight a couple of issues. Sometimes we need to run a wrap tool just to adjust the length of the lines. And then it's really easy. Sometimes we need to monitor some new words that we need to add some dictionary to being accepted because of course, as you can see here, I can use the Argentinian and Spanish one, but there are many other words that maybe come from different places. And also sometimes people have some struggle to update the local branch. So of course we have some workarounds for those too. So that's it. We have some frequently asked questions there, of course, many people trying to do many things with Git and everything. We are all learning this together. So anyone can feel free to ask both in the Discord and also in the Telegram channel that we have there. So I hope that I didn't overuse my two minutes, but in a nutshell, that's the initiative. No, that was perfect. Thank you. So who's next? Next is Kanapi, but I think Camilla is not here because she's from Brazil, so I will skip the one. Actually, some of the sprints put some text up that we should read out. Do you have that? I think I have. So wait a second. So Camilla says that he's going to be connected after 2 p.m. today. Yeah, sorry, there is no... So I would say if you go to Spring-Scanapi, you can... You have some instructions to collaborate. And Scanapi is an automated integration testing and live documentation for your API. So it seems like something that will scan your API and document it live. So it will start at which time? 2 p.m., so Camilla was going to be only after 2 p.m. Okay, perfect. Next one is C-Born API. I don't know if we have someone from the project here. Can you raise your hand if you're doing that sprint project? Or unmute yourself if you're already a panelist. Okay. Yeah, I was also in the C-Born channel, there is nothing. I was asked, it's only me asking if there is... Okay, I'm going to move to the next one. That's a Python packaging. I think we have one person for the Python packaging here. Yes. Going to promote the panelist. Okay, good morning. Hello. Hello, good morning. Hello, hi, can you hear me? Yeah. Yeah, I'm sorry I can't do video right now because of network issues. But I can share my screen. Do this. So next one is Strawberry GraphQL and then is DiamondQuest and Commitsend. So just be ready. Okay, does this work? Yes. Yes. Yep. Okay, cool. So we're doing Python packaging and we are a group called PyPA, Python Packaging Authorities, which we make decisions on packaging stuff like for PIP and other packaging like PyPA.org. And if you look at our Discord, there are some links in the description and you can follow to get some ideas. And especially if you take a look at our Wiki page on python.org, there's a list of people that should be available during the sprint. I believe most of them are in North America, so they should be joining much later. And there are a list of projects that you can work on. And there's a Discuss.Python.org link that has the, like you can use the discussion to link to which one, which person is responsible for which projects. And for myself, I am Su Ping. I work on PIP and PIPM. So if you want to work on those projects, feel free to ping me on Discord for review. Yep. I guess that's it. Thank you. Thank you. Okay, thank you. So next one is a story graph here. Is anyone in the room? Yes, perfect. So hello, do you see my browser? Yes. Actually, I'm not the coordinator for this sprint. Patrick would be available soon. However, just to show you what this project is, what the project is about, it's a GraphQL server that instead of using the scriptors as in most of the software that is dealing with schema, here we are using type annotations. So our way of defining schema is coordinated with type annotations and the static checks of the types. And this is a quite young project. There was a big refactor lately. And what do we expect? There is a number of issues here, which require your work. And also there is missing documentation. So if you want to learn more about GraphQL, more about how can you use type annotations in various ways, then please join the stream. Thank you. Okay. Thank you. Thank you very much. So next spring, I think, Tuk, you are going to present for Jason? Yes. Yes. So Diamond Quest is not my project. It's actually Jason's project, but he's actually in the American time zone. So it's not available right now. So I'm trying to go to the screen. So yeah. I hope you can see the slides if you can. Maybe like Nicholas can tell me. Yes. Yeah. So this is Diamond Quest. So can I? Okay. So I have to use. Okay. So this is like a PDF. So yeah. So this is an accessibility first performance. So it's a game that actually designed for people who got disabilities. And it's a bit. So if you like that aesthetic, then that's great. And also it's a math game. It's reward driven. And of course, it's open source. So Jason told me that it's actually inspired by a friend that got cerebral parsley. So basically, his friend can only move the heart. So we tried to make a game that is actually... People like his friend can play. And also it's also fun for everybody. It's not just for people with that disability. And so there's all these features that is actually going to be implemented in the game. And also it's a math game. So it's self-driven and also it's rewarding. So it's just going to be fun rather than very frustrated for people who try to get the math right. And so it kind of help people who maybe also are scared of math, like get math anxiety, can also enjoy learning math. So it's a bit. So you see that a lot of games is actually very cute being a bit. And also got a keyboard interface. And also there are some animations as well. The most important thing is open source. And it got a BSD free license. And it's also free for everyone. And there will be always this force. So yeah, that's it for them. And yeah, so now this is the sprint. And then so I think the sprint details actually in the channel. So you can join the text channel to kind of see other details. What you have to do to get started. And Jason will be online when he wake up in his time zone. So please don't hesitate to go there to leave any questions or comments there. And Jason will be getting back to you later today. But you can get started. There are some instructions there posted already. So yeah. Awesome. Thank you very much. So Santiago from Committed Send is the next one. Hello. Can you hear me? Yes. I will share my screen. Can you see my screen? We can. Are you seeing the documentation? This one? Hello. Good morning. So in this sprint, we're going to work on Committed Send, which is a tool to automate the generation of the version of your project and the change law. And it has a lot of features. You can read them in the documentation. Some of the commands are BAM, for example. You just type BAM and it will BAM your version and it can generate as well the change law. We have selected many issues. They are labeled as a Euro Python in the GitHub repository. And I'll share in the Discord chat a link explaining about how is the code made or set. Basically, inside the Committed Send folder, we have the commands where each command has its own file. And then in the root, there are different files specifically for each part as well. Then there are some recommendations, highlights, and the workflow. And then we have two branches, one for breaking changes and called Next. And normal changes called Master. And then a lot of resources. And that's it. The channel, I think it's called the Spring Committees and Tools. And I'm going to be with Lee Wee, who is the other maintainer. But he's in Taiwan, so he's not connected yet. But you can already join and start coding. That's it. Thank you. Thank you, Sandy. Yeah, it's me again because this time is my own project. Okay. So let me share my screen again. And yeah, so Terminus DB clients, Sprint. So I hope you have seen my talk yesterday. And well, Terminus DB got a Q-mask cut as well. I forgot to show it in my slide yesterday. So the first thing that I want to show you is that please meet the team. So you can see that this is actually similar to what happened yesterday in the show show. And that means that we all love parties. So we are cool people. You want to work with us. So one of the selling point here. And also we are, you know, in case you don't know Terminus DB, then we are open source forever. This is the most important thing I put it at the beginning. And well, we are graph database. So if you're interested in database or anything like, you know, data related, and this may be a project for you, we are a lightweight database, you know, we use sustained data structure to store all your data. So it's very lightweight. And also we can do revision control. So basically, if you don't understand what that means, it means that you can do what it does. So for the Python clients, obviously this is made for Python sisters. And the sprint today, it will be super beginners friendly. I'm trying to also run a beginners workshop. I think I would coordinate with the organizers whether I would run it in this room or maybe in other rooms. So stay tuned for the announcements. And so for the sprint for Terminus DB clients, and it will mainly about documentation. So if you are scared of doing too much coding, then that's easy. I know so writing some tests, if you want to challenge yourself a little bit more. Or even like if you don't want to contribute anything, well, you can just download it and play around. Like that will be user testing for me. I actually have tickets for that. So and the most important thing is swag. And we got actually very, very nice swag. My colleague Luke actually say on the channel about like, if you successfully create some contribution, then we can send you swag if you contact him and let him know that like where about you are. And we can send you, maybe not the cup, it's too difficult to ship and it may be broken, but like the socks, the t-shirt, the stickers, it's easy to melt it to you. So please consider joining us. It will be fun. Awesome. Thank you. So nice. We're going to present about Kedr. Yes. Hello. Hello. Good morning. Good morning. Good morning. Good morning. Here we go. Perfect. So hello everyone. Good morning. Welcome to Python Sprints. My name is Laiis. You might have seen me around or be hosted by me around one of the one of the talks. Hope you're having fun. And well, so I'm Kedr's developer advocate and I will be running this print in our room today with my project manager called Yetunde. So basically what Kedr is. So Kedr is a Python development framework that helps you build data pipelines. So we have a template that is based on the cookie cutter data science and it implements software engineering best practices for data science and machine learning models. So it's basically it has a very modular kind of style to it. So some people actually say that it kind of looks like the reactor, the jungle of data science. So what we're trying to do with Kedr is basically make sure that data engineers and data scientists collaborate in a very peaceful and effective way. Making production ready code from the get go. So we have a few issues here for you already. We are going to be there's issues from for every type of difficulty. If you're a newbie, I would more than happy to help you learning how to make your first full request. And yeah, so please we're waiting for you with this list of issues. Just join us and we also have swag for you. So yeah. Thank you guys. So next project is the ball backup. I think Thomas is with you. Yeah, good morning. Let me share my screen. Where are you streaming from? I'm from Germany. Oh, okay. So okay, is my screen visible? Yes. Okay, so this is about a board backup sprint. My name is Thomas Waldmann and I'm the project maintainer. And so what's boring about it's basically a backup software. So you can back up your all your files with it. And the special thing it's a deduplicating backup tool. So you can save lots of space. And it also does compression and encryption. And it even authenticates all your data. So you can make sure the data is still as it was when you back up it. So some of the features. Yeah, space efficiency I already mentioned. You can back up to untrusted storage servers because you can always verify if your stuff is okay. There's a wide range of compression levels. We support lots of platforms except the windows. Windows support is still work in progress. There's a command line interface. And also there's a separately available graphical interface named Vota. And as a backup storage, you can either use your own server or your own USB disk. Or you can also rely on some commercial offers. The code is mostly in Python 3. It's completely in Python 3. And the Python code is most of our code. And a little bit of code is also in Python. Some of it is in C, some own hash table implementation. So we need less memory. And we also use some third party libraries like message pack, open SSL, and some compression libraries. These are the tools and services we use. We use Git, we use PyTest. We use Sphinx. The Continuous Integration runs on Travis. And we use WayGrant and VirtualBox for platform testing. We do bounties using bounty source. And the documentation is hosted on readthedocs.org. Some of the sprint topics is if you are completely new to the project, you can get an introduction to the code base. We want to debug, analyze, and fix some issues. If you like, you can also work on the documentation. And what would be especially useful if you use some unusual platform like DSD, unusual for us, or macOS, or OpenIndiana, you could help us improving the compatibility to that. Or you can work on whatever you want. Just join our channel. And we have a GitHub issue about this print. It's issue 52-51. And if that sounds interesting, just join us for the board backup sprint. My name is Thomas Waldmann, and you can find me in the board backup sprint room. Okay, that's it. Okay, thank you very much. Good luck. So Epica True or Epica is the next project, but I think no one is here. And also there is no information in the channel, so I have the feeling that there is someone from a different time zone. So I'm going to skip that one. That means the hypothesis is the last project. I think Sak is over here. I am. Can people hear me? Yes, perfect. We're good. Excellent. Well, hello from sunny Australia. You might be thinking, what is an Australian doing at EuroPython? But I figure if we're European enough for Eurovision, we're European enough for EuroPython too. So I'll be running a sprint this morning while I'm still awake thanks to time zones on hypothesis, which is a tool for what we call property-based testing, which is a style of testing where instead of saying that this specific input leads to a specific output, you declare what kinds of inputs should be allowed and hypothesis tries to generate an output which makes your test plan. This might be easier to explain with a little demo, which is also going to be a sneaky preview of a thing I have in a pull request. So you should be able to see my terminal now. And I can actually ask hypothesis to write me a test. Let's try testing the re.compile function, which compiles a regular expression. And hypothesis will duly spit out this test code for me. So if I pipe that into a file, I can then run PyTest on it. And PyTest tells me that this is just unsatisfiable, and that's because I haven't actually told hypothesis what to generate. Because the remodule is in the standard library, it doesn't have typekits, so we don't actually know what the pattern should be. So let's substitute in something for the pattern. If we instead tell it that the pattern should be text, that is any unicode stream, and then we run PyTest again, we discover that there are actually a whole bunch of different exceptions we can get if we just try to compile arbitrary strings as regular expressions. And personally, I wouldn't have guessed that there are so many different ways to have an invalid regular expression pattern. Specifically, what would you do if you want to join in with our sprint? We've got a couple of things. There's a hypothesis tutorial. If you just want to learn how to use it, you can work through that and ping me with questions, and I'll help you out as you go through it. If you want to contribute to our documentation, add some new features, fix some internal issues, and so on, we've got about 10 of those open, listed in our meta issue that you can see. And I would particularly love it if someone with Django experience wants to look at that. Because we have a cool feature where we can take an arbitrary form or a model and generate instances of it. And it would be great if we could leverage the validators as well to make that better. Or finally, if you're sprinting on any other project, if it's open source, I would also love to help you write hypothesis tests for those other projects as well. So if you want to do two sprints at the same time, we can totally do that too. Thanks very much. Thank you, Saks. Thank you. Thank you for your hypothesis. So I think that was the last project. If we are missing someone, please raise your hand. Otherwise, I think we are done. Sorry. So just a comment I want to say. Mark already mentioned it, but we are planning to use Discord for all the sprints. It should be more easy to manage for everyone because you just can keep that Discord open and the channel will be open. But if you have more people and or you need something that Discord is not providing, please contact me or contact our organizers and we can give you a Zoom room for the sprints. Nicholas, I just wanted to jump in because I think I just want to give you a very quick intro in how to actually make the video work in Discord because that may not be obvious. You should see my screen. Can you see my screen? Yes, okay, excellent. So what you see here, this is the sprints category. These are all the sprints text channels. And then down here you see the hashtag. This is for text and then you see these speakers here for the audio channels. To enter these, let me just exit again. Okay, to enter the audio channels, it's very easy. You just click on it and it works like this. And then you're a member of this audio channel. You can only be a member of one audio channel on Discord. So if you click somewhere else, then you just do switch like this, right? You can also drag and drop yourself into some other channel that works as well. Now that's audio. Audio is easy. If you want to set up your audio devices, you go here to the user settings. You go here to voice and video. And then you can set your input-output device for audio. Down here you can set your video. I chose this virtual webcam here because you can only have one webcam on at a time. But you can configure others that you have here as well, right? OBS also works if you want to use that for presentations. Now if you want to enable your video, you can click on the audio channel. You get a window that looks a bit like the Zoom window. And then you see down here the controls. You have video and screen. So you can do screen sharing in here, which works a lot like Zoom does. And you can also enable the video here. You click here and then the video goes on. There's something strange in Discord. It seems to mirror your webcam automatically. So that's something that to be aware of when you're showing text. So for example here you see everything mirrored. It's a bit weird. I don't know how to switch it off in Discord. Maybe there is no way to switch it off. So just something to be aware. Right, that's all I wanted to say. Oh yeah, and this is the famous disconnect button. That's not very intuitive. So you can click on this one to leave this or you can right click on your name and then actually it doesn't. That's interesting. Okay, so you always have to use this button down here if you want to leave like this. And you can also share a screen. I think you already mentioned it. Yes, yes, there's a button there for sharing your screen as well. Okay, so we want to try to have you use Discord for most of the things because it's very easy to use for you. You don't have to ask us. You can just set up everything yourself. If you have a need for something bigger, we have I think around 15 or so Zoom licenses available. So we can set up additional rooms on Zoom and Zoom can handle 300 participants if you like. So this is for scaling up. Right, that's all I wanted to say. Thanks. So I miss in the least Oliver is here for the speedy learning project. So sorry Oliver, I excuse you. Yes, can you hear me? Yes, okay. So here I'm, hello everyone. I'm here to present the scikit-learn sprints. So scikit-learn is a machine learning library in Python. So we use NumPy, scipy and scitan a bit and also Python programming. So we prepared for the sprint, a small getting started sheet that we linked in our channel. So with the repository, the main documentation for the developer version and some getting started instructions. So basically those are instructions from past online sprints that we had recently. And there is one that is mainly like some kind of video tutorial to get started contributing with scikit-learn. And another one, actually I don't have the link. It's there, which is, no, I made a mistake. Okay, I need to fix the link, which is about a text version if you don't like videos. And if you want to contribute to the scikit-learn project, so it's ideally if you're already a user and you found a bug or want to improve something, then feel free to open an issue and then we can discuss how to fix it. And otherwise, we have labeled in the issue tracker some issues that are either required some help and some of them are good first issues for first time contributors. They could be documentation or like some simple code change and things like this. There are also some old pull requests that are stalled. So if you're a specialist of one of scikit-learn plus the ring or something like that or user and you want to help move those pull requests forward, you can feel free to take over those if they have not been updated in the last couple of months, for instance. All right, so let's discuss on the channel directly if you need it. Thank you. Okay, thank you very much. I think we are done. Mark, anything else? Yes, I think so too. I think we can now start. Can we have a beginner's workshop here if people want to, you know, haven't made any contribution, haven't been to any sprints, they could stay here and give a shot. Yeah, good idea. Sprint intro, yes. So let me just play the applause because I like playing the applause. Thank you. Okay, so Tuk, do you have anything to show? I have slides, just a quick slide deck and I have some hands-on exercise for the beginners. And I also created a text channel it's called Beginner's Help Desk in the Sprint category. So if you have any, you know, questions about Git or pull requests, you can ask me there. And so, yeah, if you have a experience in Sprint, you know what you're doing, you can basically start work on the project that you want to work on. And someone asked, what time will people show their work? So there's an end of, you know, end of day sessions there. I think maybe we can coordinate that. But basically, it will be quite improvised. So, yeah, stay tuned to the channels. I think we would make some announcement there. So, yeah, so I would just share my screen now. And here. Okay, so yeah, so this is actually a reuse some slides that I've done before. I've run some open source beginners would come. So people found this helpful. So I hope that if you're new to open source, if you're new to, you know, so what, you know, contributing to open source or even you're new to GitHub, that like I am here to help you. And so I'm sure I, you know, I don't want to spend too much time because like I think you have seen enough of me today. So yeah, I organized a lot of things and I have a channel for beginners. I actually do have a Git tutorial on that I've done on Twitch before. It may still be there. It may not, but I can share the link of the YouTube copy there. If anybody wants to get more information about Git, I'll share it in the beginners channel. So if you wonder like, okay, I just come here for your Python and I try to stay as long as I could. So what is this sprint open source thing about? Like maybe you have no idea what this is. You just like use Python for work or you just started to use Python. So you may have like no idea about like, so okay, what is open source, you know? So I think open source software and I won't be as good as, you know, explaining as this video. So I'm just like playing this. I think I hope it's okay to play this video. I don't know whether we're streaming or not, but this is actually a YouTube video from Intel. So if that's okay, I'll just play it. Open source software is most people understand that open source software is software copied for free. What's less understood is how the potential chaos of all these copies can be transformed into a collaborative whole. Let's break down how open source works using a family cookie recipe as a metaphor we can all relate to. Just like code, all recipes start by somebody writing the original version. In this case, Grandma May has developed a delicious cookie recipe. She shares it with her family, telling them they can use her recipe as long as they follow her rules. In Grandma May's case, anyone who bakes cookies with her recipe has to credit her as the author. And if they make changes to her recipe, she has to be allowed to use those changes in future versions of the recipe. The same thing happens when someone writes and publishes an original version of open source software. They put rules called licenses in place so that others can use and change the code they've written as long as they follow the author's license. Grandma May's recipe provides her family with a place to start that they can customize to their own liking. Aunt Maria decided to add chocolate chips to her batch of cookies. In software, this departure from the original code is called a branch. Aunt Maria's change was such a great success with everyone who tasted the cookies that she asked Grandma May to add chocolate chips to her original recipe. At this point, Grandma May needs to begin acting as a maintainer, looking after the integrity of the original recipe and deciding which changes she will incorporate. In this case, Grandma May agreed that the chocolate chips were a good addition, and so from then on, Grandma May's recipe included chocolate chips. Aunt Maria is now a contributor because she has contributed something to the recipe. In open source software development, this process of incorporating a change or patch into the original code is called upstreaming because it's flowing back to the original source. If the original brand of chocolate chips becomes unavailable, Grandma May is responsible for updating the upstream chocolate chip patch with a new brand because she accepted the patch. The benefits of incorporating your changes into the original recipe are pretty amazing, leading to the popular open source motto upstream early and often. The sooner you upstream, the sooner the community can back you up, not only by maintaining the recipe, but also by testing it in as many configurations as there are community members using it. Uncle Miles went out on a limb and added peanut butter and nuts to his batch of cookies. His wife and friends all love peanut butter, so they thought his additions greatly improved the original recipe. But when Uncle Miles tried to upstream his nutty changes, Grandma May, who detests peanut butter, refused to add peanut butter and nuts to her recipe. Uncle Miles resolved to move on with his version of the recipe with no plans of merging the two again at any point. In open source software development, a permanent split like this is called a fork. Grandma May's recipe is getting better all the time as people continue to contribute. Her family gets to learn from and enjoy the latest and newest cookie recipes as they are created. As Grandma May's family grows and her recipe is shared outside the family, more and more people will become contributors. As you can imagine, things could get pretty complicated for Grandma May as the maintainer of the original recipe with more contributors. The same is true for open source software. More contributors and more versions of code make it essential that we have a way of collaborating on changes. This is why we need the structure, common language, and rules we just talked about with our recipe example. Now let's recap really quickly. Someone writes an original version of the open source software. They set rules around how it can be used and changed called licenses. This gives contributors a starting point to then branch out from and make changes or patches. Some request their changes to be upstreamed to merge their new version with the original version. If the maintainer decides to incorporate the change, it becomes part of the main branch and will be maintained by the community even if the contributor stops being involved in the project. Sometimes software is taken in a direction that we know will not be incorporated back into the original version. This kind of permanent split is called a fork. Open source has the potential to be complicated because it's created by communities of people. But these ways of working manage those communities, making it possible to benefit from new versions from an authoritative source, the maintainer. Actual products based on open source can be made up of dozens, even hundreds of recipes like Gram-a-Maze, which is why having a disciplined way of managing change is so important. In open source, the possibilities are endless. But we need the rules and rules to keep things organized. So yeah, that's a very good video. I love it. I play it all the time every time I give this presentation. So I also take up a little bit of history when did open source started. So according to Wikipedia, it started with a person, Risha Stortman, and then in 1980s, he actually wanted to access some code for his printer, but the source code is not open source. So there's no open source at that time and then he can't access the code. So actually he started this open source thing because maybe we think that is a good idea that some of the code should be accessible for everybody. So I started this GNU project and you may have heard of GNU a lot because they are licensed, the GNU license that is basically one of the open source license, one of the first open source license, so a general public license. So I think now there's other versions as well because it's involved. I think there's a version three now. I'm not so sure, but yeah, you'll see that everywhere. So why do we like open source? Well, we like open source, but the reason is that it's free. Well, it's also part of why I love it as well. But as you know, it's more than that. It's not just means that it's free. It also enables some small companies, startups, and even if you're a one-man company or one-man project team that you could easily access to a lot of tools that could make your work easier. Also, you can use that knowledge. Actually, one thing I love about Spring is you learn so much by contributing to a project. You can see other projects code and to see people do things differently and you can learn from them. I copy a lot of, for example, the testing setup or the packaging setup that some other project user and learn so much from them. So also encourage collaboration. I hope that you all love collaborating because you're here. You love coding with people. We can actually use this course. You can do a lot of peer programming today. I do that a lot within my company. So I hope that it's also work fine today. And also now, I think there's a mental exercise. You can... Well, you don't have to tell me, but if you want to type in a chest, that's also okay. Do you use any open source software every day to your work? Can you name them? So now it's like try to think about what you're using day-to-day is actually open source. So who is involved in open source who make this all happened? So actually everybody can participate in open source, including you and me. It's not just someone as smart as Greedo, as smart as some of the maintainers. Actually, as long as you follow the rules, because in the video, I also mentioned there are rules at the end that try to maintain the whole system. By the license, of course, I follow the license. Sometimes, you know, some license is like, okay, you can use whatever is free, but some of them may be restricted to non-commercial use. So make sure you check that. And also there are code of conducts most of the time for projects, just to make sure that everybody is nice to everybody, even online or making poor requests or commenting. So, well, you can help actually, sometimes by just being the user. Like today, I have some tickets for my project that is user testing. Basically, you don't have to write any code for me or write any documentation for me. You can just like test it and let me know if something breaks. But once that further, you can be contributor, you can be like writing code, you can contribute to the project by upstreaming. We learned some new terms in the video. And eventually, you may actually, what happens to some people is that they become a very, you know, they contribute a lot. They contribute consistently. And then maybe people invite them to be one of the maintainers in the team. And, or you go for another path, you know, you have to make, you know, manage the community, help to promote that project. You help to make sure that, you know, everybody's, you know, the users are happy, everybody's nice to each other. So, yeah, there's a lot of roles. You can play in open source and everybody can do something if they want to. I can decide for yourself how much time you want to involve in the projects. So, where can I contribute to open source? Well, actually anywhere you like. You know, we are now doing it online. That's fine. But, you know, normally we will have the sprint after the conference so people can still stay if they are not rushing back home, they can still stay and work together. So, but also there's other places, you know, like Mark has already showed us at the beginning that, you know, there are hackathons, there's like events that are organized by people. I actually organized the London Sprints. I didn't start it. Actually, someone, you know, actually, Mark Glacier, like the maintainer of Pandas, I started it. And I just like helped to keep on working on it. And, but you can start your own actually, like you can start your own meetups, you know, to organize sprints. So, conferences like your Python, like we have this tradition of having the sprints after the conference or if you go to a conference, try to see if they have a sprint, see if you can stay, maybe one or two days behind to just do, you know, work in the sprint. On private sprints, you can actually get it or your friends and just contribute if you want to. And I've, you know, we've been friends in this conference, so I hope that, you know, you can find friends that also love doing this together with you. So, how can I contribute? And I have actually a slide deck that I think my friend Lays also shared like before. You can actually, yeah, this slides, you know, or yours. You can just like go there. That's the link there. I hope this do work. If not, you can find it on slides.com and put my name check tank on the score. There, you'll find a slide there. I will share it again in the beginners channel as well. That actually, yeah, let's test if the link is still working. Okay, that's good. It's still working. So, yeah, it's actually a step-by-step guy that you can make your first pull request if you have never done that before or if you have never, you know, I know a lot of people, you know, they have already, like they are developers, they have already used to get in the work, but the steps may be a little bit different in open source projects. So, this slide act, they actually, all the steps are quite standard for a lot of projects. Of course, there's some like minor differences. Like, so please, you know, if you have doubts, ask the maintainer of the project that you are working on. But as an exercise, you can follow all these steps to make your pull request to a dummy rappel that I don't own. I just like hijacks someone's rappel. But they welcome people to use it as an exercise to create PR. So, I hope you found this useful. Oh, by the way, this like square, like arrow bracket thing, it means that, you know, just use whatever name you see fit so replace this whole thing with your own name. Not your name, but like the name that you make up for your thing, you know. So, and all these, you know, all these things are linked, you know, if it's blue sometimes you can click on it and find more information. So, I think that's it. There is a text channel that's for beginners. I would post all the resources like including the Git tutorial that I had, and also this, make your first pull request hands-on exercise. I'll put everything there. You can access it. And if you have questions, ask me there. I think it's sometimes like, I don't mind people, you know, ask me like individually if you're really, really shy, but I encourage people to ask in the channel because then everybody can learn from everybody. So, I think that's it. And I'll be staying around, you know, not all the time in the sprint, but I will be, you know, most of them, I will be online and keeping an eye on the chat. I may be, you know, sometimes going out to do a little bit of my own personal stuff, but I will be staying online, flow this two days as much as I can. So, that's it for me. And I think there's one Q&A. And oh yes, sure the slides would be all on the text channel of beginners workshop. So, you can find it in the other sprint channel. You will find one that score beginners helped us. I'll put all the materials there. So, that's it for me. Okay. So, I guess we're done with the opening and with the workshop. That was a nice introduction Chuck. That's very useful. Because we forgot to put up the YouTube streaming this morning, I'm going to close this meeting now and then we will wait for the recording from Zoom and then try to upload that to YouTube and I can post a link to the sprint hall. All right. Happy sprinting. See you in a bit.