├── README.md ├── SUMMARY.md ├── Thumbs.db ├── _book ├── Thumbs.db ├── chapter_2 │ ├── README.html │ └── article.html ├── cover.jpg ├── cover_small.jpg ├── final_toughts │ └── README.html ├── get_involved │ └── README.html ├── gitbook │ ├── app.js │ ├── fonts │ │ ├── fontawesome │ │ │ ├── FontAwesome.otf │ │ │ ├── fontawesome-webfont.eot │ │ │ ├── fontawesome-webfont.svg │ │ │ ├── fontawesome-webfont.ttf │ │ │ └── fontawesome-webfont.woff │ │ ├── merriweather │ │ │ ├── 250.woff │ │ │ ├── 250i.woff │ │ │ ├── 400.woff │ │ │ ├── 400i.woff │ │ │ ├── 700.woff │ │ │ ├── 700i.woff │ │ │ ├── 900.woff │ │ │ └── 900i.woff │ │ └── opensans │ │ │ ├── 300.woff │ │ │ ├── 300i.woff │ │ │ ├── 400.woff │ │ │ ├── 400i.woff │ │ │ ├── 600.woff │ │ │ ├── 600i.woff │ │ │ ├── 700.woff │ │ │ └── 700i.woff │ ├── images │ │ └── favicon.ico │ ├── jsrepl │ │ ├── engines │ │ │ └── javascript-default.js │ │ ├── jsrepl.js │ │ ├── langs │ │ │ └── javascript │ │ │ │ └── jsrepl_js.js │ │ ├── sandbox.html │ │ └── sandbox.js │ ├── plugins │ │ └── gitbook-plugin-mathjax │ │ │ └── plugin.js │ ├── print.css │ └── style.css ├── index.html ├── licensing │ └── README.html ├── manifest.appcache ├── search_index.json └── success_stories │ └── README.html ├── cover.jpg ├── cover_small.jpg ├── final_toughts └── README.md ├── get_involved └── README.md ├── licensing └── README.md ├── open_source ├── README.md └── article.md ├── resources └── README.md └── success_stories └── README.md /README.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 |  4 | 5 | If you are involved in the tech industry (or just getting started) you may have heard the term “open source” at least once. Open source projects are everywhere, on the web, on your computer, on your phone, etc. **You use technology that is open source everyday**, pretty amazing, isn’t it? 6 | 7 | 8 | ### Why I’m writing this 9 | 10 | Because it’s important. I want to encourage you to collaborate with other developers the right way, I also want to share my personal experience, I’ve been collaborating writing code since 2011 and met awesome people from all places around the world in the process, think about it, that’s something great that wasn’t possible to do years ago. 11 | 12 | I’m about to give you an introduction to the very fundamentals of what open source is and what is not, everything you are about to read is my personal opinion, so if you disagree with what I’m saying at some point it’s ok, but keep in mind that what I wrote is based on my experience with the open source world. 13 | 14 | ### The benefits of writing code “for free” 15 | 16 | You can learn from other people's code to write better code yourself. Seeing an open source project you've worked on with other developers come together is one of the most rewarding feelings I've experienced as a developer, specially if it’s a big one with a lot of stars and forks on GitHub. 17 | 18 | **Show what you’ve built instead of talking about it**. Because *code wins arguments*, right?, your contributions to open source communities are amazingly attractive for employers, forget about writing a resume of how awesome you are... share links, repos and photos instead, to show the things you’ve worked on. 19 | 20 |  21 | 22 | 23 | -------------------------------------------------------------------------------- /SUMMARY.md: -------------------------------------------------------------------------------- 1 | # Summary 2 | 3 | * [Introduction](README.md) 4 | * [What is open source?](open_source/README.md) 5 | * [Open source software != Free software](open_source/article.md) 6 | * [Success stories](success_stories/README.md) 7 | * [Licensing](licensing/README.md) 8 | * [Get involved](get_involved/README.md) 9 | * [Resources](resources/README.md) 10 | * [Final thoughts](final_toughts/README.md) 11 | 12 | -------------------------------------------------------------------------------- /Thumbs.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegowifi/open-source-fundamentals/eac83c2845da57cf8e4dc0dafedee5cdbbc706e7/Thumbs.db -------------------------------------------------------------------------------- /_book/Thumbs.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegowifi/open-source-fundamentals/eac83c2845da57cf8e4dc0dafedee5cdbbc706e7/_book/Thumbs.db -------------------------------------------------------------------------------- /_book/chapter_2/README.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | 6 | 7 |Well, "open source" means you can modify something because its design is publicly accessible.
216 |Yeah, when we hear "open source" we think about computer software development right away, today the term "open source" designates a set of values that we call the open source way. Open source projects, products, or initiatives are those that embrace and celebrate open exchange, collaborative participation, rapid prototyping, transparency, meritocracy, and community development.
217 |Simple, open source software is software whose source code is available for modification or enhancement by anyone.
219 |"Source code" is the beautiful code we write that most computer users don't ever see, I know, it´s sad but it´s true. This code is also what programmers can manipulate to change how a piece of software or application works. Programmers who have access to a computer program's source code can improve that program by adding features or fixing parts that don't always work correctly.
220 |Even though open source software is mostly developed and maintained by a group of people, anyone can access the code and play around with it if they want to.
221 | 222 | 223 |It’s easy for people to make the mistake of calling products like Chrome and Android “free software”, because, well...they didn’t pay anything for them. There is a very important distinction between “open source” and “free software”. Both are very specific terms that can mean completely different things, and it’s important to understand this because sometimes we start using software that advertises itself as open rather than free.
216 |Open source means that the source code for the program is open for anyone to see. It makes no promises that you can actually do anything with it, but it at least guarantees you can see it. This provides some of the same advantages of the free software model; namely the ability to learn from the code and being able to independently audit code for stability and security purposes.
218 |The GPL(General Public License) is the best example of a free software license, it’s the license Linus Torvalds used to release his operating system kernel, Linux, which was able to be easily combined with the GNU operating system components because they were both using the same license. This gave birth to what we now know as “Linux”, but though purists will be quick to mention the proper term is “GNU/Linux”.
220 |A big misconception about the GPL is that it’s an “open source” license. Yes, the source code for a program released under the GPL must be available to all, but that isn’t all GPL guarantees to the user. The GPL guarantees what the Free Software Foundation likes to call the “Four Freedoms”:
221 |From the almighty Four Freedoms we can see that the GPL guarantees much more than just simply see the source code, which is all that “open source” means. The GPL gives you the ability to modify the source, and then redistribute that modified version however you wish.
228 |Another big misconception, and the reason so many people are confused in the first place, is the assumption that the “free” in free software is referring to free in the monetary sense. In fact, nowhere in the GPL states the developer is not able to make money off of his program or charge a fee for various services (installation, support, modification, etc). The simplest explanation out there is that free software is “Free as in speech, not free as in beer”.
229 | 230 | 231 |That´s it, now you know how awesome open source is. I wanted to make this book as short as I could so most people could read it in about 30 minutes or so, but at the same time I wanted to explain the important stuff you have to know about the subject and I think I did well. If you think my book needs to cover more fundamental subjects about open source, if you spot some typos, etc. please let me know and/or contribute with the repository on GitHub, pull requests are welcome.
214 |If you liked what I wrote, learned something new and want to tell me what you think feel free to send me a tweet, also, all donations are very welcome, this motivates me to write more Gitbooks with more cool content, and of course, free your you all.
215 |Have fun with your code, thank you.
216 | 217 | 218 |You need to know how Git (a “version control system) works in order to contribute with people (in most cases). ¿Why GitHub?, well, GitHub has become a staple amongst the open-source development community, it´s simple, with a great user interface and it´s where most open-source projects are.
216 |¿So you found that cool project you want to work on?, great, an open source project typically involves three stages. Let's take a quick look at each stage.
217 |You could begin by contacting the organization behind the software itself and asking what opportunities they have going. This method will work well for smaller-scale projects, or startups, however, you should be aware that the majority of open source projects will not pay for your work and that it's done on a voluntary basis.
219 |Alternatively, for larger-scale projects, you can simply start coding and forking your own version of the software. You should be wary though that if lots of people are working on the same project as you, that your hard work may not be included in the final release of the product, so brace yourself for rejection.
220 |If you're looking for inspiration on a project to start working on, there's always lots of interesting projects to work on, especially if you look on sites like GitHub, SourceForge, and Google Code.
221 |Before you begin actually working on the project, you should familiarize yourself with how the project is being run and and how its management is structured so you know who to go to if you require assistance with something. Also, it's a good idea to check you know exactly what you're doing before you begin, as you either don't want to mess things up, or waste your time working on a feature that someone else is already working on, for example.
222 |When you've made the changes you want or implemented the feature you had in mind, you commit your changes to the main project and send them to the maintainers of the project for review.
225 |This may be done using GitHub or on a platform like SourceForge. Your changes will usually receive a yes or a no from the organization or the team in charge of the project, indicating whether or not your changes are going to be included in the project. If they are, then it's time for the distribution stage. If not, then it's back to the contribution stage.
226 |Possibly the most complex stage of all is the distribution of an open source project. Here, the final version is committed to the repository where the project has been hosted and live versions for non-developers are updated. At this point, the organization and developers say good bye to their hard work and hand it over to the public for general use, and of course, critique.
228 | 229 | 230 |If you are involved in the tech industry (or just getting started) you may have heard the term "open source" at least once. Open source projects are everywhere, on the web, on your computer, on your phone, etc. You use technology that is open source everyday, pretty amazing ¿isn´t it?
214 |I strongly recommend you to read this Gitbook online, it´s the best option that actually keeps the design and fonts intact...just saying.
215 |Because it´s important. I want to encourage you to collaborate with other developers the right way, I also want to share my personal experience, I´ve been collaborating writing code since 2011 and met awesome people from all places around the world in the process, think about it, that´s something great that wasn´t possible to do years ago.
217 |I´m about to give you and introduction to the very fundamentals of what open source is and what is not, everything you are about to read is my personal opinion, so if you disagree with what I´m saying at some point it´s a valid thing to happen, but keep in mind that what I wrote is based on my experience with the open source world.
218 |You can learn from other people's code to write better code yourself. Seeing an open source project you've worked on with other developers come together is one of the most rewarding feelings I've experienced as a developer, especially if it´s a big one with a lot of stars and forks on GitHub.
220 |Show what you´ve built instead of talking about it. Because code wins arguments ¿right?, your contributions to open source communities are amazingly attractive for employers, forget about writing a resume of how awesome you are and share links, repos, photos instead, to show the things you´ve worked on.
221 |There is a lot of confusion about what exactly licensing means. When you license your work, you’re not giving away any of your rights. You still hold the original copyright (or patent if you have one) on that work. By releasing into the public domain, you relinquish any copyright, and no one is obligated to list you as the original author or contributor. In the latter case, you may end up spending more time dealing with individual permissions than designing or developing.
217 |Open-source licenses make it easy for others to contribute to a project without having to seek special permission. It also protects you as the original creator, making sure you at least get some credit for your contributions. It also helps to prevent others from claiming your work as their own.
218 |Making your code available as open source involves much more than just indicating on the project web page that the code is licensed under a particular open source licence. Not only do you need to provide a way for people to download and/or contribute to the project, but you also need to choose the most appropriate licence and address other legal requirements. One of the most important of these is that you must be able to prove that the code can legally be released under that licence; another is that people who download it must be told what their responsibilities are to the project owner.
219 |The license defines the responsibilities placed on third parties wishing to modify and/or reuse open source software within their own products, so choosing the right licence is key to ensuring that the project owner is able to sustain the project in whichever way they choose. The first thing we recommend is to use only licences that have been approved by the Open Source Initiative (OSI). There are many good reasons for this, but perhaps the most convincing is that sticking with an OSI licence makes it much more likely that potential users and contributors will understand your licence terms already. Using an obscure licence or writing your own will negate this advantage.
221 |There are a lot of licenses available out there, here is a list so you can check them out, to see which one is the best for your project here is a really helpful tool, choosealicense.com.
222 |Once you have chosen the licence you wish to use and confirmed that you are legally entitled to license all the code in your project, you must apply the licence so that people can see it. It is not sufficient to simply state that your code is available under a specified licence; you also need to ensure that it is prominently displayed in all appropriate locations. At a minimum you must:
225 |
216 | There are a lot of open source projects out there. Here is a list of some very popular examples, most of them are hosted on GitHub, that´s because it´s a great platform for collaboration.
And a lot more, this list is just to show you that all this great software we use today was possible because of people´s collaboration.
251 | 252 | 253 |