 I'm presenting today a project that we've been working on for the last four years I'd say the idea is that reuse is a set of best practices to make Licensing easier free software licensing Free software is all about licensing licenses that ground for freedoms. Therefore. It's right very important that developers that users Reuses are aware of the chosen licenses so we have a few typical issues with licenses and Probably all of you know these issues I would just quickly go over them since our time is quite limited We have often missing information about who what's the license who's the copyright holder? Perhaps for the whole project perhaps for single files where you cannot be certain which license which copyright holder Sorry file is affecting For we users using code by other people it's Perhaps quite simple depending on on the structure to overlook a chosen license So if you're a developer you set the conditions for reuse So you want that re-users are actually following the conditions under which you share your code And sometimes it's quite hard or it's quite simple basically to to overlook this license and these conditions The problem also is affecting how to deal with multiple licenses. It's quite common that a Software these days doesn't only contain code under one license because you wrote it all yourself perhaps But you use assets by third parties JavaScript code in a sense of Websites, but you might also have icons by by artists You have license ambiguity, which is another problem like which version exactly of the GPL the General public license are you actually using here having in front of you is it two is a three Which exceptions and so on so there are many special rules and in all cases especially for communities contributors need some kind of training and so you have to invest a lot of time and Getting them on board and telling them your best practices and speaking of best practices We have a lot of conflicts there so many different approaches so many different ideas how to tackle these Unfortunately, they're often conflicting and most often not really solving the issue So in the end we are in the position where it's for users for re-users for legal officers and companies for communities like this It's really annoying right you have licenses license thing and say why why does it have to be so complicated? so in 2017 we sat down at the FFV to gather with a few other Contributors in this field and thought how can we make copyright and licensing easier for everyone and with everyone? We are not only speaking about legal professionals who know their stuff But actual developers who have want to spend their free time on creating free software and actually do not want to be burdened with like all these legal efforts The result was reuse So reuse has a few principles that I would just quickly skim here The ideas that we want to make it easy to find copyright and licensing information for every single file in a repository So what we see these still these these days is like you have a single license file or copying file in a repository And you're not certain why it doesn't apply to all files or like also these icons by a third party So we want to make it easy to have this information available that you can really say this file is on the this and that license from this copyright holder But we also want to avoid silos like No external databases or databases in general no websites that can go offline or which you cannot access if you don't have internet So the idea is that we store this information directly inside of the repository The information should be readable not only by humans, but also by machines other approaches have been tackling the one or the other side But we also don't want to reinvent the wheel So there are some best practices. There are some initiatives. We try to be compatible wherever it's possible And most importantly, we want to make licensing easy and fun for developers So again, not only for the legal professionals and getting complicated and so little but no developers should be able to license the code apply the copyright or communicate their copyright in Normal development routines like so really developer focused Yeah, so the idea of reuses that we have three simple steps I will go in the next few slides over these like manually Theoretically so you can see what's the whole logic We can also run this all with a tool that I would also like to present here We are too limited in time. You can ask me afterwards and I give you demo So the ideas of these three simple steps are that you first of all choose and provide the license texts So they settle down on one license and provide the full license text Then the more complicated part that you add copyright and licensing information for every file Yeah, so that we have a number of options with we will see and the third step again It's easy. You got to confirm whether your projects then is wheels Compliant already. If not, then you go back to step two basically So the first step choose and provides licenses that should be quite obvious Actually, it's a hard choice which license do I take so for new projects We ask people to really think about this heart and you save this license text So the full conditions of reuse you save in a dedicated licenses folder that we have and Not only just put it here on the random name, but following the SPDX license identifier What's SPDX? It's a project whose main Contribution to the community is to provide unique identifiers for every license So that you can no longer confuse the different gpl versions, but that you have a unique identifier and In this case, we chose the gpl 3.0 or later license And we save it under the same name under this identifier, which you can find on the SPDX website in the licenses folder Then the second step is to add copyright and licensing information to all files so we have two parts of information the license and again here we use the license identifier and Use the SPDX license identifier tag for this And you add the copyright holder can be one can you can you be multiple ones? So in this example, we have a file here as a commentator in this file We have a gpl 3.0 or later as a license and you have two copyright holders. Let me Jane Doe and Foo bar and we use different ways how to Like use these copyright texts, so we also support these more traditional Copyright c-symbol lines that you can use so again try to be backward compatible What can you do if you cannot edit the file directly? So ideally the information would be in the file because then if you copy the file to another place or to your own repo You would Conserve this information, but sometimes it's not possible You have a binary file like a picture or you have a JSON file that does not support in file comments So in this example, we have a picture called cat.jpeg So you can just create a blank text file with the same name and appended by dot license Inside of this file. You write the very same information that we've seen at the previous step namely a License identity fire and the copyright text or the copyright line Now what do you do if you have a let's say a directory and there are 500 icons files in there like for your application Now you could of course create 500 dot license files in addition Needless to say that this is not really wished for so we offer a third option to communicate this information Namely that depth file that five is a Format the specification by the DBN project which we again landed here Yeah, we try to reuse those things and here we have a plain text file and dedicated location And we say basically all files in the IMG folder and now the asterix All files are with a copyright of the create artist and now under a different license because we took them from someone else Let's say you're in this creative commons Attribution and the version 4.0 again here using the SBDX license identifier So this way and with these three options We can cover all kinds of files in a repository and you for yourself can decide Ideally, I want to write it in a commentator so that the information is as close to the files as possible Or using the dot license file or using the depth file file. So we cover a lot of use cases here The third step is again probably the simplest one confirm reuse compliance So this is done wire a helper tool that we provide The we use helper tool. It's free software. Obviously. It's written in Python You can install it as a compound command line tool. It's usable on all Linux's on Windows and also Mac OS as we know and one of the main commands of this tool is To run a lint. So you run go to your repository clone it or have it there and it runs reuse lint So the tool goes over all files in your repository and checks whether it finds information about this file in one of these three locations and That's done really rapidly and like if you run reuse lint on a normal laptop on the Linux kernel I don't know 80,000 files takes you roughly one minute or so. So this tool is quite quick The reuse helper tool With this lint command can also be included in a CI pipelines, for instance So once you have your project made reuse compliant You can put it in the CI pipeline and with one check you can see whether a pull request for instance or the new commit Does negatively affect the reuse compliance and you can use it for many more processes here as a pre-commit talk or so In this example, we run the reuse lint on this very small Project here with only six files and it reports to you well We have here three licenses CC by 4.0. We have the CC 0 in this example We have one file for whatever reason there and we have the GPL also here And so for all files There is copyright and licensing information found and the end this means you're wheels compliant with this project So this is now the starting situation of this hypothetical very simple project You have these six files here You have a few a binary finds that we've seen before the cat and the dog picture Now traditionally like what you would see today is that people just add the license file there But as you know, we have here now files under from different copyright holders different licenses So it would be really hard to reflect the situation with the existing standards That looks a little bit larger, but that's the effect of the reuse tool or the reuse Yeah initiatives or the reuse best practice being adapted So we are having here in this example. I mean there are different variations You can say well, we have here now a license file for the cat picture a license file for the dog picture with this information We have All the license text files here for fully downloaded Included there cleanly in a separated folder So they don't clutter your your repository and the other files here the three text files the C file make file and markdown file They carry all this information As a commentator in their specific Common syntax. So the cool thing about the reuse tool Unfortunately, we cannot peek at it right now is that it automatically detects the the common syntax and So it's quite easy There are also commands to make files reuse compliant and with just a few commands So we try here to go many steps Towards developers. So that is quite natural and easy to use We use has a number of components Meanwhile over the years we have the best practice which is a rather formal specification Can be picked up has been picked up by industry and also communities We have a tutorial and an FAQ which also covers this example that we've seen here in the slides The FAQ is not only speaking about reuse but also about licensing in general like to really on board you and a person who are not familiar with a licensing copyright on reuse on licensing and Demystifying a lot of things we have to set helper tool that not only lins, but also Helps in becoming wheels compliant and we have the API Basically reuse as a service you can register your project online there and get a badge which you can include We have a number of reuse adopters already. So we know of 800 projects registered with the API Oh Still okay last slide or second last slide as we have KDE the large community Which made or adopted reuse for their purposes in their community on the corporate side We have Siemens, Huawei, the European chapter SAP, LiveRay, LGE and many others at least these are the ones we know about Partly the Linux kernel already they're cleaning up their long history and the question is whether you are already reuse compliant Whether your projects are reuse compliant if not then these are your next steps I just told to show the slide you can participate in the project with code by by discussing on the mailing list Contribute code and integrate reuse in your community So there are plenty of options and I would love to discuss perhaps later with you how we can make you reuse compliant in your projects Thank you very much