1 99:59:59,999 --> 99:59:59,999 Ok, welcome back to the second session of the day. 2 99:59:59,999 --> 99:59:59,999 It's going to be Alexander Wirt talking about salsa.debian.org. 3 99:59:59,999 --> 99:59:59,999 [Applause] 4 99:59:59,999 --> 99:59:59,999 Thank you, good morning. 5 99:59:59,999 --> 99:59:59,999 I usually don't give talks in english, so please be nice to me. 6 99:59:59,999 --> 99:59:59,999 However, I'm here. 7 99:59:59,999 --> 99:59:59,999 I want to talk today about our journey for Alioth 8 99:59:59,999 --> 99:59:59,999 which is still running, but not for long anymore, 9 99:59:59,999 --> 99:59:59,999 to our new service, salsa. 10 99:59:59,999 --> 99:59:59,999 I want to get a little bit into the history of old things 11 99:59:59,999 --> 99:59:59,999 and what we have already achieved, what we still need to achieve 12 99:59:59,999 --> 99:59:59,999 and what are our plans for the future. 13 99:59:59,999 --> 99:59:59,999 Let's start with the basic things, who am I. 14 99:59:59,999 --> 99:59:59,999 I am the guy who rejects the mails on lists.debian.org, 15 99:59:59,999 --> 99:59:59,999 I am a listmaster. 16 99:59:59,999 --> 99:59:59,999 I am the guy that rejects your backports. 17 99:59:59,999 --> 99:59:59,999 I am the backports ftp master. 18 99:59:59,999 --> 99:59:59,999 And I am the guy that will destroy alioth.debian.org. 19 99:59:59,999 --> 99:59:59,999 For the last ten years 20 99:59:59,999 --> 99:59:59,999 [Applause] 21 99:59:59,999 --> 99:59:59,999 I was an admin by accident of alioth.debian.org. 22 99:59:59,999 --> 99:59:59,999 This is another story I will tell you in a few minutes. 23 99:59:59,999 --> 99:59:59,999 Beside from that, I work as an OpenSource consultant at credativ, 24 99:59:59,999 --> 99:59:59,999 which is a small company in Germany which is specialized in OpenSource, 25 99:59:59,999 --> 99:59:59,999 we only do OpenSource consulting in Germany. 26 99:59:59,999 --> 99:59:59,999 We do what today is called DevOps, we do every kind of consulting. 27 99:59:59,999 --> 99:59:59,999 If you do something with OpenSource, we are probably the ones you can talk with. 28 99:59:59,999 --> 99:59:59,999 I am a father of two wonderful girls, 29 99:59:59,999 --> 99:59:59,999 they're not here unfortunately, 30 99:59:59,999 --> 99:59:59,999 but otherwise I wouldn't be able to work. 31 99:59:59,999 --> 99:59:59,999 And in my little bit spare time, I do role playing games and Tabletop games. 32 99:59:59,999 --> 99:59:59,999 In theory there should be a picture now. 33 99:59:59,999 --> 99:59:59,999 There's a picture missing, I don't know why, 34 99:59:59,999 --> 99:59:59,999 which should tell "We need you". 35 99:59:59,999 --> 99:59:59,999 A little bit of advertisement, if you want to do OpenSource work in Germany, 36 99:59:59,999 --> 99:59:59,999 paid, 37 99:59:59,999 --> 99:59:59,999 and you need a job, please talk to me. 38 99:59:59,999 --> 99:59:59,999 We are always looking for good people, especially in C development, 39 99:59:59,999 --> 99:59:59,999 kernel development, but also of course consulting. 40 99:59:59,999 --> 99:59:59,999 So please talk to me. 41 99:59:59,999 --> 99:59:59,999 Some steps in history. 42 99:59:59,999 --> 99:59:59,999 Some years ago, ??? 2008, 2009, 43 99:59:59,999 --> 99:59:59,999 I told the alioth channel 44 99:59:59,999 --> 99:59:59,999 "Hey, if you need help, I can help with system administration, 45 99:59:59,999 --> 99:59:59,999 not the GForge stuff which is running above, 46 99:59:59,999 --> 99:59:59,999 but if you need help, tell me." 47 99:59:59,999 --> 99:59:59,999 [Audience] Big mistake 48 99:59:59,999 --> 99:59:59,999 Yeah. 49 99:59:59,999 --> 99:59:59,999 One or two years went by, and step by step 50 99:59:59,999 --> 99:59:59,999 all alioth admins left. 51 99:59:59,999 --> 99:59:59,999 We were alone in the channel. 52 99:59:59,999 --> 99:59:59,999 And around that time, I detected 53 99:59:59,999 --> 99:59:59,999 "Hey, I have sudo permissions and I'm admin" 54 99:59:59,999 --> 99:59:59,999 Somebody made me an admin. 55 99:59:59,999 --> 99:59:59,999 So, I had to decide that I will be the person that is the future alioth admin 56 99:59:59,999 --> 99:59:59,999 and I stepped in. 57 99:59:59,999 --> 99:59:59,999 So it was the beginning of our alioth journey. 58 99:59:59,999 --> 99:59:59,999 Then, in DebConf15, we had a long 'Birds of a Feather' 59 99:59:59,999 --> 99:59:59,999 where we talked about several security problems in collab-maint, 60 99:59:59,999 --> 99:59:59,999 some of you are maybe not aware of it, 61 99:59:59,999 --> 99:59:59,999 but since we use git at filesystem level on alioth, 62 99:59:59,999 --> 99:59:59,999 we are introducing a number of interesting security problems 63 99:59:59,999 --> 99:59:59,999 like if someone writes a hook, that hook gets executed every time someone pushes. 64 99:59:59,999 --> 99:59:59,999 So you have basically shell access. 65 99:59:59,999 --> 99:59:59,999 And of course you execute it as your own uid. 66 99:59:59,999 --> 99:59:59,999 So, if some DM (Debian Maintainer) or even not DM, nearly the whole world 67 99:59:59,999 --> 99:59:59,999 has write access to collab-maint, 68 99:59:59,999 --> 99:59:59,999 drops some hooks in, 69 99:59:59,999 --> 99:59:59,999 it can make you execute code on Alioth at your uid, which is a problem. 70 99:59:59,999 --> 99:59:59,999 We did some things to solve that problem, but the main problem remained. 71 99:59:59,999 --> 99:59:59,999 So, along that time, we decided that we would need a successor for git.debian.org. 72 99:59:59,999 --> 99:59:59,999 At that point, we are talking about gitolite 73 99:59:59,999 --> 99:59:59,999 which we evaluated at that time. 74 99:59:59,999 --> 99:59:59,999 However, as ??? 75 99:59:59,999 --> 99:59:59,999 Two years went into the land and nothing real happened, 76 99:59:59,999 --> 99:59:59,999 we just played with it. 77 99:59:59,999 --> 99:59:59,999 Then, May 2017, a thread comes up, "Moving away from fusionforge". 78 99:59:59,999 --> 99:59:59,999 What nobody was really aware of, is that alioth is on a Wheezy machine 79 99:59:59,999 --> 99:59:59,999 and Wheezy is ??? out of security support end of the month. 80 99:59:59,999 --> 99:59:59,999 So time was running up. 81 99:59:59,999 --> 99:59:59,999 The thread was long as usual on debian-devel and 82 99:59:59,999 --> 99:59:59,999 we decided to do a few steps, like evaluating things 83 99:59:59,999 --> 99:59:59,999 and in June 2017, I did a survey about our new alioth services. 84 99:59:59,999 --> 99:59:59,999 It was clear at that point that I wouldn't be able to maintain all the things 85 99:59:59,999 --> 99:59:59,999 alioth had in the future 86 99:59:59,999 --> 99:59:59,999 so we decided to just bring over the important things. 87 99:59:59,999 --> 99:59:59,999 What is important? For everyone, everything else is important 88 99:59:59,999 --> 99:59:59,999 so I decided to do a survey which was pretty successful 89 99:59:59,999 --> 99:59:59,999 with a few hundreds submissions. 90 99:59:59,999 --> 99:59:59,999 Then, in… 91 99:59:59,999 --> 99:59:59,999 Then we evaluated… "we" as probably "me", 92 99:59:59,999 --> 99:59:59,999 evaluated a few solutions, named pagure, which is the git solution Fedora is using, 93 99:59:59,999 --> 99:59:59,999 which is a Python thing based on gitolite, 94 99:59:59,999 --> 99:59:59,999 gitlab, which is the biggest Github competitor 95 99:59:59,999 --> 99:59:59,999 gogs/gitea, which is some golang-based small git service. 96 99:59:59,999 --> 99:59:59,999 pagure turned out to be not stable enough for our needs 97 99:59:59,999 --> 99:59:59,999 and we would have to do to much coding inside pagure to use it in our infrastructure 98 99:59:59,999 --> 99:59:59,999 because pagure is very strongly ??? with the Fedora infrastructure, 99 99:59:59,999 --> 99:59:59,999 specially its user authentication and user management stuff. 100 99:59:59,999 --> 99:59:59,999 Gitlab had an other problem called "opencore" and 101 99:59:59,999 --> 99:59:59,999 "contributor license agreement" which means 102 99:59:59,999 --> 99:59:59,999 I and others were not very happy with contributing code to Gitlab 103 99:59:59,999 --> 99:59:59,999 which is something that will always happen if you maintain such a service. 104 99:59:59,999 --> 99:59:59,999 And gogs and gitea is nice but it's small 105 99:59:59,999 --> 99:59:59,999 It will not be able to manage 10,000s of repositories. 106 99:59:59,999 --> 99:59:59,999 Next step happened in August 2017 when we had a sprint here in Hamburg 107 99:59:59,999 --> 99:59:59,999 at the hackerlab CCC on the other side of the building, 108 99:59:59,999 --> 99:59:59,999 where we talked about it. 109 99:59:59,999 --> 99:59:59,999 After long discussions, we decided to go with Gitlab 110 99:59:59,999 --> 99:59:59,999 because Gitlab, at that point, was the best solution that was already ready. 111 99:59:59,999 --> 99:59:59,999 We didn't have to adapt too much, we don't need to patch it 112 99:59:59,999 --> 99:59:59,999 which turned out it isn't true, but it's an other problem 113 99:59:59,999 --> 99:59:59,999 It had features like continuous integration ready, 114 99:59:59,999 --> 99:59:59,999 it had features like code review ready, wiki pretty good working 115 99:59:59,999 --> 99:59:59,999 and ??? very scalable in all directions 116 99:59:59,999 --> 99:59:59,999 Every component is scalable which is good for us. 117 99:59:59,999 --> 99:59:59,999 This is a TODO point, I wanted to add an image about the restaurant 118 99:59:59,999 --> 99:59:59,999 where we decided on the name "salsa". 119 99:59:59,999 --> 99:59:59,999 Somebody of you may ask yourself where the name is coming from. 120 99:59:59,999 --> 99:59:59,999 There's a small mexican restaurant a few hundred meters from here 121 99:59:59,999 --> 99:59:59,999 where you can get great burritos and they have a painting at the back 122 99:59:59,999 --> 99:59:59,999 with the term "salsa" written 123 99:59:59,999 --> 99:59:59,999 and we were deciding on a name which just not describes the type of service on it 124 99:59:59,999 --> 99:59:59,999 so we wanted… 125 99:59:59,999 --> 99:59:59,999 Yes, it's also a sauce. So salsa had sauce. 126 99:59:59,999 --> 99:59:59,999 I wanted to call it Klaus, but we decided against it so somebody came up 127 99:59:59,999 --> 99:59:59,999 in the restaurant with the name "salsa" and so it's called salsa. 128 99:59:59,999 --> 99:59:59,999 In the meanwhile, we talked a lot with the Gitlab people 129 99:59:59,999 --> 99:59:59,999 which were very kind and helped us with our problems. 130 99:59:59,999 --> 99:59:59,999 We also talked with them about the CLA problem and after some discussions, 131 99:59:59,999 --> 99:59:59,999 the lawyer of SPI was also involved, 132 99:59:59,999 --> 99:59:59,999 we made them to remove the CLA and replace it with something better. 133 99:59:59,999 --> 99:59:59,999 Contributing patches to Gitlab is now much easier and better 134 99:59:59,999 --> 99:59:59,999 which is something we are very proud of 135 99:59:59,999 --> 99:59:59,999 [Applause] 136 99:59:59,999 --> 99:59:59,999 And between November and the 25th of December, we implemented salsa two times 137 99:59:59,999 --> 99:59:59,999 First time on ???.debian.net where we had root but 138 99:59:59,999 --> 99:59:59,999 after more discussions we decided having this maintained at a (debian).org box 139 99:59:59,999 --> 99:59:59,999 would be better, which made us ??? ansible stuff 140 99:59:59,999 --> 99:59:59,999 and develop a ??? to be able to install gitlab as a non-privileged user 141 99:59:59,999 --> 99:59:59,999 but we did that. 142 99:59:59,999 --> 99:59:59,999 In Christmas, he was able to release salsa into public beta. 143 99:59:59,999 --> 99:59:59,999 Things went well, which allowed, at the end of January, salsa to leave the beta 144 99:59:59,999 --> 99:59:59,999 Since then it's official, our official git successor. 145 99:59:59,999 --> 99:59:59,999 What will happen in the future? 146 99:59:59,999 --> 99:59:59,999 Oh no, this is already past. 147 99:59:59,999 --> 99:59:59,999 On May, we disable user and project creation on alioth. 148 99:59:59,999 --> 99:59:59,999 Still in May, we disabled the not so much used version control systems, 149 99:59:59,999 --> 99:59:59,999 bazaar, mercurial and darcs 150 99:59:59,999 --> 99:59:59,999 On Thursday (May 17th 2018), I disabled projects web sites. 151 99:59:59,999 --> 99:59:59,999 And this is future, at the end the month, 152 99:59:59,999 --> 99:59:59,999 all other remaining version control systems on alioth will get disabled. 153 99:59:59,999 --> 99:59:59,999 So if you have anything running on alioth, still running on alioth, 154 99:59:59,999 --> 99:59:59,999 cron jobs are also disabled so you don't have cron jobs enabled anymore 155 99:59:59,999 --> 99:59:59,999 Be it whatever you think of, remove it. 156 99:59:59,999 --> 99:59:59,999 1st of June, alioth will be off, you won't be able to get any data anymore 157 99:59:59,999 --> 99:59:59,999 from alioth. 158 99:59:59,999 --> 99:59:59,999 You can get the ??? via DSA to get subsequent backups, that's up to you 159 99:59:59,999 --> 99:59:59,999 but I don't recommend it and they won't like it. 160 99:59:59,999 --> 99:59:59,999 Yeah 161 99:59:59,999 --> 99:59:59,999 In June, alioth will come to an end. 162 99:59:59,999 --> 99:59:59,999 It served us well for 10, 15 years, but its time is over. 163 99:59:59,999 --> 99:59:59,999 Some numbers. Where are we now? 164 99:59:59,999 --> 99:59:59,999 Yesterday (May 18th 2018), we had 23,700 repositories on gitlab, 165 99:59:59,999 --> 99:59:59,999 3200 users, 400 groups, which sums up around 90GB on disk, which is nice. 166 99:59:59,999 --> 99:59:59,999 For a service running for more or less 6 months, it's a pretty nice number. 167 99:59:59,999 --> 99:59:59,999 What are our future plans. 168 99:59:59,999 --> 99:59:59,999 ??? Docker registry, by now you can use external registries 169 99:59:59,999 --> 99:59:59,999 which is working 170 99:59:59,999 --> 99:59:59,999 You can the gitlab registry for Docker images 171 99:59:59,999 --> 99:59:59,999 but it will be nicer to have our own registry. 172 99:59:59,999 --> 99:59:59,999 That is pretty high on my todo list, after alioth is gone. 173 99:59:59,999 --> 99:59:59,999 We want more runners, so you are able to sponsor runners, if you have machines or 174 99:59:59,999 --> 99:59:59,999 some money you want to spend on runners, please tell us. 175 99:59:59,999 --> 99:59:59,999 What are runners? Runners are the things that are used by Gitlab CI to build code 176 99:59:59,999 --> 99:59:59,999 or test code, or do things. 177 99:59:59,999 --> 99:59:59,999 You can use it to build your packages, you can use it to autopkgtest you packages 178 99:59:59,999 --> 99:59:59,999 you can use it to build websites or whatever you like. 179 99:59:59,999 --> 99:59:59,999 It's pretty useful and I think using CI more will be a big step forward for Debian. 180 99:59:59,999 --> 99:59:59,999 We should really get more into it. 181 99:59:59,999 --> 99:59:59,999 There are already some projects like the reproducible builds, the debci guys 182 99:59:59,999 --> 99:59:59,999 that are working on such stuff 183 99:59:59,999 --> 99:59:59,999 and now we have the infrastructure that every DD, every developer or package maintainer 184 99:59:59,999 --> 99:59:59,999 can use it. 185 99:59:59,999 --> 99:59:59,999 There's also an other feature called 186 99:59:59,999 --> 99:59:59,999 "devops" which is based on kubernetes which allows you to even 187 99:59:59,999 --> 99:59:59,999 deploy and test things properly. 188 99:59:59,999 --> 99:59:59,999 So if you have package which implements a web service, you can even run 189 99:59:59,999 --> 99:59:59,999 ??? kubernetes part which runs a web server, 190 99:59:59,999 --> 99:59:59,999 you can test it, you can even record it, do QA test and so on 191 99:59:59,999 --> 99:59:59,999 all based on this devops feature which would also be a nice thing. 192 99:59:59,999 --> 99:59:59,999 By now, we don't have a kubernetes instance we can use for it, 193 99:59:59,999 --> 99:59:59,999 so if you have a spare kubernetes instance you want to offer Debian, 194 99:59:59,999 --> 99:59:59,999 please talk to us. 195 99:59:59,999 --> 99:59:59,999 And integration with sso.debian.org, which is another side project of mine 196 99:59:59,999 --> 99:59:59,999 and some of ??? students, sitting there. 197 99:59:59,999 --> 99:59:59,999 We want to build a successor for the command sso.debian.org 198 99:59:59,999 --> 99:59:59,999 which has a problem that it doesn't have a user backend, 199 99:59:59,999 --> 99:59:59,999 the user backend is alioth, you see the problem 200 99:59:59,999 --> 99:59:59,999 But it just the case for our guest users. 201 99:59:59,999 --> 99:59:59,999 The official Debian Developers come from the ldap which will still work, 202 99:59:59,999 --> 99:59:59,999 but we have a problem with guest users, so we currently don't have a way to 203 99:59:59,999 --> 99:59:59,999 source for managing those guest users, especially give additional groups like 204 99:59:59,999 --> 99:59:59,999 "Hey, the user's a DM" 205 99:59:59,999 --> 99:59:59,999 I would love to give all DMs access to the Debian group, write access, 206 99:59:59,999 --> 99:59:59,999 but I can't currently because I'm not able to ??? 207 99:59:59,999 --> 99:59:59,999 which is something we want to solve with the new sso.debian.org feature. 208 99:59:59,999 --> 99:59:59,999 sso.debian.org should also develop a new authentication protocol like OAuth2, 209 99:59:59,999 --> 99:59:59,999 which we will use for salsa but new services can also rely on, 210 99:59:59,999 --> 99:59:59,999 ??? a way from this certificate stuff which is somewhat nice 211 99:59:59,999 --> 99:59:59,999 but it's not that good integrated in most browsers anymore 212 99:59:59,999 --> 99:59:59,999 and it doesn't work that well. 213 99:59:59,999 --> 99:59:59,999 We hope to have, we already have a prototype, and we hope to have it live 214 99:59:59,999 --> 99:59:59,999 until the end of the summer. 215 99:59:59,999 --> 99:59:59,999 What we left behind. 216 99:59:59,999 --> 99:59:59,999 We don't have shells anymore. 217 99:59:59,999 --> 99:59:59,999 So you won't be able to run any cron jobs or other stuff on salsa and 218 99:59:59,999 --> 99:59:59,999 please don't ask, we won't give anyone a shell on salsa.debian.org or godard 219 99:59:59,999 --> 99:59:59,999 which is the host hosting it. 220 99:59:59,999 --> 99:59:59,999 We hape APIs, several of them, I will show them 221 99:59:59,999 --> 99:59:59,999 Please use them, we won't run any cron jobs or custom stuff on gitlab, 222 99:59:59,999 --> 99:59:59,999 it was a nightmare on alioth to maintain and to administrate 223 99:59:59,999 --> 99:59:59,999 and I will never, never want to get into this again. 224 99:59:59,999 --> 99:59:59,999 What we also don't have are custom domains which is a feature gitlab has, but 225 99:59:59,999 --> 99:59:59,999 DSA decided against it, so you will have to live with 226 99:59:59,999 --> 99:59:59,999 projectname.pages.debian.net until someone decides for that feature. 227 99:59:59,999 --> 99:59:59,999 We also left behind old version… not so much anymore version control systems 228 99:59:59,999 --> 99:59:59,999 like darcs, bazaar, subversion which isn't a problem, 229 99:59:59,999 --> 99:59:59,999 but we also don't have cvs anymore, which may be a surprise for someone 230 99:59:59,999 --> 99:59:59,999 but Debian is still a heavy user of cvs, especially for our web site 231 99:59:59,999 --> 99:59:59,999 and translations. 232 99:59:59,999 --> 99:59:59,999 But maybe they will now migrate faster away from cvs. 233 99:59:59,999 --> 99:59:59,999 They are working on it, I know, they're working on it for 10 years 234 99:59:59,999 --> 99:59:59,999 but things are getting faster and they're making progress 235 99:59:59,999 --> 99:59:59,999 in migrating away from cvs. 236 99:59:59,999 --> 99:59:59,999 Yeah, ???, that's right, we also left mercurial, 237 99:59:59,999 --> 99:59:59,999 or whatever people have in their home directory. 238 99:59:59,999 --> 99:59:59,999 Yeah we also had rcs on alioth, there were rcs repos, yes. 239 99:59:59,999 --> 99:59:59,999 What we got instead. 240 99:59:59,999 --> 99:59:59,999 We got a bunch of new features we didn't have before. 241 99:59:59,999 --> 99:59:59,999 So, this is such… maybe a start of new ways of working in Debian, 242 99:59:59,999 --> 99:59:59,999 we got a bunch of collaboration features. 243 99:59:59,999 --> 99:59:59,999 In the past, collaboration often meant finding the right mailing list, 244 99:59:59,999 --> 99:59:59,999 sending a patch and hoping. 245 99:59:59,999 --> 99:59:59,999 Now we can use merge requests, which allow people to easily fork and 246 99:59:59,999 --> 99:59:59,999 modify packages or repositories, and after they are done, they can just hit a button 247 99:59:59,999 --> 99:59:59,999 or whatever and create a nice merge request which is already heavily used 248 99:59:59,999 --> 99:59:59,999 by some projects like apt or dak or my own redirector. 249 99:59:59,999 --> 99:59:59,999 That allows ???, the admins of those repositories/projects 250 99:59:59,999 --> 99:59:59,999 to review code easily, they can add comments, they can discuss with 251 99:59:59,999 --> 99:59:59,999 ??? people out of the mailing list. 252 99:59:59,999 --> 99:59:59,999 If people update a bunch and they commited, those merge requests 253 99:59:59,999 --> 99:59:59,999 get updated which is a workflow we are also using very heavily in our company 254 99:59:59,999 --> 99:59:59,999 which is pretty nice in my eyes. 255 99:59:59,999 --> 99:59:59,999 This also allows contribution to packages from outside people 256 99:59:59,999 --> 99:59:59,999 It lowers the barrier for people to collaborate with Debian, 257 99:59:59,999 --> 99:59:59,999 which is in my eyes a good feature, 258 99:59:59,999 --> 99:59:59,999 something I always liked on Github and I'm happy we are having it too now. 259 99:59:59,999 --> 99:59:59,999 Gitlab has a nice feature of good, well designed web frontend, 260 99:59:59,999 --> 99:59:59,999 some things could be better, but it's always the case, 261 99:59:59,999 --> 99:59:59,999 but in most cases Gitlab is still blazingly fast 262 99:59:59,999 --> 99:59:59,999 except if you've hit some of the bugs in the API 263 99:59:59,999 --> 99:59:59,999 but that's an other problem. 264 99:59:59,999 --> 99:59:59,999 And you can work with it. 265 99:59:59,999 --> 99:59:59,999 If you don't like the web frontend, use the API, 266 99:59:59,999 --> 99:59:59,999 nearly everything the web frontend supports is exposed via the API 267 99:59:59,999 --> 99:59:59,999 And there are also a bunch of command line clients 268 99:59:59,999 --> 99:59:59,999 which can integrate into git to allow things like merge requests, 269 99:59:59,999 --> 99:59:59,999 allow you to process merge requests from the command line 270 99:59:59,999 --> 99:59:59,999 if you don't like web frontends. 271 99:59:59,999 --> 99:59:59,999 You can also open merge requests by e-mail if you still like it 272 99:59:59,999 --> 99:59:59,999 you can just hit the right buttons, you'll get a mail address 273 99:59:59,999 --> 99:59:59,999 that you can use. 274 99:59:59,999 --> 99:59:59,999 And if you send a patch to that mail address you will create a merge request, 275 99:59:59,999 --> 99:59:59,999 some of the not so known research. 276 99:59:59,999 --> 99:59:59,999 Issues. 277 99:59:59,999 --> 99:59:59,999 You can track todo items or bugs. 278 99:59:59,999 --> 99:59:59,999 Please, this is not intended for Debian packages, 279 99:59:59,999 --> 99:59:59,999 so please don't replace the BTS 280 99:59:59,999 --> 99:59:59,999 but using it as an issue tracker or todo lists is great. 281 99:59:59,999 --> 99:59:59,999 We are using it all the time. 282 99:59:59,999 --> 99:59:59,999 We're also having some upstream projects on salsa, like sane or ??? 283 99:59:59,999 --> 99:59:59,999 which is ??? 284 99:59:59,999 --> 99:59:59,999 So, they're using issues, that's fine too. 285 99:59:59,999 --> 99:59:59,999 Issues are disabled by default for a project, 286 99:59:59,999 --> 99:59:59,999 but every project has ??? to just enable it and to use it. 287 99:59:59,999 --> 99:59:59,999 You have boards where you can organize your work, 288 99:59:59,999 --> 99:59:59,999 you can add sprints, you can add milestones and other things, 289 99:59:59,999 --> 99:59:59,999 all the basic stuff you need to have an issue tracker is included. 290 99:59:59,999 --> 99:59:59,999 And we also enabled reply by mail so you don't have to use the web frontend, 291 99:59:59,999 --> 99:59:59,999 you can just use your mail client to reply ??? into gitlab. 292 99:59:59,999 --> 99:59:59,999 You can also close issues by merge requests. 293 99:59:59,999 --> 99:59:59,999 So, similar to our BTS, Gitlab has this "closes" feature. 294 99:59:59,999 --> 99:59:59,999 It's all the same. So "Close", "Closes"… and so on, it's all the same 295 99:59:59,999 --> 99:59:59,999 and we close here your issues. 296 99:59:59,999 --> 99:59:59,999 You can even close issues in other projects, 297 99:59:59,999 --> 99:59:59,999 so if you have projects related together and you fix something in another project 298 99:59:59,999 --> 99:59:59,999 you can even close it with that syntax. 299 99:59:59,999 --> 99:59:59,999 You can also create issues by mail, which is basically the same 300 99:59:59,999 --> 99:59:59,999 as for merge requests, 301 99:59:59,999 --> 99:59:59,999 you have that "email new issue" button where you get a custom mail address you can use 302 99:59:59,999 --> 99:59:59,999 and then you can use that mail address for the future 303 99:59:59,999 --> 99:59:59,999 to submit bugs if you don't want to use the issue tracker. 304 99:59:59,999 --> 99:59:59,999 What we also got are webhooks. 305 99:59:59,999 --> 99:59:59,999 Custom hooks are not anymore possible because you don't have access to 306 99:59:59,999 --> 99:59:59,999 the repositories directly 307 99:59:59,999 --> 99:59:59,999 but what you can use are webhooks. 308 99:59:59,999 --> 99:59:59,999 Webhooks are common standard in the web world, 309 99:59:59,999 --> 99:59:59,999 you can use them to react to events in your repository, 310 99:59:59,999 --> 99:59:59,999 events may be things like someone created an issue, someone created a pull request, 311 99:59:59,999 --> 99:59:59,999 someone pushed something, someone took something, things like that. 312 99:59:59,999 --> 99:59:59,999 And you can use those events to create IRC notifications, 313 99:59:59,999 --> 99:59:59,999 we have two IRC bots available for you to use, which is KGB 314 99:59:59,999 --> 99:59:59,999 and my own irker instance. 315 99:59:59,999 --> 99:59:59,999 You can automatically close or tag bugs 316 99:59:59,999 --> 99:59:59,999 If you look into our documentation, wiki.debian.org, 317 99:59:59,999 --> 99:59:59,999 you find a small paragraph about it where you can just, 318 99:59:59,999 --> 99:59:59,999 as we did before, if you close a bug and you enable the tag pending, 319 99:59:59,999 --> 99:59:59,999 tag pending webhook, your bug will be tagged automatically as pending 320 99:59:59,999 --> 99:59:59,999 like before if you used the ??? hooks on alioth.