1 00:00:07,940 --> 00:00:10,530 Have you noticed that the source code 2 00:00:10,530 --> 00:00:11,849 for all of the libraries 3 00:00:11,849 --> 00:00:15,240 we've discussed is openly available to the public? 4 00:00:15,240 --> 00:00:18,090 Publicly available software is often known 5 00:00:18,090 --> 00:00:21,050 as open-source software, or OSS. 6 00:00:21,050 --> 00:00:24,050 Specifically, open-source software is software 7 00:00:24,050 --> 00:00:26,315 whose creator release the source code 8 00:00:26,315 --> 00:00:28,385 under an open-source license, 9 00:00:28,385 --> 00:00:31,165 thereby granting anyone the right to access, 10 00:00:31,165 --> 00:00:33,795 modify, and distribute the software. 11 00:00:33,795 --> 00:00:35,595 The open source initiative, 12 00:00:35,595 --> 00:00:38,090 OSI defines open-source software 13 00:00:38,090 --> 00:00:40,970 as software that can be freely accessed, 14 00:00:40,970 --> 00:00:43,580 used, changed, and shared in 15 00:00:43,580 --> 00:00:47,300 modified or unmodified form by anyone. 16 00:00:47,300 --> 00:00:49,730 You can find the full criteria for 17 00:00:49,730 --> 00:00:52,835 open-source software on the OSI website. 18 00:00:52,835 --> 00:00:57,260 The first three stipulations are the core of OSS. 19 00:00:57,260 --> 00:01:00,020 That is, that the software is available without charge, 20 00:01:00,020 --> 00:01:03,095 the source code is public and accessible, 21 00:01:03,095 --> 00:01:05,045 and that this license whatever it is, 22 00:01:05,045 --> 00:01:08,915 is to be adhered to by all derivative works. 23 00:01:08,915 --> 00:01:11,960 Open-source development was pioneered by 24 00:01:11,960 --> 00:01:14,060 computer scientist Eric Raymond in 25 00:01:14,060 --> 00:01:16,265 his landmark 1997 essay, 26 00:01:16,265 --> 00:01:18,190 "The Cathedral and the Bazaar". 27 00:01:18,190 --> 00:01:21,500 It's well regarded as a software development technique, 28 00:01:21,500 --> 00:01:23,150 as it lowers consumer cost 29 00:01:23,150 --> 00:01:25,310 and increases code flexibility, 30 00:01:25,310 --> 00:01:27,680 security, and accountability due 31 00:01:27,680 --> 00:01:29,945 to its community source nature, 32 00:01:29,945 --> 00:01:31,670 and there's good business sense to 33 00:01:31,670 --> 00:01:33,800 using open-source software tool. 34 00:01:33,800 --> 00:01:36,080 According to a 2008 study, 35 00:01:36,080 --> 00:01:39,785 OSS saves consumers $60 billion annually, 36 00:01:39,785 --> 00:01:42,965 and much open-source software allows companies to build 37 00:01:42,965 --> 00:01:46,740 on top of it lowering infrastructure costs. 38 00:01:46,740 --> 00:01:50,130 There are different types of open-source licenses. 39 00:01:50,130 --> 00:01:51,860 The field can be a bit confusing to 40 00:01:51,860 --> 00:01:54,200 understand especially for businesses. 41 00:01:54,200 --> 00:01:57,740 For example, the Apache License allows the linking of 42 00:01:57,740 --> 00:02:01,220 Apache License code with differently license code. 43 00:02:01,220 --> 00:02:03,065 As a developer, you may find 44 00:02:03,065 --> 00:02:05,810 such a license feature useful if you want to include 45 00:02:05,810 --> 00:02:07,550 a closed-source library or 46 00:02:07,550 --> 00:02:11,485 proprietary library in your open-source project. 47 00:02:11,485 --> 00:02:15,060 On the other hand, under the GNU Public License, 48 00:02:15,060 --> 00:02:20,600 or GPL, one can link only other GPL compatible libraries. 49 00:02:20,600 --> 00:02:23,330 You may find this license feature desirable if 50 00:02:23,330 --> 00:02:25,190 your Open Source project is composed 51 00:02:25,190 --> 00:02:27,320 of entirely open-source code, 52 00:02:27,320 --> 00:02:30,320 and you wish to ensure that this always be the case, 53 00:02:30,320 --> 00:02:33,770 regardless of who in the future uses your code. 54 00:02:33,770 --> 00:02:36,860 The GPL is probably the most well-known and 55 00:02:36,860 --> 00:02:39,945 perhaps common open-source software license, 56 00:02:39,945 --> 00:02:42,330 and part due to its viral nature, 57 00:02:42,330 --> 00:02:44,420 which requires all link to software 58 00:02:44,420 --> 00:02:47,000 to also be GPL licensed. 59 00:02:47,000 --> 00:02:49,190 One of my favorite licenses to 60 00:02:49,190 --> 00:02:51,080 use and a license I love to see 61 00:02:51,080 --> 00:02:55,100 use and libraries that I use is called the BSD license. 62 00:02:55,100 --> 00:02:56,630 It was originally put together by 63 00:02:56,630 --> 00:02:58,159 the University of California, 64 00:02:58,159 --> 00:03:01,580 Berkeley for the release of the BSD operating system. 65 00:03:01,580 --> 00:03:04,550 Here's an example of the BSD license. 66 00:03:04,550 --> 00:03:07,865 As we can see, it's very short and to the point, 67 00:03:07,865 --> 00:03:11,730 maintains just a minimal amount of legalese. 68 00:03:12,620 --> 00:03:15,430 The issues surrounding the features of 69 00:03:15,430 --> 00:03:17,650 free and open-source licenses quickly 70 00:03:17,650 --> 00:03:20,185 become political and philosophical. 71 00:03:20,185 --> 00:03:21,940 The choice of license often 72 00:03:21,940 --> 00:03:24,670 depends on the project that you have in mind. 73 00:03:24,670 --> 00:03:26,605 If you're interested in understanding 74 00:03:26,605 --> 00:03:28,680 open source licenses in more detail, 75 00:03:28,680 --> 00:03:30,280 I would encourage you to check out 76 00:03:30,280 --> 00:03:32,095 the Wikipedia article on the topic, 77 00:03:32,095 --> 00:03:34,460 and we'll have that linked in the course. 78 00:03:34,460 --> 00:03:37,280 For the rest of the lectures in this module, 79 00:03:37,280 --> 00:03:40,495 we're going to use two projects the tesseract project, 80 00:03:40,495 --> 00:03:44,050 which is now ran by Google and the Pytesseract bindings, 81 00:03:44,050 --> 00:03:45,310 which allows us to use 82 00:03:45,310 --> 00:03:48,460 the tesseract system from within Python. 83 00:03:48,460 --> 00:03:52,150 If we look at the source code repository for tesseract, 84 00:03:52,150 --> 00:03:53,680 we see that it's license is 85 00:03:53,680 --> 00:03:55,865 released under the Apache License. 86 00:03:55,865 --> 00:03:58,340 This means that we can use tesseract in any of the code 87 00:03:58,340 --> 00:04:00,680 we produce and keep it licensed, however, 88 00:04:00,680 --> 00:04:03,155 we want, even commercially licensed 89 00:04:03,155 --> 00:04:06,590 for instance unless we change tesseract itself. 90 00:04:06,590 --> 00:04:10,969 However, when we look at the Pytesseract license, 91 00:04:10,969 --> 00:04:13,625 we see it is released under the GPL. 92 00:04:13,625 --> 00:04:17,345 That means by importing this library into your own code. 93 00:04:17,345 --> 00:04:18,590 If we share it with others, 94 00:04:18,590 --> 00:04:21,950 we must also license our code under the GPL. 95 00:04:21,950 --> 00:04:23,810 This is the viral clause, 96 00:04:23,810 --> 00:04:26,195 and depending on the project I were working on, 97 00:04:26,195 --> 00:04:28,805 I would have to consider this very carefully. 98 00:04:28,805 --> 00:04:31,580 However, for this course that's no problem since 99 00:04:31,580 --> 00:04:34,495 I really do want to share it with you and others broadly. 100 00:04:34,495 --> 00:04:36,030 So, let's dig in, 101 00:04:36,030 --> 00:04:38,560 and let's start using tesseract.