Have you noticed that the source code
for all of the libraries
we've discussed is openly available to the public?
Publicly available software is often known
as open-source software, or OSS.
Specifically, open-source software is software
whose creator release the source code
under an open-source license,
thereby granting anyone the right to access,
modify, and distribute the software.
The open source initiative,
OSI defines open-source software
as software that can be freely accessed,
used, changed, and shared in
modified or unmodified form by anyone.
You can find the full criteria for
open-source software on the OSI website.
The first three stipulations are the core of OSS.
That is, that the software is available without charge,
the source code is public and accessible,
and that this license whatever it is,
is to be adhered to by all derivative works.
Open-source development was pioneered by
computer scientist Eric Raymond in
his landmark 1997 essay,
"The Cathedral and the Bazaar".
It's well regarded as a software development technique,
as it lowers consumer cost
and increases code flexibility,
security, and accountability due
to its community source nature,
and there's good business sense to
using open-source software tool.
According to a 2008 study,
OSS saves consumers $60 billion annually,
and much open-source software allows companies to build
on top of it lowering infrastructure costs.
There are different types of open-source licenses.
The field can be a bit confusing to
understand especially for businesses.
For example, the Apache License allows the linking of
Apache License code with differently license code.
As a developer, you may find
such a license feature useful if you want to include
a closed-source library or
proprietary library in your open-source project.
On the other hand, under the GNU Public License,
or GPL, one can link only other GPL compatible libraries.
You may find this license feature desirable if
your Open Source project is composed
of entirely open-source code,
and you wish to ensure that this always be the case,
regardless of who in the future uses your code.
The GPL is probably the most well-known and
perhaps common open-source software license,
and part due to its viral nature,
which requires all link to software
to also be GPL licensed.
One of my favorite licenses to
use and a license I love to see
use and libraries that I use is called the BSD license.
It was originally put together by
the University of California,
Berkeley for the release of the BSD operating system.
Here's an example of the BSD license.
As we can see, it's very short and to the point,
maintains just a minimal amount of legalese.
The issues surrounding the features of
free and open-source licenses quickly
become political and philosophical.
The choice of license often
depends on the project that you have in mind.
If you're interested in understanding
open source licenses in more detail,
I would encourage you to check out
the Wikipedia article on the topic,
and we'll have that linked in the course.
For the rest of the lectures in this module,
we're going to use two projects the tesseract project,
which is now ran by Google and the Pytesseract bindings,
which allows us to use
the tesseract system from within Python.
If we look at the source code repository for tesseract,
we see that it's license is
released under the Apache License.
This means that we can use tesseract in any of the code
we produce and keep it licensed, however,
we want, even commercially licensed
for instance unless we change tesseract itself.
However, when we look at the Pytesseract license,
we see it is released under the GPL.
That means by importing this library into your own code.
If we share it with others,
we must also license our code under the GPL.
This is the viral clause,
and depending on the project I were working on,
I would have to consider this very carefully.
However, for this course that's no problem since
I really do want to share it with you and others broadly.
So, let's dig in,
and let's start using tesseract.