├── 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 | ![Open Source](http://i.imgur.com/2NoGMea.jpg "Open Source logo") 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 | ![Contributions](http://i.imgur.com/slqw9O0.jpg "GitHub contributions") 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 | ¿What is Open Source? | Introduction 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 |
36 |
37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 |

86 | 87 | Introduction 88 |

89 |
90 | 91 | 92 | 93 |
94 | 97 | 181 |
182 | 183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 |
207 |
208 | 209 |
210 | 211 |
212 | 213 |

¿What is Open Source?

214 |

People

215 |

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 |

¿What is open source software?

218 |

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 |
224 | 225 |
226 |
227 |
228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 |
236 |
237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 256 | 257 | 258 | 259 | 260 | 261 | -------------------------------------------------------------------------------- /_book/chapter_2/article.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Open Source Software != Free Software | Introduction 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 |
36 |
37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 |

86 | 87 | Introduction 88 |

89 |
90 | 91 | 92 | 93 |
94 | 97 | 181 |
182 | 183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 |
207 |
208 | 209 |
210 | 211 |
212 | 213 |

Open Source Software != Free Software

214 |

Open Source and Free Software

215 |

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

217 |

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 |

Free Software

219 |

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 |
    222 |
  1. The freedom to run the program, for any purpose.
  2. 223 |
  3. The freedom to study how the program works, and change it.
  4. 224 |
  5. The freedom to redistribute copies so you can help your neighbor.
  6. 225 |
  7. The freedom to distribute copies of your modified versions to others.
  8. 226 |
227 |

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 |
232 | 233 |
234 |
235 |
236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 |
244 |
245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 264 | 265 | 266 | 267 | 268 | 269 | -------------------------------------------------------------------------------- /_book/cover.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegowifi/open-source-fundamentals/eac83c2845da57cf8e4dc0dafedee5cdbbc706e7/_book/cover.jpg -------------------------------------------------------------------------------- /_book/cover_small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegowifi/open-source-fundamentals/eac83c2845da57cf8e4dc0dafedee5cdbbc706e7/_book/cover_small.jpg -------------------------------------------------------------------------------- /_book/final_toughts/README.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Final thoughts | Introduction 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 |
34 |
35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 |

84 | 85 | Introduction 86 |

87 |
88 | 89 | 90 | 91 |
92 | 95 | 179 |
180 | 181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 |
205 |
206 | 207 |
208 | 209 |
210 | 211 |

Final thoughts

212 |

Great

213 |

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 |
219 | 220 |
221 |
222 |
223 | 224 | 225 | 226 | 227 | 228 |
229 |
230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 249 | 250 | 251 | 252 | 253 | 254 | -------------------------------------------------------------------------------- /_book/get_involved/README.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Get involved | Introduction 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 |
36 |
37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 |

86 | 87 | Introduction 88 |

89 |
90 | 91 | 92 | 93 |
94 | 97 | 181 |
182 | 183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 |
207 |
208 | 209 |
210 | 211 |
212 | 213 |

Get involved

214 |

Ideas

215 |

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 |

1- Contributing

218 |

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 |

Batman

223 |

2- Committing

224 |

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 |

3- Distributing

227 |

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 |
231 | 232 |
233 |
234 |
235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 |
243 |
244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 263 | 264 | 265 | 266 | 267 | 268 | -------------------------------------------------------------------------------- /_book/gitbook/fonts/fontawesome/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegowifi/open-source-fundamentals/eac83c2845da57cf8e4dc0dafedee5cdbbc706e7/_book/gitbook/fonts/fontawesome/FontAwesome.otf -------------------------------------------------------------------------------- /_book/gitbook/fonts/fontawesome/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegowifi/open-source-fundamentals/eac83c2845da57cf8e4dc0dafedee5cdbbc706e7/_book/gitbook/fonts/fontawesome/fontawesome-webfont.eot -------------------------------------------------------------------------------- /_book/gitbook/fonts/fontawesome/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegowifi/open-source-fundamentals/eac83c2845da57cf8e4dc0dafedee5cdbbc706e7/_book/gitbook/fonts/fontawesome/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /_book/gitbook/fonts/fontawesome/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegowifi/open-source-fundamentals/eac83c2845da57cf8e4dc0dafedee5cdbbc706e7/_book/gitbook/fonts/fontawesome/fontawesome-webfont.woff -------------------------------------------------------------------------------- /_book/gitbook/fonts/merriweather/250.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegowifi/open-source-fundamentals/eac83c2845da57cf8e4dc0dafedee5cdbbc706e7/_book/gitbook/fonts/merriweather/250.woff -------------------------------------------------------------------------------- /_book/gitbook/fonts/merriweather/250i.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegowifi/open-source-fundamentals/eac83c2845da57cf8e4dc0dafedee5cdbbc706e7/_book/gitbook/fonts/merriweather/250i.woff -------------------------------------------------------------------------------- /_book/gitbook/fonts/merriweather/400.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegowifi/open-source-fundamentals/eac83c2845da57cf8e4dc0dafedee5cdbbc706e7/_book/gitbook/fonts/merriweather/400.woff -------------------------------------------------------------------------------- /_book/gitbook/fonts/merriweather/400i.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegowifi/open-source-fundamentals/eac83c2845da57cf8e4dc0dafedee5cdbbc706e7/_book/gitbook/fonts/merriweather/400i.woff -------------------------------------------------------------------------------- /_book/gitbook/fonts/merriweather/700.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegowifi/open-source-fundamentals/eac83c2845da57cf8e4dc0dafedee5cdbbc706e7/_book/gitbook/fonts/merriweather/700.woff -------------------------------------------------------------------------------- /_book/gitbook/fonts/merriweather/700i.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegowifi/open-source-fundamentals/eac83c2845da57cf8e4dc0dafedee5cdbbc706e7/_book/gitbook/fonts/merriweather/700i.woff -------------------------------------------------------------------------------- /_book/gitbook/fonts/merriweather/900.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegowifi/open-source-fundamentals/eac83c2845da57cf8e4dc0dafedee5cdbbc706e7/_book/gitbook/fonts/merriweather/900.woff -------------------------------------------------------------------------------- /_book/gitbook/fonts/merriweather/900i.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegowifi/open-source-fundamentals/eac83c2845da57cf8e4dc0dafedee5cdbbc706e7/_book/gitbook/fonts/merriweather/900i.woff -------------------------------------------------------------------------------- /_book/gitbook/fonts/opensans/300.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegowifi/open-source-fundamentals/eac83c2845da57cf8e4dc0dafedee5cdbbc706e7/_book/gitbook/fonts/opensans/300.woff -------------------------------------------------------------------------------- /_book/gitbook/fonts/opensans/300i.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegowifi/open-source-fundamentals/eac83c2845da57cf8e4dc0dafedee5cdbbc706e7/_book/gitbook/fonts/opensans/300i.woff -------------------------------------------------------------------------------- /_book/gitbook/fonts/opensans/400.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegowifi/open-source-fundamentals/eac83c2845da57cf8e4dc0dafedee5cdbbc706e7/_book/gitbook/fonts/opensans/400.woff -------------------------------------------------------------------------------- /_book/gitbook/fonts/opensans/400i.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegowifi/open-source-fundamentals/eac83c2845da57cf8e4dc0dafedee5cdbbc706e7/_book/gitbook/fonts/opensans/400i.woff -------------------------------------------------------------------------------- /_book/gitbook/fonts/opensans/600.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegowifi/open-source-fundamentals/eac83c2845da57cf8e4dc0dafedee5cdbbc706e7/_book/gitbook/fonts/opensans/600.woff -------------------------------------------------------------------------------- /_book/gitbook/fonts/opensans/600i.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegowifi/open-source-fundamentals/eac83c2845da57cf8e4dc0dafedee5cdbbc706e7/_book/gitbook/fonts/opensans/600i.woff -------------------------------------------------------------------------------- /_book/gitbook/fonts/opensans/700.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegowifi/open-source-fundamentals/eac83c2845da57cf8e4dc0dafedee5cdbbc706e7/_book/gitbook/fonts/opensans/700.woff -------------------------------------------------------------------------------- /_book/gitbook/fonts/opensans/700i.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegowifi/open-source-fundamentals/eac83c2845da57cf8e4dc0dafedee5cdbbc706e7/_book/gitbook/fonts/opensans/700i.woff -------------------------------------------------------------------------------- /_book/gitbook/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegowifi/open-source-fundamentals/eac83c2845da57cf8e4dc0dafedee5cdbbc706e7/_book/gitbook/images/favicon.ico -------------------------------------------------------------------------------- /_book/gitbook/jsrepl/engines/javascript-default.js: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Copyright Joyent, Inc. and other Node contributors. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a 6 | copy of this software and associated documentation files (the 7 | "Software"), to deal in the Software without restriction, including 8 | without limitation the rights to use, copy, modify, merge, publish, 9 | distribute, sublicense, and/or sell copies of the Software, and to permit 10 | persons to whom the Software is furnished to do so, subject to the 11 | following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included 14 | in all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 17 | OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN 19 | NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 20 | DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 21 | OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE 22 | USE OR OTHER DEALINGS IN THE SOFTWARE. 23 | 24 | Original at: https://github.com/joyent/node/blob/master/lib/util.js 25 | */ 26 | (function(){function o(c){return c instanceof Array||Array.isArray(c)||c&&c!==Object.prototype&&o(c.__proto__)}function p(c){return c instanceof RegExp||typeof c==="function"&&c.constructor.name==="RegExp"&&c.compile&&c.test&&c.exec&&(""+c).match(/^\/.*\/[gim]{0,3}$/)}var q=80,l=function(c,h,b,f){function m(a,c){switch(typeof a){case "undefined":return d("undefined","undefined");case "string":var b="'"+JSON.stringify(a).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return d(b,"string"); 27 | case "number":return d(""+a,"number");case "boolean":return d(""+a,"boolean")}if(a===null)return d("null","null");var f=Object.keys(a),i=h?Object.getOwnPropertyNames(a):f;if(typeof a==="function"&&i.length===0)return p(a)?d(""+a,"regexp"):d("[Function"+(a.name?": "+a.name:"")+"]","special");if(a instanceof Date&&i.length===0)return d(a.toUTCString(),"date");var j,l;o(a)?(l="Array",b=["[","]"]):(l="Object",b=["{","}"]);typeof a==="function"?(j=a.name?": "+a.name:"",j=p(a)?" "+a:" [Function"+j+"]"): 28 | j="";a instanceof Date&&(j=" "+a.toUTCString());if(i.length===0)return b[0]+j+b[1];if(c<0)return p(a)?d(""+a,"regexp"):d("[Object]","special");k.push(a);i=i.map(function(b){var e,g;a.__lookupGetter__&&(a.__lookupGetter__(b)?g=a.__lookupSetter__(b)?d("[Getter/Setter]","special"):d("[Getter]","special"):a.__lookupSetter__(b)&&(g=d("[Setter]","special")));f.indexOf(b)<0&&(e="["+b+"]");g||(k.indexOf(a[b])<0?(g=c===null?m(a[b]):m(a[b],c-1),g.indexOf("\n")>-1&&(g=o(a)?g.split("\n").map(function(a){return" "+ 29 | a}).join("\n").substr(2):"\n"+g.split("\n").map(function(a){return" "+a}).join("\n"))):g=d("[Circular]","special"));if(typeof e==="undefined"){if(l==="Array"&&b.match(/^\d+$/))return g;e=JSON.stringify(""+b);e.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(e=e.substr(1,e.length-2),e=d(e,"name")):(e=e.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),e=d(e,"string"))}return e+": "+g});k.pop();var n=0;return i=i.reduce(function(a,b){n++;b.indexOf("\n")>=0&&n++;return a+b.length+1},0)>q?b[0]+ 30 | (j===""?"":j+"\n ")+" "+i.join(",\n ")+" "+b[1]:b[0]+j+" "+i.join(", ")+" "+b[1]}var k=[],d=function(a,b){var c={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},d={special:"cyan",number:"blue","boolean":"yellow",undefined:"grey","null":"bold",string:"green",date:"magenta",regexp:"red"}[b];return d?"\u001b["+c[d][0]+"m"+a+"\u001b["+c[d][1]+"m":a};f||(d=function(a){return a}); 31 | return m(c,typeof b==="undefined"?2:b)},r=/%[sdj%]/g,s=function(c){if(typeof c!=="string"){for(var h=[],b=0;b=m)return c;switch(c){case "%s":return String(f[b++]);case "%d":return Number(f[b++]);case "%j":return JSON.stringify(f[b++]);case "%%":return"%";default:return c}}),k=f[b];b-1?g.push(f.splice(b,1)):g.push(void 0)):g.push(this.listeners[b]=[]));return g};h.prototype.fire=function(a,c){var b,f,d,e,c=this.makeArray(c); 6 | f=this.listeners[a];if(f!=null){c.push(a);var g;g=[];for(d=0,e=f.length;d 2 | 3 | 4 | jsREPL Sandbox 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /_book/gitbook/jsrepl/sandbox.js: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, 4 | All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions 8 | are met: 9 | 10 | 1. Redistributions of source code must retain the above copyright 11 | notice, this list of conditions and the following disclaimer. 12 | 13 | 2. Redistributions in binary form must reproduce the above copyright 14 | notice, this list of conditions and the following disclaimer in the 15 | documentation and/or other materials provided with the distribution. 16 | 17 | 3. The names of its contributors may not be used to endorse or promote 18 | products derived from this software without specific prior written 19 | permission. 20 | 21 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 24 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 25 | CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 26 | EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 27 | PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 28 | PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 29 | LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 30 | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 31 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32 | 33 | Any feedback is very welcome. 34 | http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html 35 | email: m-mat @ math.sci.hiroshima-u.ac.jp (remove space) 36 | */ 37 | (function(c){try{c.window=c.window||c}catch(b){}try{c.self=c.self||c}catch(e){}var a;c.addEventListener("message",function(d){for(var d=JSON.parse(d.data),b=a,c=d.type.split("."),e=0;ethis.OUT_EVERY_MS&&(clearTimeout(this.outTimeout),this.flush())},flush:function(){if(this.output_buffer.length)this.post({type:"output",data:this.output_buffer.join("")}),this.outTimeout=0,this.output_buffer=[]},err:function(a){a={type:"error", 41 | data:a.toString()};this.flush();this.post(a)},input:function(a){this.input.write=a;this.flush();this.post({type:"input"})},result:function(a){a={type:"result",data:a};this.flush();this.post(a)},ready:function(){this.post({type:"ready"})},getNextLineIndent:function(a){this.post({type:"indent",data:this.engine.GetNextLineIndent(a)})},progress:function(a){this.post({type:"progress",data:a})},dbInput:function(){this.flush();this.post({type:"db_input"})},serverInput:function(){this.flush();this.post({type:"server_input"})}, 42 | bindAll:function(a){for(var b in a)(function(b){var c=a[b];typeof c=="function"&&(a[b]=function(){var b=[].slice.call(arguments);return c.apply(a,b)})})(b)},hide:function(a){try{Object.defineProperty(c,a,{writable:false,enumerable:false,configurable:false,value:c[a]})}catch(b){}},set_input_server:function(a){this.input_server={url:(a.url||"/emscripten/input/")+a.input_id,cors:a.cors||false}}};a.bindAll(a);c.Sandboss=a;a.hide("Sandboss");if(self.openDatabaseSync){var f=self.openDatabaseSync("replit_input", 43 | "1.0","Emscripted input",1024);self.prompt=function(){a.dbInput();var b=null;f.transaction(function(a){b=a});for(var c;!(c=b.executeSql("SELECT * FROM input").rows).length;)for(c=0;c<1E8;c++);b.executeSql("DELETE FROM input");return c.item(0).text};a.hide("prompt")}else if(!a.isFrame)self.prompt=function(){a.serverInput();var b;b=a.input_server.url;var c=new XMLHttpRequest;if(a.input_server.cors)if("withCredentials"in c)c.open("GET",b,false);else if(typeof XDomainRequest!="undefined")c=new XDomainRequest, 44 | c.open("GET",b);else throw Error("Your browser doesn' support CORS");else c.open("GET",b,false);b=c;b.send(null);return b.status===200?b.responseText:"ERROR: ON NON-WEBKIT BROWSERS CONNECTION TO THE SERVER IS NEEDED FOR INPUT"}})(this); 45 | (function(){var c=function(b){b==void 0&&(b=Date.now());this.N=624;this.M=397;this.MATRIX_A=2567483615;this.UPPER_MASK=2147483648;this.LOWER_MASK=2147483647;this.mt=Array(this.N);this.mti=this.N+1;this.init_genrand(b)};c.prototype.init_genrand=function(b){this.mt[0]=b>>>0;for(this.mti=1;this.mti>>30,this.mt[this.mti]=(((b&4294901760)>>>16)*1812433253<<16)+(b&65535)*1812433253+this.mti,this.mt[this.mti]>>>=0};c.prototype.init_by_array=function(b, 46 | c){var a,f,d;this.init_genrand(19650218);a=1;f=0;for(d=this.N>c?this.N:c;d;d--){var h=this.mt[a-1]^this.mt[a-1]>>>30;this.mt[a]=(this.mt[a]^(((h&4294901760)>>>16)*1664525<<16)+(h&65535)*1664525)+b[f]+f;this.mt[a]>>>=0;a++;f++;a>=this.N&&(this.mt[0]=this.mt[this.N-1],a=1);f>=c&&(f=0)}for(d=this.N-1;d;d--)h=this.mt[a-1]^this.mt[a-1]>>>30,this.mt[a]=(this.mt[a]^(((h&4294901760)>>>16)*1566083941<<16)+(h&65535)*1566083941)-a,this.mt[a]>>>=0,a++,a>=this.N&&(this.mt[0]=this.mt[this.N-1],a=1);this.mt[0]= 47 | 2147483648};c.prototype.genrand_int32=function(){var b,c=[0,this.MATRIX_A];if(this.mti>=this.N){var a;this.mti==this.N+1&&this.init_genrand(5489);for(a=0;a>>1^c[b&1];for(;a>>1^c[b&1];b=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK;this.mt[this.N-1]=this.mt[this.M-1]^ 48 | b>>>1^c[b&1];this.mti=0}b=this.mt[this.mti++];b^=b>>>11;b^=b<<7&2636928640;b^=b<<15&4022730752;b^=b>>>18;return b>>>0};c.prototype.genrand_int31=function(){return this.genrand_int32()>>>1};c.prototype.genrand_real1=function(){return this.genrand_int32()*(1/4294967295)};c.prototype.random=function(){return this.genrand_int32()*(1/4294967296)};c.prototype.genrand_real3=function(){return(this.genrand_int32()+0.5)*(1/4294967296)};c.prototype.genrand_res53=function(){var b=this.genrand_int32()>>>5,c=this.genrand_int32()>>> 49 | 6;return(b*67108864+c)*1.1102230246251565E-16};(function(){Math._random=Math.random;var b=new c(42);Math.random=function(){return b.random()};Math.seed=function(e){b=new c(e)}})()})();if(!Date.now)Date.now=function(){return+new Date};if(!Object.keys)Object.keys=function(c){if(c!==Object(c))throw new TypeError("Object.keys called on non-object");var b=[],e;for(e in c)Object.prototype.hasOwnProperty.call(c,e)&&b.push(e);return b};if(!Object.getOwnPropertyNames)Object.getOwnPropertyNames=Object.keys; 50 | if(!Object.create)Object.create=function(c){function b(){}b.prototype=c;return new b};if(!Array.isArray)Array.isArray=function(c){return{}.toString.call(c)=="[object Array]"}; 51 | if(!Function.prototype.bind)Function.prototype.bind=function(c){if(typeof this!=="function")throw new TypeError("Function.prototype.bind - what is trying to be fBound is not callable");var b=Array.prototype.slice.call(arguments,1),e=this,a=function(){},f=function(){try{return e.apply(this instanceof a?this:c||window,b.concat(Array.prototype.slice.call(arguments)))}catch(d){return e.apply(c||window,b.concat(Array.prototype.slice.call(arguments)))}};a.prototype=this.prototype;f.prototype=new a;return f}; 52 | if(!Object.freeze)Object.freeze=function(c){return c.___frozen___=true};if(!Object.isFrozen)Object.isFrozen=function(c){return Boolean(c.___frozen___)}; 53 | -------------------------------------------------------------------------------- /_book/gitbook/plugins/gitbook-plugin-mathjax/plugin.js: -------------------------------------------------------------------------------- 1 | require(["gitbook"], function(gitbook) { 2 | MathJax.Hub.Config({ 3 | tex2jax: { 4 | inlineMath: [['$','$'], ['\\(','\\)']], 5 | processEscapes: true 6 | } 7 | }); 8 | 9 | 10 | gitbook.events.bind("page.change", function() { 11 | MathJax.Hub.Typeset() 12 | }); 13 | }); -------------------------------------------------------------------------------- /_book/gitbook/print.css: -------------------------------------------------------------------------------- 1 | .link-inherit{color:inherit}.link-inherit:hover,.link-inherit:focus{color:inherit}.hljs-comment,.hljs-title{color:#8e908c}.hljs-variable,.hljs-attribute,.hljs-tag,.hljs-regexp,.ruby .hljs-constant,.xml .hljs-tag .hljs-title,.xml .hljs-pi,.xml .hljs-doctype,.html .hljs-doctype,.css .hljs-id,.css .hljs-class,.css .hljs-pseudo{color:#c82829}.hljs-number,.hljs-preprocessor,.hljs-pragma,.hljs-built_in,.hljs-literal,.hljs-params,.hljs-constant{color:#f5871f}.ruby .hljs-class .hljs-title,.css .hljs-rules .hljs-attribute{color:#eab700}.hljs-string,.hljs-value,.hljs-inheritance,.hljs-header,.ruby .hljs-symbol,.xml .hljs-cdata{color:#718c00}.css .hljs-hexcolor{color:#3e999f}.hljs-function,.python .hljs-decorator,.python .hljs-title,.ruby .hljs-function .hljs-title,.ruby .hljs-title .hljs-keyword,.perl .hljs-sub,.javascript .hljs-title,.coffeescript .hljs-title{color:#4271ae}.hljs-keyword,.javascript .hljs-function{color:#8959a8}.hljs{display:block;background:white;color:#4d4d4c;padding:.5em}.coffeescript .javascript,.javascript .xml,.tex .hljs-formula,.xml .javascript,.xml .vbscript,.xml .css,.xml .hljs-cdata{opacity:.5}.book-chapter{display:none}article{page-break-after:always}pre,blockquote{border:1px solid #999;page-break-inside:avoid;background:#f1f1f1;padding:8px}img{max-width:100%!important;page-break-inside:avoid;margin:0 auto}.exercise,.quiz{margin:1cm 0;padding:.4cm;page-break-inside:avoid;border:3px solid #ddd}.exercise .exercise-header,.quiz .exercise-header{margin-bottom:.4cm;padding-bottom:.2cm;border-bottom:1px solid #ddd}.exercise .question,.quiz .question{margin-top:.4cm} -------------------------------------------------------------------------------- /_book/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Introduction | Introduction 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 |
34 |
35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 |

84 | 85 | Introduction 86 |

87 |
88 | 89 | 90 | 91 |
92 | 95 | 179 |
180 | 181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 |
205 |
206 | 207 |
208 | 209 |
210 | 211 |

Introduction

212 |

Open Source

213 |

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 |

Why I´m writing this

216 |

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 |

The benefits of writing code "for free"

219 |

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 |

Contributions

222 | 223 | 224 |
225 | 226 |
227 |
228 |
229 | 230 | 231 | 232 | 233 | 234 |
235 |
236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 255 | 256 | 257 | 258 | 259 | 260 | -------------------------------------------------------------------------------- /_book/licensing/README.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Licensing | Introduction 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 |
36 |
37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 |

86 | 87 | Introduction 88 |

89 |
90 | 91 | 92 | 93 |
94 | 97 | 181 |
182 | 183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 |
207 |
208 | 209 |
210 | 211 |
212 | 213 |

Licensing

214 |

Imgur

215 |

What is licensing?

216 |

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 |

Choosing a License

220 |

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 |

Reading

223 |

Applying the license

224 |

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 |
    226 |
  • State on your website which licence is applied (preferably on your home page and your downloads page)
  • 227 |
228 |
    229 |
  • Provide the full text of the licence on your website
  • 230 |
231 |
    232 |
  • Provide the full text of the licence in the root directory of your source project (usually in a file called LICENSE.TXT)
  • 233 |
234 |
    235 |
  • Provide a boilerplate notice in the head of each file in the source distribution (The boilerplate text used varies from licence to licence. You will usually find further discussion on how to apply a licence documented alongside the licence in its original home.)
  • 236 |
237 |
    238 |
  • Provide the full text of the licence in the root directory of your non-source project distributions (usually in a file called LICENSE.TXT).
  • 239 |
240 | 241 | 242 |
243 | 244 |
245 |
246 |
247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 |
255 |
256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 275 | 276 | 277 | 278 | 279 | 280 | -------------------------------------------------------------------------------- /_book/manifest.appcache: -------------------------------------------------------------------------------- 1 | CACHE MANIFEST 2 | # Revision 1406353090534 3 | 4 | CACHE: 5 | chapter_2/README.html 6 | chapter_2/article.html 7 | final_toughts/README.html 8 | index.html 9 | get_involved/README.html 10 | licensing/README.html 11 | success_stories/README.html 12 | gitbook\app.js 13 | gitbook\fonts\fontawesome\FontAwesome.otf 14 | gitbook\fonts\fontawesome\fontawesome-webfont.eot 15 | gitbook\fonts\fontawesome\fontawesome-webfont.svg 16 | gitbook\fonts\fontawesome\fontawesome-webfont.ttf 17 | gitbook\fonts\fontawesome\fontawesome-webfont.woff 18 | gitbook\fonts\merriweather\250.woff 19 | gitbook\fonts\merriweather\250i.woff 20 | gitbook\fonts\merriweather\400.woff 21 | gitbook\fonts\merriweather\400i.woff 22 | gitbook\fonts\merriweather\700.woff 23 | gitbook\fonts\merriweather\700i.woff 24 | gitbook\fonts\merriweather\900.woff 25 | gitbook\fonts\merriweather\900i.woff 26 | gitbook\fonts\opensans\300.woff 27 | gitbook\fonts\opensans\300i.woff 28 | gitbook\fonts\opensans\400.woff 29 | gitbook\fonts\opensans\400i.woff 30 | gitbook\fonts\opensans\600.woff 31 | gitbook\fonts\opensans\600i.woff 32 | gitbook\fonts\opensans\700.woff 33 | gitbook\fonts\opensans\700i.woff 34 | gitbook\images\favicon.ico 35 | gitbook\jsrepl\engines\javascript-default.js 36 | gitbook\jsrepl\jsrepl.js 37 | gitbook\jsrepl\langs\javascript\jsrepl_js.js 38 | gitbook\jsrepl\sandbox.html 39 | gitbook\jsrepl\sandbox.js 40 | gitbook\print.css 41 | gitbook\style.css 42 | gitbook\plugins\gitbook-plugin-mathjax\plugin.js 43 | 44 | NETWORK: 45 | * -------------------------------------------------------------------------------- /_book/success_stories/README.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Success Stories | Introduction 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 |
36 |
37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 |

86 | 87 | Introduction 88 |

89 |
90 | 91 | 92 | 93 |
94 | 97 | 181 |
182 | 183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 |
207 |
208 | 209 |
210 | 211 |
212 | 213 |

Success Stories

214 |

I made it

215 |


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.

217 |
    218 |
  • Bootstrap is a sleek, intuitive, and powerful front-end framework for faster and easier web development.
  • 219 |
220 |
    221 |
  • Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design.
  • 222 |
223 |
    224 |
  • Filezilla is a free, open source FTP, FTPS and SFTP client.
  • 225 |
226 |
    227 |
  • jQuery is a fast, small, and feature-rich JavaScript library.
  • 228 |
229 |
    230 |
  • Linux is a famous computer operating system assembled under the model of free and open source software development and distribution.
  • 231 |
232 |
    233 |
  • Less is the dynamic stylesheet language.
  • 234 |
235 |
    236 |
  • OwnCloud gives you freedom and control over your own data. A personal cloud which runs on your own server.
  • 237 |
238 |
    239 |
  • PHP is the most popular web programming language on the web, powering Facebook and more than 80% of the web.
  • 240 |
241 |
    242 |
  • Ruby on Rails is a web-application framework that includes everything needed to create database-backed web applications.
  • 243 |
244 | 247 |
    248 |
  • WordPress is one of the most popular content management system on the web, is used by millions of people.
  • 249 |
250 |

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 |
254 | 255 |
256 |
257 |
258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 |
266 |
267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 286 | 287 | 288 | 289 | 290 | 291 | -------------------------------------------------------------------------------- /cover.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegowifi/open-source-fundamentals/eac83c2845da57cf8e4dc0dafedee5cdbbc706e7/cover.jpg -------------------------------------------------------------------------------- /cover_small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diegowifi/open-source-fundamentals/eac83c2845da57cf8e4dc0dafedee5cdbbc706e7/cover_small.jpg -------------------------------------------------------------------------------- /final_toughts/README.md: -------------------------------------------------------------------------------- 1 | # Final thoughts 2 | 3 | ![Great](http://i.imgur.com/6XSNnoA.jpg?2 "Oh yeah") 4 | 5 | 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 20 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 fundamentals about open source, spot some typos, or notice something’s wrong please let me know and/or contribute with the [repository](https://github.com/diegowifi/open-source-fundamentals) on GitHub, pull requests are welcome. 6 | 7 | If you liked what I wrote, learned something new and/or want to tell me what you think feel free to send me a [tweet](http://www.twitter.com/Diego_WiFi). By the way, all donations are very welcome, this motivates me to write more Gitbooks with more cool content, and of course, **free** for you all. 8 | 9 | Have fun with your code, thank you. 10 | -------------------------------------------------------------------------------- /get_involved/README.md: -------------------------------------------------------------------------------- 1 | # Get involved 2 | 3 | ![Ideas](http://i.imgur.com/KLnANGW.jpg "Ideas matter") 4 | 5 | An important thing to do is to know how [Git](http://git-scm.com/), a version control system, works in order to contribute with people (in most cases), and get a [GitHub](https://github.com/) account . Ok, but 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... so yeah. 6 | 7 | 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. 8 | 9 | ### **1- Contributing** 10 | 11 | You could begin by contacting the organization behind the software itself and asking what opportunities they have going. This 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. Hey, not everything is about money you know. 12 | 13 | But, 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. 14 | 15 | 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, stay curious. 16 | 17 | Before you begin actually working on the project, you should familiarize yourself with how the project is being run 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. 18 | 19 | ![Batman](http://i.imgur.com/55qobWz.jpg "Batman knows best") 20 | 21 | ### **2- Committing** 22 | 23 | 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. 24 | 25 | 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. 26 | 27 | ### **3- Distributing** 28 | 29 | 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. 30 | -------------------------------------------------------------------------------- /licensing/README.md: -------------------------------------------------------------------------------- 1 | # Licensing 2 | 3 | ![I agree](http://i.imgur.com/jf133hu.jpg "I agree") 4 | 5 | ### What is licensing? 6 | 7 | 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. 8 | 9 | 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. 10 | 11 | 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 license. 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 license and address other legal requirements. 12 | 13 | ### Choosing a license 14 | 15 | 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 license is key to ensuring that the project owner is able to sustain the project in whichever way they choose. The first thing I recommend is to use only licences that have been approved by the [Open Source Initiative](http://opensource.org/) (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 license terms already. 16 | 17 | There are a lot of [licenses available](http://opensource.org/licenses/alphabetical) out there, check them out to see which one is the best for your project, or you can use [choosealicense.com](http://choosealicense.com) to do it easily. 18 | 19 | ![Reading](http://i.imgur.com/mNZzURP.jpg?1 "WTF") 20 | 21 | ### Applying the license 22 | 23 | Once you have chosen the license you wish to use and confirmed that you are legally entitled to license all the code in your project, you must apply the license so that people can see it. It is not sufficient to simply state that your code is available under a specified license; you also need to ensure that it is prominently displayed in all appropriate locations. At a minimum you must: 24 | 25 | * State on your website which licence is applied (preferably on your home page and your downloads page) 26 | 27 | 28 | * Provide the full text of the license on your website 29 | 30 | 31 | * Provide the full text of the license in the root directory of your source project (usually in a file called LICENSE.TXT) 32 | 33 | 34 | * Provide a boilerplate notice in the head of each file in the source distribution (The boilerplate text used varies from license to license. You will usually find further discussion on how to apply a license documented alongside the licence in its original home.) 35 | 36 | 37 | * Provide the full text of the license in the root directory of your non-source project distributions (usually in a file called LICENSE.TXT). 38 | 39 | -------------------------------------------------------------------------------- /open_source/README.md: -------------------------------------------------------------------------------- 1 | # What is open source? 2 | 3 | ![People](http://i.imgur.com/nUBwIG3.png "People sharing") 4 | 5 | Well, it all started in the 90’s by software communities, “*open source*” means you can modify something because its design is publicly accessible. 6 | 7 | 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](https://opensource.com/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. 8 | 9 | ### What is open source software? 10 | 11 | Simple, open source software is software whose source code is available for modification or enhancement by **anyone**. 12 | 13 | “*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. 14 | 15 | 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. 16 | -------------------------------------------------------------------------------- /open_source/article.md: -------------------------------------------------------------------------------- 1 | # Open source software != Free software 2 | 3 | ![Open Source and Free Software](http://i.imgur.com/e8F8qAK.jpg "Tim Oreilly and Richard Stallman") 4 | 5 | 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. 6 | 7 | ###Open source 8 | 9 | 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. 10 | 11 | ###Free software 12 | 13 | The [**GPL**](http://www.gnu.org/copyleft/gpl.html) (*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”, I know, though purists will be quick to mention the proper term is “**GNU/Linux**”. 14 | 15 | 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**](http://www.fsf.org/) likes to call the “Four Freedoms”: 16 | 17 | 0. The freedom to run the program, for any purpose. 18 | 1. The freedom to study how the program works, and change it. 19 | 2. The freedom to redistribute copies so you can help your neighbor. 20 | 3. The freedom to distribute copies of your modified versions to others. 21 | 22 | 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**. 23 | 24 | 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. Actually, 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*”. 25 | -------------------------------------------------------------------------------- /resources/README.md: -------------------------------------------------------------------------------- 1 | # Resources 2 | 3 | ![Resources to get started](http://i.imgur.com/agR5gPJ.png?1) 4 | 5 | ### How to get started with Open Source? 6 | If you would like to get involved in the Open Source Community, but you are not sure where and how to start, well, [Julie Pichon says how to make your very first contribution](https://ep2014.europython.eu/en/schedule/sessions/33/). Her main message is that **in Open Source everyone can help**. 7 | 8 | ### How does Open Source and money come together? 9 | Helping someone voluntarily is all glorious and noble but, you know, everyone needs to eat and pay bills. Take a look to [Schlomo Schapiro talking about Open Source business models](https://www.youtube.com/watch?v=1vC4uxn_Tw8). His core message is that **Open Source pays off**. 10 | -------------------------------------------------------------------------------- /success_stories/README.md: -------------------------------------------------------------------------------- 1 | # Success Stories 2 | 3 | ![I made it](http://i.imgur.com/obYNG8C.gif "I made it") 4 | 5 |
6 | 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. 7 | 8 | * [Bootstrap](https://github.com/twbs/bootstrap) is a sleek, intuitive, and powerful front-end framework for faster and easier web development. 9 | 10 | 11 | * [Django](https://github.com/django/django) is a high-level Python Web framework that encourages rapid development and clean, pragmatic design. 12 | 13 | 14 | * [Filezilla](https://github.com/basvodde/filezilla) is a free, open source FTP, FTPS and SFTP client. 15 | 16 | 17 | * [Gitbook](https://github.com/GitbookIO/gitbook) is a command line tool (and Node.js library) for building beautiful books and exercises using GitHub/Git and Markdown... and is the tool you and I are actually using. 18 | 19 | 20 | * [jQuery](https://github.com/jquery/jquery) is a fast, small, and feature-rich JavaScript library. 21 | 22 | 23 | * [Linux](https://github.com/torvalds/linux) is a famous computer operating system assembled under the model of free and open source software development and distribution. 24 | 25 | 26 | * [Less](https://github.com/less/less.js) is the dynamic stylesheet language. 27 | 28 | 29 | * [OwnCloud](https://github.com/owncloud/core) gives you freedom and control over your own data. A personal cloud which runs on your own server. 30 | 31 | 32 | * [PHP](https://github.com/php/php-src) is the most popular web programming language on the web, powering Facebook and more than 80% of the web. 33 | 34 | 35 | * [Ruby on Rails](https://github.com/rails/rails) is a web-application framework that includes everything needed to create database-backed web applications. 36 | 37 | 38 | * [The Android Open Source Project](https://source.android.com/) is the official mobile operating system as an open source project. 39 | 40 | 41 | * [WordPress](https://github.com/WordPress/WordPress) is one of the most popular content management system on the web, is used by millions of people. 42 | 43 | 44 | 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, so yeah, open source matter... a lot. 45 | --------------------------------------------------------------------------------