 Hai, semua. Saya Ha Wei dan dari selama setiap tahun, saya juga berada di CES, jadi hari ini saya akan bercakap tentang pembentangan Open Source, Y, dan berapa. Mari kita mulakan dengan... Anda tahu apa-apa projek ini? Saya pasti anda dapat tahu satu. YS Code adalah Open Source. Ya, tentu saja. Kita ada Node.js. Ini adalah Thunderbird. Okey, dan itu adalah Linux. Android Open Source projek. Inkscape. IntelliJ Ideal. Yes, IG Ideal adalah Open Source. Anda dapat berkongsi. Anda dapat... Inkscape, Android Studio dibuat di atas. IntelliJ Ideal. Mungkin kerana ini Open Source, saya rasa. VLC. Firefox. Chromium. Bukan Chromium. Chromium. Libu Office. Dan yang terakhir. GIMP. Bukan PAD. GIMP. GIMP. GIMP. GIMP. Ya. Okey, ada sesuatu... yang saya tidak memikirkan logo untuk audacity. Apa lagi yang kita ada? V8. V8 adalah javascript engine di belakang... menggunakan Chromium dan Chromium. Kita ada LVM, VCC. Krita. Krita adalah video editor. Tidak, minta maaf. Krita adalah tool penjara untuk Linux. Atau, saya perlukan platform untuk Open Source. Java adalah Open Source. Javascript, C-Sharp, F-Sharp. Semua keluarga perkara ini sekarang Open Source... di bawah foundation Javascript. EngineX, web server. Sangat popular. NUS Mods, Open Source. Ada lagi projek lain... yang anda gunakan yang saya tidak beritahu. Ada sesiapa? Maaf? Yaan. Yaan adalah Open Source. Maksud saya, ekosistemnya Open Source. Yaan, NPM, Node.js. Ada apa-apa lagi yang anda ingin beritahu? Projek yang terbaik adalah Open Source juga. Zilliqa dan... Windows Calculator. Windows Calculator bukan Open Source. Apa? Jadi, kita akan bercakap mengapa semua projek ini... Baiklah, projek ini bermula sebagai Open Source. Tapi... beberapa sebab yang saya beritahu... nanti akan menjadi kenapa... banyak perniagaan mulai dengan Open Source. Kenapa Microsoft mengambil investasi dalam Open Source? Selepas beberapa tahun mengambil Open Source... dan berkata bahawa itu adalah perkara yang terbaik. Selepas itu... Jadi, apa itu Open Source? Tunggu. Jadi... Open Source... tidak bermakna... ada pilihan yang berlainan, bukan? Itu... termasuk yang berlainan. Apabila anda katakan sesuatu yang berlainan... kita bercakap tentang... pilihan yang berlainan. Apabila anda katakan... pilihan yang berlainan... kita bercakap tentang... pilihan yang berlainan... sebagai seorang... untuk menggunakan projek ini. Atau... ia adalah sesuatu tentang pilihan yang berlainan. Jadi... pilihan yang berlainan... mesti membuat anda menggantikan program ini... segera. Apabila saya katakan segera... saya tidak bermakna duit, bukan? Saya bermakna... anda harus dapat menggantikan dengan... tidak ada keputusan pada diri. Dan... apabila saya katakan menggantikan... tidak dapat menggantikan. Anda mesti dapat menggantikan dengan segera. Dan... anda tidak mesti mempunyai keputusan... pada keputusan anda. Jadi anda mesti dapat memberikan kepada seseorang lain. Dan seorang itu mesti dapat juga... memberikan kepada orang lain. Tidak ada keputusan. Jadi ini bermaksud... jika anda memberikan program... sebuah program untuk seseorang lain... anda tidak perlu mempunyai... keputusan yang berlainan. Itu keputusan. Dan anda mesti dapat membuat kerja yang berlainan. Maksudnya anda menggantikan... atau membuat software... yang berlainan kepada beberapa penerbangan. Tidak... anda mesti dapat membuat kerja yang berlainan. Dan anda mesti dapat menggantikan... atau menggantikan kerja yang berlainan juga... segera. Dan anda mesti dapat membuat... semua ini... tanpa diskriminasi... seperti... pada diri anda. Pemimpinan anda menggunakan software... untuk... apa software anda menggantikan dan sebagainya. Jadi... tiba-tiba... tanpa diskriminasi. Jadi anda mesti dapat menggantikan... kerana... anda tahu. Jadi ini adalah definisi OSI. OSI adalah institut penerbangan. Dan... anda mungkin dengar sesuatu yang lain... disebabkan... software seluruh. Dan... ada sebuah... fundasi yang lain untuk software seluruh. Walaupun anda mungkin kata... bahawa mereka hanya... keadaan yang berlainan sama. Jadi software seluruh juga... definisi. Dan ia berlainan dengan berlainan... dengan berlainan dengan berlainan... yang lain. Seperti yang anda lihat. Jadi... definisi berkata... anda mesti dapat... menggunakan program yang anda inginkan... untuk sebuah kata-kata. Menjelaskan dan modifikan... bagaimana programnya berlainan. Kita berlainan secara seluruh. Dan lagi, ia bukan tentang duit. Dan anda mesti dapat... berlainan... yang berlainan dengan berlainan... atau modifikan versi seluruh. Jadi definisi... adalah sebagainya. Dan lagi, ini adalah... fsf atau... fundasi yang seluruh. Definisi. Jadi... apa yang berlainan? Fsf berlainan... adalah tentang proses perkembangan. Ini tentang bagaimana... software berlainan. Dan... Ya. Jadi, ia berlainan dengan berlainan... dan anda mesti dapat... melihat program yang berlainan... modifikan, modifikan, modifikan. Jadi... ia... dalam beberapa cara... ia adalah definisi lebih kurang... dalam beberapa cara... ia juga lebih kurang... daripada fsf... bergabung dengan bagaimana anda lihat. Dan... perkara lain adalah... tetapi... bagaimanapun... fsf, fsf... tidak berlainan... dengan proses perkembangan... atau bagaimana ia berlainan. Tetapi juga... fsf. Jadi... anda mesti dapat... anda mesti dapat... memperkenalkan program yang berlainan. Anda mesti dapat... modifikan. Anda mesti dapat... berkongsi. Jadi, ia tentang fsf. Dan... sebagai konsekuensi... untuk mempunyai fsf... anda mesti juga mempunyai fsf... untuk memperkenalkan... modifikan dan mempelajari bagaimana ia berlainan. Jadi... lagi, ia adalah... sesuatu yang berlainan... yang berlainan yang sama. Tetapi... ada beberapa perbedaan di sini. Untuk contoh... anda tidak tahu... bagaimana blobs yang berlainan... untuk contoh... untuk contoh... jika anda mempunyai... jadi... anda mempunyai... fsf yang berlainan... fsf, fsf... fsf, fsf... fsf, fsf, fsf... ada perbedaan untuk fsf, fsf, fsf. Dan perbedaan berlainan... pada komputer anda... pada komputer anda, main CPU... jadi ia berlainan... dalam perbedaan. ia adalah sebahagian sistem operasi. Tetapi pada fsf... ia akan menjadi... perkara lain... yang kita nama... fsf, fsf, fsf. Jadi itu adalah... pula... kota. Tetapi... selalu... atau dalam kes... selalu... apa yang terjadi... adalah... untuk... fsf, fsf... yang ada pada komputer anda... dan membuat kerana... yang ada pada komputer anda... yang ada pada komputer anda sendiri... adalah komputer yang dibuat... gila. Dan anda... anda boleh modifikan dan sebagainya. Tetapi... permainan kota... kita panggilnya kota... kerana ia sebuah kota yang... anda tidak... anda tidak dapat melihatkan. Permainan kota anda... adalah menghentikan. ia dibuat oleh pemainan... dan mereka tidak... anda tidak dapat melakukan apa-apa. You just take that whatever the vendor gives you and you send it to the Wi-Fi card to be loaded. And so in some ways, or at least in the way I interpreted it, it's does the driver itself fulfills the requirements to be open source. The driver is developed and open, in the case of sale lean-ups etc. But the driver may not be, or other people who are focused on free software may have some problems or issues with using this driver. Because the driver, although it's open source, a lot of the functionality of the Wi-Fi card as a whole depends on what's in this firmware that is sent to the Wi-Fi card. And the firmware itself, it's not open source, you can't modify it, you can't study it easily. And so that's an example of maybe the difference between open source and free software. I won't really talk about the philosophy too much in that. This is, I think, as much as I will go. But there are some projects like, for example, there's this project called Linux Libre, L-I-B-R-E. And they strongly believe in free software. So what they do is they take the Linux kernel and they strip away all the parts that are non-free as they call it. Meaning they'll strip away all the drivers that require closed firmware and things like that. And so there are people who believe strongly in free software, they may use Linux Libre. So, hopefully that gives a clear understanding of what the difference between these two terms are. But for all practical purposes, unless you really believe in Libre and the ability to study or what your computer is doing, they are the same thing for most practical purposes. Although, some people will probably disagree with me like Richard Stallman probably. So Richard Stallman is the person who founded the FSF, Free Software Foundation. And of course he is strongly for free software and he is sort of against open source. So open source actually came from, so some background on their creation. Open source came from Debian, if you heard of it, it's a Debian, it's a Linux distribution. And they have this thing called Debian Free Software Guidelines for what they, to classify software that they consider as free software. So if I remember correctly, the Free Software Foundation came first and then Debian wrote their DFSD, Debian Free Software Guidelines without really looking at what the Free Software Foundation did. And because it's the Debian project, it somehow got more popular than what the Free Software Foundation popularized. What the Free Software Foundation put out. So the FSF got a bit upset at Debian. And so open source, OSI's definition comes from the DFSD. And so it's sort of like two camps. They're like working at the same thing, but they have disagreeing views. But anyway, that doesn't matter. You can read more if you're interested in all this philosophy. And the other thing is that, of course, what I've mentioned already but free is not about money. It's about freedom. So they say free as in speech versus free as in beer. You have free beer and free speech. The first is about free beer is about getting beer without money. Free speech is about your freedom to, you know. So the free here is about freedom. So you can have companies that you can charge money for free software. You can charge money for open source software. You can charge money to work or do something to open source software. It's not about money. So you can always charge money for it. And there are companies that have done very well just selling open source software. So if you heard of Red Hat Linux, Red Hat Enterprise Linux, it's an enterprise distribution of Linux. So it's meant for corporations that want to use Linux. And their selling point, of course, is that they provide support. What a lot of open source projects lack is guaranteed support where the company, if something goes wrong, the company can say, okay, I go to you and ask you for help. If your open source project and you voluntarily contribute, you won't provide any guarantees to whoever is using your software. You won't say, I guarantee that my software will work. So Red Hat does that. That's their selling point. So they sell this thing called Red Hat Enterprise Linux. Linux and a lot of the software around Linux is open source. And so you might wonder if Linux is open source and Red Hat is selling Linux, then what's stopping me, let's say I buy Red Hat Enterprise Linux. Now, because it's open source or rather Linux and all the software or a lot of the software around it is open source, there's nothing stopping me, actually, in theory. There's nothing stopping me from just buying Red Hat Enterprise Linux and then I get the copy of the software, the binary and the source code and now I can redistirut it for free because that's what open source license let me do. So how does Red Hat Enterprise Linux keep a profit? So that's here. Here we have to talk about copyright versus trademark. So open source licenses and free software licenses generally talk about the copyright. You have to license to redistribute things. That's copyright. What Red Hat does is they have their trademarks. So Red Hat is trademark and they have those trademarks in the software that they sell. So you cannot redistribute you cannot give copies of their software because it contains their trademark. So it's still open source. It's just that you can't redistribute it because it contains their trademarks and if you so Red Hat actually distributes their source code freely and you can use it to build your own version of Red Hat Enterprise Linux and that is what people have done. So if you heard of this distribution called Santos, C-E-N-T-O-S that's actually built from Red Hat sources. They just throw away all the Red Hat branding and substitute it with the Santos branding and so you have Red Hat Enterprise Linux except it's just because you can't use the trademark so you just rebrand it. So Santos is free, you can use it just that you don't get any support from Red Hat itself. So why should we use open source software? Well, number one is I think okay, a lot of different reasons might appeal to different people but one of the reasons is there's a lot of business like let's say you're a company you want to buy CMS platform CMS content management system platform you buy it and then one, two years later the company you buy it from goes out of business. Now if you don't have the source code so if they go out of business then you're basically screwed you have to get that software use but because you don't have the source code it will be hard to do so and so if they were open source then if the maintainer or the developer of the software goes out of business or they stop maintaining it then number one is you can just take it and say okay I will maintain it for myself no issue there number two is since it's open source the data it stores is data and then you can say you don't want to maintain this software but at least you can look at how it stores is data and you can easily take the data out and convert it to some other format that you can then use for some other software and that's one benefit the other thing is okay you can see how it works so there's some bit higher trust afforded to open source software because you can see exactly how it works so there's no you don't have to worry about the vendor putting in backdoors or virus or something into the software that they give you because you can see look at the source and if you don't trust the files the binaries that is given to you you can just compile it yourself so no worries there and there's no vendor lock in so what I mean when vendor lock in is you know like Microsoft Word Office right it's a closed source software and now documents created by Microsoft Office you have to use Office you could use like other alternatives right but then you get you know this weird formatting issues here and there and some things just don't work properly and it's very annoying right and that's because Office is open is closed source proprietary the format is proprietary and you know all the other people that are able to open Office files they basically reverse engineer the format so it won't be perfect and you know and even with the new format the Office.x files Microsoft puts out a specification for them but it's not very it's not really done in good faith like they put out a specification and then they intentionally deviate from their own specification so that people who are trying to implement that specification don't they won't be able to actually open Office files properly because Microsoft intentionally deviate from their own specification so that people will buy Microsoft Office instead and before we had this .x files you had .x and that was like 2003 and before and so those files actually the current format is basically XML but of course the details of what's in XML is quite complicated but in the past what was saved in .doc files .xls files and so on there's basically just a memory dump of Microsoft Office so you can imagine how hard it must have been for the people to reverse engineer that so if you use open source if you use open source format and open source software then you can see exactly okay this is how it's reading the format and you can implement your own reader and you can be sure that it will work exactly the same you can modify and extend as you want and lastly in theory there'll be more eyes on the code because it's open source so everyone who uses the code and who has a vested interest in the code working well make sure it works and make sure there's no lesser security vulnerabilities at least in theory in practice it's not really proven even large open source software like OpenSSL there's no major vulnerabilities like hard bleed if you heard of that so OpenSSL is a library that does SSL is a protocol that does encrypts or encrypts communications for the internet and a lot of things OpenSSL is a library to use that protocol the implement that protocol and it's a very widely used library used by a lot of things so if you're on Linux programs will probably use OpenSSL and it's a very popular project OpenSource but they still have vulnerabilities and some of the vulnerabilities were present for many years so more eyes in the code in theory but in practice sometimes it just doesn't happen because everyone thinks other people will be looking at the code and in the end no one actually looks at the code so if you a company or you are making your own project why make it OpenSource and there's a number of benefits here of course so okay the first one isn't really a benefit but it's just a philosophical reason so source code is in some ways it's knowledge and at least in hacker culture and tech culture generally at least the olden day tech culture and so that should be the reason why all your software should be OpenSource but of course nowadays that's not really a case you get people looking at your code and that's a good thing well can you get and you get contributions also for free where else are you going to get that or how else are you going to get that other than making your code OpenSource and of course people will trust your software simply because it's OpenSource and they can look at your code and if your code is good and people will trust it more and they can be sure even if you are like a nobody you just throw yourself because they can look at your code they don't have to trust you in order to trust your software because they know that the source code is there so if they don't trust it they can just look at it and if you are wondering if I am just creating if I am just hacking my own mini project and why should I bother putting on GitHub all these reasons still apply you never know when someone might find your mini tool that you wrote for one day you never know when someone might find it useful and there is no reason not to put it out there you get to and if you put it on GitHub like if you don't put it on GitHub you might lose it one day but if you put it on GitHub it will be there for ever someone might find it useful someone might give you suggestions on how to do this better so there is no reason not to put things not to make things OpenSource and one of the ways to do that is to put it on GitHub OpenSource partially originated from hacker culture especially in the olden days 1980s, 1990s Back then a lot of software was OpenSource or rather you didn't receive software in the form of binaries you just got the source code and you just compiled it yourself so there wasn't this thing of property software i sell you this binary you cannot share it with people that was back in the early days of computing and we in both OpenSource and hacker culture emphasises heavily the freedom of knowledge so we believe that knowledge should be shared freely and there's no reason to say oh you must pay me money so that i show you how to do this you just share whatever you know you share freely so now we move on to the how part so how do you make your software OpenSource the first thing is to choose a license so there's a link here which it goes to this website called choosealicense.com and this website is maintained by github so i think it's quite reputable at least or at least i haven't read anything that i think is inaccurate so there's a more general guide here simpler guide but if you want to look at a larger list of common licenses then you can go here so this is choosealicense.com so you have to choose a license first and now before i go on further i must say i'm not a lawyer so if you're worried about this please just ask a lawyer who specialises in software licensing and so now the question is do you actually need to license your software what if i just throw it on github with no license so the answer is that if you do that by under copyright law no one can do anything with your program because although you put it on github and people can actually they have the ability to go and click and look at the program and use but under copyright law you haven't given them the license to do that so if they do that they are violating your copyright so if you really want to do if you want to open source your projects you should just at least throw in a license saying that oh this is MIT or whatever if you don't care lah because especially if you ever see if you ever put some project on github and someone opens an issue saying can you please put a license this is why because if you don't put a license there under copyright law you can't do anything with it or other people can't use your software for anything and so if a company wants to use your software they definitely won't be able to do anything because their legal team will be like this software cat you can't do it because there's no license so you need a license so now we'll talk about forming categories of open source licenses this is sort of my own categorization so most people will categorize it into just copy left and permissive and these two are just not there but I saw of CA as four categories so first you should talk about what is copy left so it is quite interesting so copy left comes from copyright and so where does copyright come from copyright is copyright so it's the right to copy literally so if you own the copyright means you have the right to copy distribute and share it with others you own the right and so the cool thing is copyright law let you say that okay I give you the right to copy this or I give you permission to copy this but you must adhere to these conditions so if you're the copyright owner you can say that and so you can use or what copy left is doing is using copyright law to say that okay I let you share this with others but in return you must also when you share this with others those other people share with other people and so we have copy left created from copyright law it's actually quite cool you might say this is a hack it is a hack of the copyright law but it's a great hack and so that's essentially this is what copy left is it's saying that you can redistribute something and redistribute your modifications but you must also let other people do the same and so this ensures that software stays open source and knowledge is forever free so now copy left licenses so these are licenses that basically implement copy left so the first one very common license I'm sure you have heard of it a lot of licenses, a lot of software is under the GPL it's a license for the GNU GNU general public license so the GPL the GPL it's a very large document actually they are marrying hairy details which I won't go into but but essentially the idea is that if you put your software under GPL then anyone who uses your software if they want to modify your software and then modifications must also be under GPL if they want to link to your software means like you have a library and someone else wants to use your library then that person's software must also be under GPL or a compatible license then there's this idea of compatibility which I won't touch about but it's basically whether these licenses you can use them together you can read more if you really want to go into the legal details there's a lesser GPL which is basically GPL but some exceptions so that people who want to use your library don't have to be under GPL this is mainly for libraries that like you know possibly because there are some libraries that are concerned that if they use the GPL then companies won't be afraid of using a library because they are scared that then the company software will become GPL and a lot of companies are actually scared of GPL of course like any GPL code any GPL code that comes in is like a virus then everything else starts to be under the GPL and so there's the lesser GPL which creates an exception for the case where you link that means you just have a library and you have a software and your software can use this one but your software doesn't have to be under GPL and this only applies for dynamic linking if you know what that is so if you're statically linked then the exception doesn't apply you still have to be under a GPL or a compatible license and then there's a ferro GPL so this is an extension of the GPL to solve what we call the ASP loophole so do you all know what ASP is you know what PHP is basically okay so ASP is a Microsoft language for creating web applications la if the GPL was that let's say you have a web application you have a web application that is so people can connect to your web service over the network and if your web service is GPL now someone can take your web service source code they can improve it and then they can run their web service so now the problem is that because people who connect to your web service are not really running the software directly the GPL doesn't apply because you're not actually redistributing the modified version so it doesn't apply so to solve this loophole the GPL says that you must also provide the source code to people who can use your software over the network so that sort of close the ASP loophole that's what they call it ya so you might use the AGPL if you're developing like a server or some kind to ensure that I can't just take your software and modify it and not share the source code because I'm not redistributing the software, people can connect to it but they're not redistributing it so the GPL doesn't stop that but you can use the AGPL for that then we have popular licenses so there's only one in this category that's common it's the Mozilla public license so I say I call this sort of approximately equal it's like the GPL but it allows you to link freely that means if I have MPL MPL library and a company wants to use my library they can use it no problem even if their software isn't open source they can also link it statically which is fine under the MPL as long as they keep as long as they keep my library itself open source so if they modify my library then they have to release the source to my library but the rest of their program isn't affected so I say it's like the GPL except it minuses the virality upon linking so I can take the MPL license software and link and combine it with other software without all the other software having to be GPL as well so that's partial copy left so basically it's still copy left for the source code and add the code of the library itself but it doesn't make everything else have to be GPL or whatever so it's not as viral so I think Firefox is under the MPL I'm not sure it's not very common some people will just lump it together with copy left licenses because it's still copy left it's just a bit less permissive licenses so permissive licenses these are very common nowadays BSD2 clause BSD3 clause Apache license MIT license I'm sure you've heard of these just basically say you can do whatever you want to the software just keep my copyright notice and the license notice the BSD3 clause adds a non endorsement clause so basically the non endorsement clause it says that if you use my software you cannot say that I endorse your project or whatever because you're using my software it adds a patent license clause so these two licenses were written in a time before it was established that software can be patented so Apache came after that so they fix the issues of patents so basically the Apache license is that if any patents are required in the use of this software then you are granted a license to use those patents as well but for practical purposes to us they are mostly the same a lot of software nowadays are written under release under MIT license Apache license the 3 clause is less common if I remember correctly so basically these licenses are not copy left so it's possible for a company to just take the license under these and just modify them and they don't have to release the modified source code they just have to keep the copyright notice or license notice or whatever so if you use android for example if you use android you might go to your about page your phone about page i'm sorry if you can't see this but if you go to your phone about page there might be this little in your settings there will be an about page for legal information and then you might see some line saying third party licenses and that's where they list all the licenses of all the software that they use so it's a very long document and they list every single copyright notice for all the software and you can find this in other software as well but so that's the license at action in action you can see it and they will list the license for every single software that they use that is license under these licenses they have to they have to reproduce the copyright notice so they reproduce every single thing and they have to in order to comply with the license and then there's public domain licenses so these licenses basically say that you can do whatever you want you can just so they are unlicensed there's a CC0 and also there's a WTFPL i'm sure if you heard of it so the WTFPL is a rather, i don't know, tongue in cheek implementation of this the phrasing is the license file it says 0 you just do you can go and look it up so public domain licenses just tell you, just say you can do every one and you might wonder say ya it might wonder is this different from just putting it in the public domain can you just say, oh i put my software in the public domain the difference is that in certain jurisdictions like european union there's no such thing as the public domain so if you say you put your software in the public domain it will work in the US but in the EU that's as good as you haven't done anything so if you really want to say do whatever you want then you can you should use these licenses instead of not using a license at all and instead of saying public domain so that in theory it should work in more jurisdictions but again i'm not a lawyer okay so that's about licenses and how do you make your software open source? oh ya, sorry so the first step was to choose a license right? and we covered the different types of licenses and number 2 is to distribute your software under that license so ya at the start if you look at open source projects you might see something like that at the top of every source file this source code is something the gpl or whatever will have a different header so you just go to the website for that license and they'll give you some instructions on how to use it and you can put this at the top of your source code and then you should include a license file along with your source code which includes the entire license so you can see this in like the github repositories where there's usually a license file somewhere in the repository and for me i like to use the markdown versions so that if i click on the file in github then it's nicely formatted and then you should put program so you can find this in like a lot of open source programs so if you go to like this is firefox so if you go to there they'll tell you that this program is say open source under the npl and you can you can find this in other programs as well so if i see gcc version let me do that again see if i call gcc version it'll tell me there's a license notice here so this is free software see the source for copying conditions but they will say something about the license of the software oh okay you want to take sure so that's essentially that's it you're done all you need to do to make something open source is that just need to include the license file the minimum you need to do is include the license file it's good to also add the header on top of each source file but you don't really really have to do that although it's too good to do it and then github if you publish your software on github then github has that i'm not sure you can see but on the right side i can't zoom in if on the right side there'll be this little thing saying the license that github has detected so you're now open source and some tips for first you should have a contributing file if you publish your software on github or actually if you publish your open source software at all you should have some guide to let people know how they should contribute any style guide you want them to follow how they should contribute a patch if you are not using the github pull request workflow it's good to mark out good first issues so if you go to if you look at NUS mods they will mark out they will mark out things as a good first issue so to encourage people to encourage people to do that it's good to mark out good first issues to let new people people new to your project to contribute easily and there's more tips here so this link is a opensource.guide and it's a website by github that goes into more detail than i do in this talk opensource.guide it's also by github okay now here's the last part of the talk it's how to contribute to opensource so i assume you have a project that you want to already contribute to right or whatever it is but you need to find something you should do first so you can look at the bug tracker of project just look at the bug tracker or if you find a bug yourself if you run into a bug yourself or if you have a feature in the project that you want that's something you can contribute then you need to set up the environment so you need to be able to build the software so usually large projects will have some sort of guide on how to get started so here i have the mozilla firefox guide contributing to the mozilla codebase and they have a very long they tell you to first figure out how to build it find something to work on fix the bug but the important thing is to be able to figure out how to build the software and you know maybe learn what libraries frameworks they use and so on this is more so for larger project so if it's just a small program then this shouldn't be an issue right do the thing right do your change fix the bug add the feature then figure out how to send the patch in not every project uses github pull request especially larger projects they have their own workflow and they have their own framework they have their own bug tracker patch tracker or if you contributing to the linux kernel they use email so again look for the documentation if they don't use github they will definitely have a guide on how to submit a patch again this is the mozilla one how to submit a patch they have a long document on telling you how to prepare the patch how their workflow works again i won't go into because this talk isn't about firefox so figure out how you should send the patch and then send the patch in and now i think a lot of people who are new to open source they are a bit scared what if people judge my code what if they scream at me don't be afraid don't be afraid of your code being judged because ultimately maintainers want the best for their project and they will be strict about the code that you are sending in and they mean well unless they are outright attacking you they mean well and you must know that a lot of people in the community are not native english speaker so the way they respond or the way they give you feedback might come off as rude or harsh don't take that to heart because they may not be a native english speaker so they might not know that they are being rude so just take the feedback fix it you improve and you help the project so send the patch and of course if they raise any issues don't defend yourself especially if it is stylistic issues just fix it and then you are done then if you are in a bug tracker you will be assigned to the bug and then after that you will be fixed so cool, the bug is fixed by you and your name will be forever in the comic history of the project and that's nice and the other thing is code isn't all that you can do i think maintainers appreciate documentation a lot especially for those smaller projects they don't have time to write great documentation so if you use the software and you know that the documentation is lacking you can contribute that and they will appreciate it because they don't have the time or they just don't care about documentation but they know people will ask them for it and they're not happy to take it in and so last thing is why should you contribute to open source so this is a bit of what my personal take so as a programmer it's your way of contributing to the community it's your way of using your skills to benefit the world at large because your software you put it out there anyone can use it and if you fix something you have or you have improved the lives of many people just by their small bit but it's still something if you contribute to Firefox or Linux or Chrome your contribution will affect many many users, millions even depending on what project you contribute to and the same applies to open sourcing your own projects and some more practical reasons you get free code review again this is something very hard to come by you you get free feedback from people who have worked for years and years on things you get to know like-minded people people who are interested in the same things you are same projects you are working on this may not apply for all projects you put your name out there because once you contribute your name will forever be in the comic history or even if you use a pseudonym and of course you develop your own ability to work in foreign code bases let's say you contribute a bug fix you have to dive into the code base and figure out exactly what's wrong it's a win-win for everyone so contribute now if you have run into a bug recently don't just work around it, go and debug it and fix it you've recently wanted a feature in something see if you can help to implement it especially if it's been months people have been asking for a feature no one has done it and you can be the one to do it and then everyone will be like oh yay I love you that's it you have any questions? and appreciated if you could help us do our feedback form as usual anyone have any questions? so in the past I used GPL v3 a lot then after that I started to use MIT and BSD2 clause but I think if I were to create a new project nowadays it would probably be MPL because I still want I don't want people to take my stuff and then improve it and then it becomes proprietary but at the same time I don't want people to I don't want companies to be worried about using my project because it's under the GPL MPL is a good balance between copy left and permissive but then again MPL I don't think it's very popular so it may not be as widely tested in courts I mean open source itself it's actually been tested in courts as far as I know of so yep it's a QR code okay you can just key in any questions? but something I want to say but I forgot do you all want these slides? yes I was a bit concerned because I have always logos at the front and then I don't know if I run into trademark issues okay but maybe I'll just remove the logos and then we'll be done