 Getting started with LibRof is Development. I am Hossein Nurikha, the developer community architect for the Document Foundation and TDF. So these are the list of contents I will talk about. And after a short self-installation, I will talk about learning sources and we will have a short demo. Then we will talk about setting up development environment and compiling the code in demo 2. And after that, we will talk about short things that you can do called easy hacks. Then we will talk about review process. And in the end, I will provide you some path to growth and development. So I am a PhD in Information Technology. I am a developer community architect for the Document Foundation. And I am a developer, university lecturer and FOSS advocate. If you had any problems getting started with LibRof is Development, you can contact me. My email is HosseinatLibRofis.org and you can find me on IRC, HosseinatLibRofisDev in Deborah Chat. So let's talk about learning process. How do someone can learn to develop LibRofis? The answer is like coding. If you want to learn LibRofis coding, you should start development as soon as possible. So one can contribute to LibRofis without code, but I am here focused on coding. So you should know at least one program language. There are a lot of languages that can be used. And these are the list of languages that are actually used in LibRofis code. C, C++, Java, Bash, JavaScript, Python, Perl, SQL and XML are some of these. And to know LibRofis better, you can refer to some of the learning materials that I will provide you in this presentation. So learning materials are not inside one document that you can read, but there are many sources that you should use in order to better understand LibRofis. So as I've said, the best way to learn coding is actually to code. So you should start from easiest stuff first, that we call easy hacks. And the path to understand better the code is to search, to read, to ask other developers and to code. These are some of the learning sources from the LibRofis website, to the Git repository of code for LibRofis core, to IRC, mailing list, Wiki, docs, blogs, the presentation from conference and some articles and books. So let's first look at the LibRofis website. In LibRofis website, you can download LibRofis, you can download LibRofis SDK, which I suggest you should download both of these, and you will find a lot of information. Also, you can refer to documentfoundation.org, the entity behind LibRofis. So this can help you better understand LibRofis. So before you can actually start coding LibRofis, it is suggested that you actually work with LibRofis and use it to edit your documents, to get yourself familiarized with LibRofis. And this is something very helpful before you get into actual coding. Then the code, you can find the code on git.libRofis.org, but there is something called OpenGroc.libRofis.org that helps you to search inside the code. You can do full text search, you can search for some definition of some classes and functions, you can find symbols, and you can read the code with great coloring and style here in OpenGroc. And then IRC. IRC is the best way to connect to other developers. There are a lot of experienced developers here that are willing to help you develop LibRofis. So if you're joining IRC, it's better to create an account, pick a good name, and ask directly inside LibRofis Dev Room. And please make sure you stay here for a while, for example, 60 minutes, in order to get an answer from these developers and others who work on LibRofis. You can get answers better if you ask your question inside the EU working hours. So this is a good place to ask questions. That's a developer's mailing list. So if you have a question that probably cannot be answered in IRC, and it needs some more details and some more investigation and stuff like that, it's good to use developer mailing list. So you can ask questions here, and this mailing list is actually Hasan Afridis.org, so you can become a member of this mailing list and ask your questions, and read others' answers. Then Viki. Viki is a good place that you can find a lot of information about development. So if you go to the development section of the Document Foundation Viki, you can find a lot of documents on how to build LibRofis, how to find suitable things that you can work on and possible ideas and a lot of good stuff here. So make sure that you refer to Viki. And the docs. If you go to docs.libRofis.org, you will find the list of LibRofis modules, and if you click on any of them, you will find good information about them. Then the blogs. So we have blog.document.foundation.org, which is the main blog for LibRofis. You can find a lot of information, not necessarily about development, but a lot of development posts can be found there. Also, we are starting a new blog for development related stuff only, and it will be hosted on dev.blog.document.foundation.org, but it has not started yet, so it will start very soon. If you go to the LibOcon page on conference.libRofis.org, you will find a lot of presentations about different things, and this can be also a good source of information for you to understand LibRofis better. And let's see these things in action. The first website that I want to talk about is the LibRofis website. It is located at LibRofis.org. I can download LibRofis from here. I can select different formats, and I can download LibRofis.decal and also the source code from here. I suggest that you don't download source code from here, but use the latest Git version, because in order to get involved in development, you need the latest sources. There are a lot of more information inside LibRofis.org about how to join those people who are working on LibRofis. You can find out more about LibRofis here, and you can donate to LibRofis. The next website is the documentfoundation.org. It's about the documentfoundation, the nonprofit organization that is behind LibRofis, and you can find a lot of useful information here. When you've found enough about LibRofis and you want to work on code, you can use Ofengrok and also you can use git.libRofis.org. If you go to this website, you can see a lot of projects here, but what we are interested in is the core, which is the LibRofis main development code repository. As you can see, you can get the sources by invoking GitClone and the address. These are the latest commits on LibRofis core, and this is an introduction on LibRofis core and the things that you need in order to build LibRofis and also some of the main modules. Then we can talk about Ofengrok. Ofengrok is something that is very useful and you want to search inside the code. These days, a lot of IDEs provide such utilities, but this is also very useful if you want to look at the symbols and other stuff. First, you select the project, usually select core, and this is pre-selected here. Consider that I am looking for OU string buffer and OU string buffer. I am searching for this symbol, and the results are a lot of OU string buffers, but what if I want to search for definition? I put the OU string buffer inside definitions, and when I search, I only find four results, and the first one is something that I wanted. If I activate the navigate window, I see that there are a lot of macros, one class N, some namespaces and a lot of functions and stuff like that inside this header file, and then I click OU string buffer, I actually see the OU string buffer class here, and as you can see, almost everything is hyperlinked here. For example, if I click on cell warn unused, I will be directed to some file that contains the definition of this macro. I click on line 487 from 484, it actually contains the definition of this macro. As you can see, it is a helpful tool in order to browse the code. Then we will talk about IRC. Webtooth Libre.Chat is a web interface to Libre.Chat, and I want to go to Libre Office DF channel, and my nickname will be guest 8, but it is better to pick a good name and register your name. You can see a lot of people are here, and many of them are developers, and they can help you if you have any problems. It is a good idea that if you want to ask, you ask directly, and don't waste time asking for a question, directly ask your question, and wait until you get your answer. It suggests that you at least remain for 60 minutes in order to get good answers. Also, you should try to ask questions in a smart way in order to get good answers. People here will usually try to help you, but there are some situations that you want to ask some more complex questions that need, for example, more information, and in order to ask such questions, you can go to list.freedysapp.org and subscribe in Libre Office Development, a mailing list. You just add your email address here, and you click Subscribe after you prove that you are not a robot. Then we talk about Libre Office Wiki. The Document Foundations Wiki, which talks about Libre Office, contains a development section that we are interested in. There is a Getting Started with Development section that contains a lot of useful links for you. You should take a look at Get Involved article. It contains a lot of useful information that we talk about some of them, but make sure that you take a look. Also, there is a General Program Guidelines section that contains a lot of good information about building good profits, for example, Linux and VSC systems and Mac OS and Windows, etc. Please make sure that you take a look on Wiki. Then there is the docs.libreoffice.org, which essentially contains documentation about Libre Office modules. I was looking at documentation of Visual Class Library or VCL, and you can find a lot of good information about this module here, any other module you want. Then the blog.documentfoundation.org is somewhere that you can find a lot of good information about things that are happening around Libre Office, and you can see the link to TDF planets, the aggregator that creates posts from people who work on Libre Office. Because this weblog is not directly related to development, we have tried to create a separate weblog for development at diff.blog.documentfoundation.org. It is not activated yet, but in the recent future, we will activate this blog and hopefully post a lot of useful information there. At last, the LibreOffice conference website, which contains information about the current LibreOffice conference 2021, and also the previous conferences. For example, I go to the 2019 conference, I go to the program schedule, I go to one of these days, for example, September 12th, and I open one of these presentations. For example, LibreOffice is an iOS app on the iPad, so you can find a lot of information by looking at these presentations. They are very helpful. I hope that you have a better understanding of some of the sources of information about LibreOffice, setting up a development environment. You can do this either manually or using distro tools, and also you can use an automated tool called LODE. If you are not using LODE, you have to install dependencies, either manually or through distribution tools, mostly in Linux. You have to install several libraries and tools, and some of them are installed using Make, and the Makefile actually knows what to download and install. But not every dependency can be installed in this way. There are other dependencies that you have to install manually or using distro tools. If you are Windows, you should use CYGVN to install those dependencies. If you are Ubuntu, you can use APT. If you are an RCL or CentOS, you use DNF or YAM, and on Arch and OpenSUSE Pac-Man and Zipper can be used. If you are using LODE, then you are using an automated tool for LibreOffice that actually downloads, builds and install all the prerequisites. So it is something very useful that is suggested for Windows and macOS, and also on some older versions of Linux. You should note that you can use, and you should use, distribution tools for newer versions of Linux, like these versions of Ubuntu or IHCL or CentOS. And also, if you are on Windows, you have to install Visual Studio and Windows SDK and Jdica yourself. And if you are on older Linux distributions, you have to install some recent compiler, C++ compiler and Jdica yourself, and make it available to the make tool. These are the Windows prerequisites. You need a C++ compiler. Visual Studio 2019 is something that we use these days, but support for Visual Studio 2022 is recently added, but 2019 is suggested. You have to install Java Development Kit greater than or equal to version 11, and it can be either Oracle from Microsoft, Red Hat and others, but you should know that if you are downloading from Oracle, you should create an account, but if you want to download from Microsoft or Red Hat, you don't need such an account. Then you need CYGVN that can be downloaded from CYGVN.com, and there are several other dependencies if you're building manually. You should note that there are certain things that you should know when installing these prerequisites. For example, if you are installing Visual Studio, you have to activate and install certain components, certain individual components. So, you should take a look at building the profits on Windows and Viki, and make sure that you are actually following the needle steps. For Linux, the C++ compiler G++ is used. You need also the Java Development Kit, JDKa, greater than or equal to 11, and third, dependencies that can be installed easily using the distribution tools. For example, in Ubuntu, you simply say, apt-get-build-dep librafis, and everything is simply installed, and also on RHEL-based distributions, you just say, dnf-build-dep librafis, and that's it. A lot of packages will be installed, and then you can build the profits. So, the recommended way to install dependencies is to use distribution tools for most of them. And on macOS X, you should have Xcode from App Store and also JDKa, greater than or equal to version 11, and the recommended way to install dependencies is using LODE. Note that the current Xcode and the current macOS X can usually build librafis, so it suggests that you should use current Xcode and current macOS X version. So, let's talk about the actual compilation. The general compiling instruction can be seen here. First of all, you should install the prerequisites, as described in previous slides. Then you should get the source code, get cloned, and the address of the source code. Please note that there are a lot of projects inside git.librafis.org, but we are interested in Librafis Core, which is the main application, and libraries that are used to build Librafis itself. Then you should do configuration, dot slash autogen dot sketch, and please note that it's a good idea to put all the options that you want to use with autogen in autogen dot input. We will talk about this later. Then you invoke make, and then you will have esophis or esophis.exe, depending on the operating system of yours. If you are, for example, Linux, you should look into instir slash program, and you will find esophis, and also on Windows, you will find esophis.exe in instir backslash program. This is a sample autogen dot input. As I've said, I'm going to put compile options inside autogen dot input. As you can see here, I've set the jdqa home for jdqa11 here. I've enabled Python to, and configured it to fully internal, so a complete Python interpreter will be built, and I've enabled several debug options, jbgutil, ldqa-school, and jdbindex, and also I have enabled online update, and then I have to set a privacy policy URL, but because I'm working on a test build, I don't provide any error, so I just say no underlying URL or something like this. So if at this stage, you're able to build a brafist, then you can use ID of your choice. Several integrated development environments can be used with a brafist code. For example, visualistic code is something that you don't need anything. You just open the project, and then everything can be visible inside visualistic code, and you can use the CC++ development plugin or application inside visualistic code that provides you a lot of options to work with CC++ code. Then you can use Microsoft Visual Studio, you can use Qt Creator, KDevelop, VIM, or Xcode, and as you can see, you should invoke Make with appropriate options. For example, if you want to use Qt Creator, you invoke MakeQtCurator-ID-Integration, and then a project file is created, and then you open that project file inside Qt Creator, you will see all the files and symbols and stuff like that, and it helps you develop inside this ID, and the same for other IDs. Let's see a demo. I want to build the brafist in Ubuntu Linux. This is the latest LTS version of Ubuntu Linux, the 20.04 version LTS, and first of all, I should make sure that I have all the dependencies, so I invoke, so you have to build the brafist, and there are some packages that I need that are installed. This is because I have installed all the prerequisites before, and I only need to install 10 megabytes of data, 10 megabytes of packages, but you may have to install a lot more if you are building this for the first time. So after the download and install is complete, you can start configuring and doing make and stuff like that to actually build the brafist. You should do this in other ways if you are using other distributions. For example, if you are using RHEL or CentOS or Armory Linux, or things like that, you should use DNF, for example, and I'm focused on Ubuntu right now. After that, I should do git clone and then I will provide the git address of the brafist repository. So this takes a while in order to clone the brafist source code. So I will pause the video and after this is finished, I will continue. So the next step would be configuring. So first I should have a good auto agenda input in place. I have one with several options that you see. I have talked about some of these options, but you can see a lot of other options here. For example, Qt5, KF5, and a lot of stuff here that you can find out more in the brafist wiki. I won't talk about them more in this video. So if I invoke dot slash auto agenda edge, first of all, I should go to inside the core folder and after that I will see the actual auto agenda input, which contains a lot of options. For example, I have disabled Qtk4 here by commenting this out. And several options that you can find more in the wiki and I will not talk about them here. So if I invoke dot slash auto agenda edge, the actual configuration script will execute and after a while you will see the answer for different things. And this is it. If you want to make, you can invoke make slash usr slash min slash make or simply make. If you want to get help, you invoke make help. And if you want to do some tasks, you invoke make check. In order to run the application, after the success will build, you should invoke instir slash program slash soffice. So I invoke make. It usually takes a lot of time to be able to build the profits and as a rule of thumb, you should divide 8 hours by the number of cores you have. But this is somehow rough estimate. So I invoke make and as you can see, the compilation process starts. And because I have done the build before, possibly it takes a short time because I have done the build before. And also I'm using a trick to increase the speed of compilation. And I want to be able to build the profits within minutes and not hours if not days. I use Ccache and as you can see, it takes a lot of space from my hard disk. It's around 44 gigabytes, but it can help avoiding duplicate compilation or recurrent compilation of files. So that's it. So I can run the LibreOffice that I've actually built, dot slash instir slash program slash soffice, and that's it. And these are the examples I was working on. And as you can see, I'm using X11 as the UI render. You may use, for example, GTK. And this can be changed by changing the environment variable. So that's it. And I can also open the source code inside the development environment, integrated environment like Qt Creator. So if I want to do that, I should invoke makeQt Creator ID integration. It takes a while and it creates the project file that is usable in Qt Creator. And I can open the project file, which is named LO.pro. There are other IDEs usable for Linux, for example Visual Studio Code, or Eclipse, or for example KDevelop, or even VIM. These are the things that can be used in Linux. So it takes a while. It creates the project file and you are done. So I invoke Qt Creator and I've already loaded the project file. So these are the files and folders from the project. You can easily, for example, find some symbols, for example that OUS string buffer that we talked about. And here it is. And as you can see, the same file is found here. And I can go to the definition of SolWarn unused and the same thing has happened. I now inside types.h, which is inside includes.sol.h So this is very useful. And I can select among different build and run options. And if I press run, I will see the LibreOffice. And if I change something, it may take a while. It compiles and then the application will be show. This is much easier from working in common line and working with VIM. The same thing is visible here because I've not set the UI to X11 here. Now here I see the GTK tree UI and that's okay. So this is very useful and can help you develop. Another good option is using the Visual Studio Code. So if I open this and I go to file, open folder, I can just open the core folder. I've done this before, so I simply open this folder and you see all these files. I can open this file and I can work with several C++ files here. For example, the EMF Reader, that's XAX, that was something I was working on. Please make sure that you have installed the CC++ extension from Microsoft. Okay, so this is the code and it's a very good IDE but you need to make sure that you have enough RAM in order to use this. So I can run and debug the application but first I should set .json. So you should go to the program section. This is an example that I need to fix. Workspace.editout is not correct. I should set instpr.s-program.s-office.bin. This is the actual binary file. The s-office is a script that loads this binary. I should set program to the exact binary. I start debugging and after that I will see that the LibRafis application comes up and I can use the debugging tools that are available inside the Visual Studio Code and that's something very helpful. So this is LibRafis code and it's very useful. This is something that can be used in Linux. Let's build LibRafis in Windows. So you need several things in Windows and the first one is the Microsoft Visual C++ compiler. So if you go to visualstudy.microsoft.com you will see several options for downloading Visual Studio. So I've downloaded the community edition of 2019 and I've installed it. So this is the Visual Studio installer. If you haven't installed it before you can use it to install the version you want. So this is the Visual Studio community 2019 and I've also installed Visual Studio Community 2022 preview. Both of them are free and with the recent changes on the Graphis code Visual Studio 2022 is also usable but I prefer to stick to 2019 version as it is tested much more and if you have installed the default options you should make sure that the individual components that are needed are installed here. So if we go back to the Graphis on Windows on Vkey and if we go to Visual Studio section we will see that several components should be checked and all of them should be installed. These are the individual components that you should have installed. Let's check some of them for example Windows Universal C runtime should be installed. Let's check. Yes, we have installed it. If you haven't installed all of these components that you should check one by one you should check all of these and then click install and make sure all of these are installed. After you have made sure that all of these are installed then we will install C by GVN. So you should download the 64-bit version and if you want to install it you should go to the command line and use this command. Let's see. Yes, this command. It actually invokes the installer with some parameters. So I have installed C by GVN but I'm going to install it for another time and it helps if something is not updated. So let's invoke this command inside the download folder and as you will see the installer comes up after accepting the default values you will see that it will show you the list of software that's needed that you want to install and those that were selected via the options will be checked here and you can also add whatever application you want to install here. So nothing happens here because I have installed before and there is no recent update. If you're doing this for the first time you will see a lot of things here. So nothing special happens here and just make sure everything is up to date and it's finished. So you can close this console and you should make sure that when you want to clone LOD and the source code you're not using the git from Windows because the end of line is different inside Linux and Windows. So I should find the LOD page inside Viki and I should follow the instructions. I'm doing this manually so I need to clone LOD somewhere that is not a network drive that its name does not exceed eight characters, aim of the folders and only use A to Z and 0 to 9 and no spaces in other special characters. So I have also done this before and I go to C by G drive C and users and then I'll say which is my user name and documents when I want to clone because I have done clone before it says the destination path already exists that's fine. So I go inside LOD I invoke setup-preerick in which installs prerequisites because I have done this before nothing new happens and then I should export LOD home and then I go inside the app-slash-core folder and I invoke LOD underline home slash OPD slash PN slash make if I haven't run Autogen I have to run Autogen before but because I have executed dot slash Autogen before this will work fine. Let's take a look at my Autogen options inside Autogen.input so I've essentially enabled debugging and I have activated the JD car and I've disabled some of the options so as you can see here I'm using VisualStreet 2022 but if I want to stick to 2019 I should comment this out and I've also set the parlors into one so because I had problems on this machine or this virtual machine I reduced the number of parlors to only one so if I invoke dot slash Autogen.sh as you can see the configuration process will start and everything is checked and after the configuration script made sure that everything is fine it will help us build LibRoffice so let it finish it takes a while and after that we can build LibRoffice everything is checked this is JD code there are situations that you encounter a problem and you should carefully check the areas that you've encountered in error in order to find the source of the problem and fix it so the ant is checked the JUnit is checked all of this are available and another thing to make sure that the Antivirus don't cause problems for you you should add the CYGVN and BILD folder to the exclusion from your antivirus so everything is safe here because it is built on your computer and the sources are checked so everything is fine then I invoke LodeHome slash OPT slash PIN slash MAKE so that's it because I've built this before I expect the compilation process to finish somehow fast because there are not a lot of things to do and it should finish in a short period of time so let's wait and see as you can see some images are converted to zip here this happens every time so it's no problem if your computer is fast enough building things from scratch won't take more than one hour but if you don't have a new computer with enough RAM it may take for example half a day to build their profits from sources so be prepared for this amount of time if you don't have a decent computer and it takes a lot of storage so preparing for example as in here at least 25 gigabytes is something that you should know and you should have this amount of free space in order to successfully build the profits so there are a lot of modules that as you can see are built and everything are built here so it is finished and now we can invoke in CTIR slash program Saffis.exe and so in CTIR slash programs Saffis.exe is the LibRuffice that I have built and you can see the output so we are done and we could be able to build the profits after that we could do a lot of other things changing in LibRuffice code easy hacks what is an easy hack it is a simple straight forward task and it can be also something other than program but we are focused on programming it can be solved by a limited effort from newcomers so newcomers can do that can fix that problem and this is because it is evaluated by the developers and code pointers are available the instructions are somehow known and it is considered a good starting point if you want to see an easy hack you should go to bugzilla and see the bugs labeled with easy hack and also there is a good categorization of this easy hack inside the wiki so if you go to development.exe easy hacks page in the wiki you will find the list of easy hacks categorized by difficulty program language others so there are different complexity levels and this is actually examined by some of the well-known experienced developers here beginner, medium and interesting that is somehow more difficult let's see an example or sample easy hack the task is use program once instead of include guards so this is with the difficulty level beginner and the task is to find the headers that use include guards as you know in order to avoid duplicate inclusion of header files and putting one header multiple times inside a C++ file there is something called include guards if not they have a symbol it is defined and in the end the end if comes so this is something traditionally used in all the header files but these days is easy to use hash mark program once instead so you should find instances of include guards you can do that with git jurep hash mark if not def started HXX and then you should remove the include guards and you should fix the byte space and you should remove the duplicate new lines and then at sharp program once instead so this bug is actually inside bugzilla with this address as you can see here but here the bug number is important and it is referred in both the commit title and the commit message with tdf sharp 143 148 so this is also something important this is the actual easy hack that I was talking about as can be seen inside the bugzilla so let's talk about garrit so what is garrit when you want to get your code marriage into LibRufus it is necessary to submit your code to garrit in order to get reviewed so you should set up your system for connecting to garrit first you should create keepers and there is a good script inside LibRufus code called allogarrit so if you invoke .slashallogrits setup you will ask several questions and then everything is set up for you there are situations that the keeper is not created so in such a situation you should refer to the tutorial that I put the link here it helps you to create ed25519 9 SSH key that is a standard better than rsa for generating keys then you should add your public key to garrit and after that you should test it .slashallogrits test if that shows a successful message you can make sure that the setup was successful so if that does not happen you should think about ways to fix this and you can ask me for help then you should create a commit get commit and after that you should submit your changes by invoking .slashallogrits submit master so you should submit your changes to grid in order to get reviewed then you should search for a reviewer and you can add me as a reviewer or you can find other mentors and developers and add them and if you look carefully to garrit you can find some of those who do reviews then you will get several review comments and you should do all these steps until you get plus one or better than that plus two so first of all whenever you upload some changes called the patch set to garrit the continuous integration tools here Jenkins starts building the profits with your changes for all the available platforms from Windows to Linux to macOS to android and other known platforms so if everything was fine and if the build process on all the platforms was okay you will get verified from the Jenkins if some problems were reported by Jenkins you should fix them and after that you will get suggestions or possibly corrections and comments from the reviews you should respond to the comments by fixing the suggestions and doing the corrections asked from you for example if you are asked to change a variable name or do the things using other methods you should do that in order to get your code sometimes the change is simply removing some extra wider space but sometimes it can be more complex and whenever you are fixing the problem you should do commit-amend and submit the changes again using elogate-master and in this way you will upload the next patch set so patch set 1, patch set 2, patch set 3 and it goes like that and after the reviewer or reviewers accept your changes one of the reviewers will give you plus 2 and after that he will get your code merged please note that if you are submitting a code to Libreface for the first time you have to send a license statement to the developer mailing list so make sure that you read the license statement suggested in the wiki and also you should add your name to the list of developers inside wiki so these are the things that you should do before your first submission can get merged this is a screenshot from Garrett with some of the submissions from several people and as you can see some of these submissions are waiting for someone to be added as a reviewer one of the submissions with the red cross mark is something that had problems with building the code but others have passed the continuous integration the Jenkins build and also the tests that are accompanied with the build process some of them may also wait for the build process to finish so let's see all this in action in order to be able to submit patches to Garrett you should set up your public private key inside Linux or so let's do it you should use the utility at Garrett it has an option set up and it says you should press enter and in this way a public private key is generated I give a password and I should enter the password again it says that it doesn't match if it doesn't match you have to make sure that you enter this correctly so this is the key that is generated you shouldn't share it with everyone you shouldn't share it with no one and this is what I am asking for my user name I enter saying at signoffice.org and I am done if I run a liquid test I will see that the signature of the Garrett is shown to me and it says it's not okay because I have not added my public key to the Garrett so let's see what's my public key slash idunderlandrsa.pub so yes this is the key and I can copy that the only difference is I should change my user name to something more appropriate this is my email so I am copying this copy and then I go to the Garrett I have logged in before so you need an account here you should create an account in the single sign-on for the confoundation so I am going to the SH key and I add my SSH key here and I click at so I am done and after that I can see the SH keys here and after that my run I will create test yes this seems to be in trouble so I can check so the user name is wrong actually so let's fix the configuration my user name is same so now the settings should be correct I should provide the password and yes the third setup was successful now I can make some changes and submit those changes after I provide some commit so if I do commit I can send it by slash submit master but because I have not done this I skip this step so let's go back to Garrett and these are the open changes let's look at some of the changes that have been accepted before for example the one that we were talking about like the include guard as you can see a lot of people have done this and it is TDF as you can see a lot of people have done this and for example let's look at one of them and see the things that happened inside the patches so it has a title it says use pragma once instead of include guards and some description and this is essentially changing multiple files but you don't have to change multiple files changing only one file is enough so as you can see the include guard is removed and the pragma once is placed instead of it so at first you see the PICET1 then Jenkins is added automatically and I've added by the author as a reviewer and I provided some comments for example I asked the author to remove some lines and he just removed that and after that there are some situations that build fail but you should try continuing by rebasing or asking someone to rebuild and after a while we came to a position that I've put a plus one and I've written looks good to me and after that Ilmari which is one of our mentors came in and asked for the license statement and the license statement was actually uh posted by the author to the mailing list and after everything was fine the code review plus 2 shows that everything is okay so after that the patch is actually merged into the brafist code this is essentially what you should do to comments you should fix the problems and you should get both the plus one from either a person or Jenkins for getting verified and also plus 2 from a code reviewer who has commit access so if you can do that then you are one of the developers of the brafist you should add your name here this is the license statement all of my past and future contributions to the brafist may be licensed under the NPL route 2 V2 LGPL V3 plus dual license this is essentially something that you should send to the developer mailing list and this is the list of contributors so individuals and companies so you should add your name here you have contributed to the brafist and you should put your license statement here and this is something that you should do and you should put your name somewhere here and you should do this according to your family name and you should note that this list is sorted the path to growth in development these are the things I suggest you to do first you should understand C++ and if you are working with other languages you should have a good understanding of the language you are developing with then you should understand Gith and Gert so I assume that you know and you want to go to the next step then you should be able to build the brafist so I have talked extensively on building the brafist today so I hope that you don't have any problem but if you had you can contact me then you should do your first easy hack you should fix the things in the easy hack you have chosen and I think a good place to start is an easy hack with difficulty beginner then you submit it and you go through all these things responding to the reviewers and doing fixes as they are suggesting to get your code merged I suggest that you do at least 10 bug triggers before going to the next step because we think that a developer should understand how bug reporting and bug management work and this is something that I think you should do before going to the next step the next step would be doing at least 5 easy hacks with difficulty beginner after that you can work on regressions so what are regressions regressions are special kinds of bugs that happen when something was correct before and was working but in the newer version by changing stuff in various parts of the code the problem showed up and it was not there before so this is called a regression and with a trick called bisecting and here by bisecting you can find the commit that actually created the problem and in this way it is somehow easier for the developers to fix kinds of bugs so it is suggested that you should do at least 5 regressions then you should write at least 10 unit tests so unit testing is something very important in order to make sure that if some bug is fixed it doesn't happen in the future and if someone uses a code and creates the problem again the make check won't pass and that person cannot add his code to the LibRafis unless he or she can fix the problem so then it is suggested that you do at least 5 easy hacks and after that I think you can you can become someone who understands more about LibRafis and then you can read some more complicated documents about LibRafis and you can go in the path to become a developer with ability to fix the bugs and add the features and stuff like that these are the recommended readings I suggest you take a look at comprehensive list of learning materials that are inside wiki inside development learning materials there are a lot of articles and books and references and also examples and conference presentations in video and PDF slides all of these can be found inside this page it's a long list of many learning materials that can be helpful for you then the LibRafis API documentation is something useful for those who want to work with LibRafis STECA and at last a list of development tools are available with api.librafis.org slash docs slash tools.html thank you very much that's it I hope that you have enjoyed the presentation if you have any questions I will be happy to answer you thank you very much