2 Software
Learning Objectives
- To be familiar with different kinds of software and the purposes behind them
- To understand how OSS has affected these kinds of software
- To have a basis for building a functional OSS toolbox to use
Introduction
In software development, there is a job level called “full stack developer”. In theory, this is someone who understands and can work in the various levels of technology that build up our current software environment. There is some argument that the “full stack developer” is a myth because the software environment has gotten too complex to understand fully. There are so many different software languages to learn, and various software to link together.
The goal of this chapter is to help students understand the levels of technology and why they exist. Readers will develop a conversational understanding of the “stack” of software. If you’re talking to a patron and they have a problem with the website, you may pick up on the fact that the problem is their browser. When someone is talking about a new technology and they start going into details you’ll get at least an idea of what they’re talking about or what level of the stack of software they are discussing. Even if you are never a part of a software development project, you may find yourself troubleshooting a piece of software. The knowledge of how different levels of technology may help you in at least identifying the problem to tell IT support. Or, you are accidentally the IT support for the day and you must fix the problem yourself. If you get into a job and see a technology opportunity, such as a makerspace or a position of an integrated systems librarian, you’ll be better prepared to take advantage.
The content of this chapter will help you develop a top-level understanding of the technologies. The learning activities at the end will guide you toward getting the first taste of hands-on experience with the different levels.
Figure 1 shows the levels of technologies discussed in this chapter as a pyramid because they build on each other. The first section will talk about the foundation of the pyramid, and the last section will talk about the top.
Figure 1 Levels of Technology
Focus Questions
- How familiar are you with the software you interact with on a day to day basis? As you read through the chapter, think about the levels of software that build up to make even a simple application run.
- What kind of software do you feel most comfortable with? Which kind feels the most confusing to you?
- What comfortable steps could you take to make the software you are least comfortable with more familiar to you?
Section 1: Bottom of the Stack
Section Summary
This section reviews hardware, operating systems and programming languages–the bottom of the stack–which must be in place for any technology system to work.
Hardware
All software is run on some form of hardware. The hardware is the individual components of a computer. Hardware is called that to distinguish it from software, which are the programs that run on a computer.
The hardware of a computer usually has the same components that do jobs. There is the case, which gives the components something to attach to. The brains of the computer (motherboard and CPU), the power supply, the memory (RAM), and then additional attachments that do various tasks like the monitor that lets you see a graphical representation of the computer’s output. Computers can be built from individual pieces purchased separately or purchased as pre-made systems. They can be smaller or larger, but the point is they usually have all these parts in one form or another.
In the same way that software can be open, the designs for hardware can be open as well. Open-source hardware is an example of how a design can be open with the licensing that allows all kinds of editing and reuse, but the item itself still costs money to build or have. Open-source hardware is built on the same founding concepts of open-source software that the design is licensed so that the design can be studied, modified, and distributed [1].
In addition to being open, the design must be accessible. Most open-source hardware designs seek to use non-specialized equipment, easily attainable parts, and instructions that are easy to follow. The point here is that for designs to be truly open-source, they can’t just be available. They must be functional for most people. There are open-source designs for bikes [2], open-source 3D printing equipment [3], and full open-source computers.
More popular than full computers are individual open-source hardware parts. The most popular and well-known is the Arduino. The Arduino is a platform of both circuit board and software [4] that is a favorite of home hobbyists. Arduinos can be used to create things like garage door openers, talking clocks, thermostats, pollutant sensors, and a wide range of other projects [5].
The openness of the Arduino design means that multiple companies can make and sell Arduino devices so there are lots of different versions. Consumers get the benefit of this competition by having lots of options for various projects, and continuously developed hardware.
It might be impractical to use open-source computers in a library setting, but library makerspaces can make use of Arduinos and open-source 3D printing equipment and designs. Libraries can provide workshops and materials to not only show people how Arduinos can be used, but also talk about the concept of open-licensed hardware and software. This is just one way for libraries, with their focus on openness and freedom of information, to use their makerspaces to support open-source hardware development and community.
Operating System
The Operating System is the foundation of how software is run. It is the thing that connects the physical computer (hardware) and the program (software) so they work together. The operating system is a bit like the brainstem of the computer. In the same way that your brainstem controls the beating of your heart and the rate of your breathing, the operating systems control simple procedures like taking input from the keyboard or managing how data is treated.
A handful of operating systems dominate the computer landscape. Windows is the most popular operating system for desktop and laptop computers with 82.45% of the market[6]. Apple’s macOS (or Macs) are the next in line with 12.64% of the market. The most popular OSS Operating System is Linux, but it only holds 1.7% of devices worldwide. It is important to note the difference in scale here. Even though the number of devices that run Linux are low, it remains an influential operating system.
When we talk about Linux, we’re not talking about specific software. Instead, we are talking about something called a kernel. The kernel is the core of the system and how it works, but it’s more like a framework that other functionality can be built on. Lots of operating systems use the same kernel, and if that software is using the Linux kernel, it’s considered a Linux operating system, but it may have a different name. Red Hat Linux, Fedora, Mandrake Linux, Oracle Linux, and Ubuntu are all different Linux operating systems. With a proprietary Operating System like Windows, you only get the flavors of the software that the company wants you to have (Windows 7, Windows 10, Windows XP), but with OSS operating systems, there can be hundreds of different flavors for different purposes and people. Some Linux systems are better for desktop computers, and others are designed to be stable server software (more about that in Section 2).
There are free versions of Linux, but there are also paid versions since the license allows for it to be used in both non-commercial and commercial distributions.
In addition to the different flavors of Linux operating system, there are different distributions of the software. The Linux operating system is kind of useless by itself. It needs other software to make it more useful for the typical user [7]. Some common things to be included in a distribution, in addition to the Linux Kernel, are things like a desktop environment, an installer, an email client, web browser, or video and audio players.
For libraries, it is important to note that Linux environments are completely different than Windows environments and most IT people are familiar with Windows, but it takes special knowledge to be familiar with Linux. OSS often runs on Linux operating systems, so if your library wants to run OSS software it will need to find or develop Linux operating system experts. You can, through self-study and experimentation, become that expert, but it will take time and dedication. The learning activities at the end of the chapter will help you get started down that path.
Linux, despite its steep learning curve, still has some substantial benefits. Because it’s not as popular as Windows, it is rarely targeted by malware. The kernel was also designed to be stable, so it’s less likely to crash. Some people really enjoy running Linux on their personal computers and are willing to deal with the learning curve to get away from “control-freakish environments that Apple and Microsoft have increasingly foisted on users of personal computers” [8].
Programming Languages
Software can’t exist without someone sitting down, designing it, and writing the code. Instead of having to learn machine code, programmers use a language that is easier for our brains to understand and that usually follows human logic patterns. These languages are generally referred to as programming languages.
Every other category in this chapter is usually dominated by proprietary software, but the programming language arena is dominated by open-source software languages[9]. The reasons behind this have a lot to do with the value of OSS in general. Proprietary languages cost money and they’re limited (but they can be useful in some circumstances). OSS programming languages change as needs change. Their openness makes them more accessible, especially for those trying to get experience in programming without having to spend money.
Not all programming languages are created equal. Since programming languages are created for different tasks and different people, they have different strengths. Languages are based on different kinds of programming logic like object-oriented programming [10], functional programming, and procedural programming. It is not important to understand the difference between these, but it is important to understand that different languages are designed to function in fundamentally different ways. Some languages are flexible enough to be used with multiple kinds of logic, and some require very rigid adherence to one or the other.
To illustrate this point, we will review two open-source programming languages in depth.
Machine Code
01101101 01100001 01100011 01101000 01101001 01101110 01100101 00100000 01100011 01101111 01100100 01100101
That list of zeros and ones are the words “machine code” written out in binary.
6d 61 63 68 69 6e 65 20 63 6f 64 65
That set of letters and numbers are the same words written in hexadecimal (hex).
These languages are programming languages that talk the language of computers and not people. The computer can take this input and respond directly to it.
Very few people can program in binary or hex because it is so far removed from the language and logic our brain uses.
Instead, most people use a programing language to write out statements in a logical format that we can understand, and then they compile it into machine code using another program.
Java
Java can be considered to be a general-purpose language that is designed to run on any operating system and on any computer architecture (a term that is related to the computer hardware). Java started it’s life as a proprietary programming language but was released under open-source licensing. Java was created with very specific programming goals in mind [11]. It needed to be simple, and use object-oriented programming logic, so that people could use it quickly without in-depth programming or development knowledge.
Python
The Python programming language is another general-purpose programming language whose design was built around the idea of making it easy to read. This also means that it’s easier to maintain because multiple programmers can look at the code and understand it easily [12]. It is flexible enough to work in all the programming logics mentioned at the beginning of this section (so it can do object-oriented programming and the others).
Python is an organized logical and powerful language that has a lot of potential depth. Its clear, readable syntax, quick progression, versatility, available open resources, and supportive community make it a great first language that can teach you a lot of things about programming[13]. It’s also popular as an OSS programming language.
Libraries and Programming Languages
Even if you never end up writing a program that other people use, there are several good reasons to at least be casually familiar with programming languages. As patron needs change, so do software requirements, so often libraries hire developers either full-time or temporarily to do that development work. It helps to be able to understand what is possible and what is not possible in programming and to be able to speak some of their terminologies. A librarian with a little bit of programming knowledge but a lot of library domain knowledge working with a developer can make big waves in librarianship. A good example of this is Occam’s Reader, a project created by an Interlibrary Loan Librarian and a Software Developer to lend eBooks across libraries [14].
On a more personal level, knowing just a little bit of programming can help you do small scripting tasks. Let’s say you end up needing to convert thousands of images into PDF and you don’t have the proprietary software to do it but you do know a little Python. You can borrow some code, understand it, and use it without having to create a whole piece of software to do the job [15]. There are many small tasks in libraries that people run into day to day that could benefit from some quick scripting. Examples include dealing with files and converting data. There are even cookbooks for different programming languages that allow you to borrow code to do specific tasks, so you don’t have to create everything from scratch.
Just remember, you don’t have to be a software developer to understand code and to use it. You don’t have to create software to use scripting to do a quick task.
Reflection Exercise
Think back on the focus questions at the beginning of this chapter. Of the software that you felt least comfortable with, how much of it was at the bottom of the stack of software? Because this is the foundational stuff, most people move through life not having to work with it, so they don’t have a reason to know it even exists. Before reading section one, did you feel that this is true of you? Did your opinion change or stay the same after reading section one?
Section 2: Middle of the Stack
Section Summary
More people are comfortable with the middle of the stack software. This is stuff like word editing documents, email managers, and music software. However, most people are less familiar with server-level software even though it’s in the middle of the stack.
Computer Software
This is the area of OSS that most people feel most comfortable with. It’s easy enough to download a piece of OSS software and mess around with it without having to worry about operating systems and programming languages. Most computer level OSS is compiled to run independently. You may have even already dabbled in computer level OSS without realizing it.
It is possible to have a full software suite of nothing but OSS. The only exception is open-source antivirus software. Any open-source antivirus software should be used with caution. In Table 1, common desktop application tasks are listed with popular OSS versions of the software. In many cases, there are more options than those listed, but this list is provided as a starting point.
| Task | OSS | Notes |
| Office software | LibreOffice
Apache Open Office |
Word editing, spreadsheets, presentation software. |
| Photo and Image Editing Software | GIMP | Replaces software like Photoshop. Used to edit images and photos or create graphics. |
| Audio editing software [16] | Audacity
Linux Multimedia Studio |
Playback audio files edit various elements of the audio (change pitch etc). Save audio in different formats. |
| Desktop Publishing [17] | Scribus
LaTex |
Creating things like documents, calendars, various printouts. The Office software may also have desktop publishing software as part of it. |
| Computer Design Software (CAD) [18] | Blender 3D
|
Creating 3D designs. |
| Web Browsers [19] | Firefox
Chromium (Chrome) |
Browsing the internet. |
| Email Clients [20] | Opera Mail
Mozella Thunderbird |
Used for checking email, sending email, and searching and storing email. |
| Mind Mapping Software [21] | Freemind | Mind mapping software is often used to organize thoughts or work. |
| Project Management Software [22] | GanttPV
MyCollab- Requires Javaruntime, MySQL stack OrangeScrum Odoo ]project-open[ – Core is open-source, but modules are not. LibrePlan ProjectLibre |
Keep track of projects, tasks, time frames, and costs. |
| Online Cloud storage or file sharing [23] | ownCloud
NextCloud Seafile OnionShare Pydio Cells |
A new category of OSS, because it’s a new technology in general. The purpose of this kind of software is to give you “cloud storage” of your files, and ability to share them. |
| AntiVirus | ClamAV
Armadito AntiVirus Moon Secure AV |
Most of the open-source AntiVirus software should be used with caution. |
OSS desktop software does have its problems. Often, the software does not work as expected, so expect a learning curve. Not all OSS is well documented. Some software might be fine for your purposes, but if you have a problem, you might have difficulty in finding a solution. OSS software is not always pretty. It may function, but it may not look as polished as proprietary software.
Start slow and try OpenOffice [24]. It’s a great introduction to what OSS desktop applications can be like, and you likely have experience with other word processing and spreadsheet applications to compare it to.
Server Level Software
The internet is a series of connected wires, but those wires communicate and talk to each other because of server software. The internet will be dealt with in the next section. For now, lets focus on what a server is and why you should care about OSS server-level software.
What is a server?
A server is just a computer that is designed to serve data to another computer (hence the name) with special software that allows it to talk to other servers using protocols. Any computer can be turned into a server by installing server software on it, but whatever content you make available will only be available if that computer is turned on. Computers that act as servers for websites (like Amazon, or Google) must be designed to run constantly and be resistant to problems.
Overall, servers are designed to be computers that communicate. The computer you’re working on, if it has a web client, sends out a request to talk to the server that has the information it wants. The other server gets the request and, just like us, has to decide what to do with the request.
Most of the time, the request is responded to by the server sending out the contents of the website you asked for, but there’s a lot of different ways the information can be handled. You can have a web server that delivers web pages. You can have an email server that sends and receive email messages that you then can read on your email client. You can have servers that move files (FTP servers), and servers that manage people and their authorizations (identity servers)[25].
In order for a website to be visited by a user, they first have to go to their web browser. They use the web browser to ask for a webpage using a Uniform Resource Locator (URL), which is an address that tells the browser which server to contact. The browser passes the request to the server. The server responds by sending the contents of the web page to the computer. The browser then interprets the data and displays it. This is why some websites look different using different browsers.
What about open-source servers?
OSS server software can be downloaded in a bundle to quickly get a server up and running. The bundle is often called XAMP (or something similar). The different letters refer to different software included in the bundle. The first letter is the indicator of what operating system the bundle is designed to work with. W stands for windows. L stands for Linux, and X means it will work with a variety of operating systems. The M stands for MariaDB. The DB stands for database, and specifically what is called a relational database. A relational database allows some structure to the information. The information can have a relation with other information in the database. MariaDB allows information on the server to be structured and queried. The A stands for Apache, which is a Hypertext Transfer Protocol Server (HTTP). You may recognize the HTTP from the beginning of website addresses. Think of HTTP as the language of the internet. It’s the written language that computers and servers use to communicate back and forth. Apache runs the communication on the server end. A web client runs the communication on the computer’s end.
The P in XAMP stands for Hypertext Preprocessor (PHP). PHP is a server-side programming language. The P can also stand for Python, or Perl which are also OSS programming languages. If there are two P’s (as in XAMPP), then there will be two programming languages installed.
At the end of this chapter, during the learning exercise, you will get an opportunity to experiment with a XAMPP (Operating System vestal, Apache, MariaDB, PHP, Perl) server on a flash drive. Even though it will be on a flash drive, it will run just like a XAMPP server would run in the real world.
Open-Source Identity Management: Shibboleth
There are thousands of OSS programs designed to run on a server in the XAMP environment. One relevant to Libraries, Shibboleth is an identity management software known as a federated identity solution [27]. If you have ever had to use a user name and password, then you have unknowingly been using identity management software. It keeps track of people, their credentials, as well as their rights and abilities in a particular system. Shibboleth, in particular, is designed to be used in lots of different places, and not just a single site. This is often called single-sign-on. If you have ever used your Facebook or Google account to log into an app or website, then you have used a single-sign-on identity management system. Shibboleth has been mostly adopted by the education and researcher communities.
Libraries have many opportunities to use an OSS like Shibboleth. A library can set it up so that users can log into many different databases with a single log in, or they can use it to manage their institutional repositories and who can add content or edit.
A lot of different library services require log in, and many new ones will as well. It’s nice when someone suggests a new service if you have a Shibboleth instance that can just be hooked in. It makes the patron experience easier just having to log in once.
Reflection Exercise
When you go to a website like Wikipedia, you are actually working with all the software mentioned in this section. Shibboleth itself isn’t used by Wikipedia, but the software has its own built in identity management system. Think about all the people accessing Wikipedia right now. The English site gets 18 billion views per month [28]. Imagine the server software having to keep track of all those people coming in all at once. The server has to hear thousands of request from user computers and respond appropriately to get everyone the pages they wanted. When the number of requests gets too much, the server crashes. If this is done on purpose, it’s called a denial-of-service attack (DoS). Sometimes, this is accidental, like when a celebrity dies and everyone rushes to a website to read the news.
Think back on the last website you visited. Was your experience of these server level software seamless? Did you have any idea that you were using a suite of specialized software? Now that you know, do you feel like it changes how you view websites?
Section 3: Top of the Stack
Section Summary
The top of the stack can be thought of as the front-facing part of all the software mentioned previously. It’s the part that you see. In this section, we will discuss the topmost layer of development. For libraries, this would be the software that patrons see.
Website Software
If you have a XAMP server running, you still have to design and present a webpage in order for it to be presented to the computers that request it. This is done through a hypertext markup language (HTML). A markup language is a way of annotating text, images, and other elements so that a computer can treat different parts differently.
Example:
This is just regular text.
<b>This is text annotated with HTML code that lets the computer know to make it bold.</b>
This is what you would see on your web browser.
This is text annotated with HTML code that lets the computer know to make it bold.
The mechanism by which HTML works is simple, but it can be combined into a very complex website.
However, it gets tedious and difficult to maintain when you have lots of HTML web pages. Say you have five hundred webpages, and you want to change the way your bold text looks. You will have to go through each one and change each instance where you used the bold tag.
That’s where the concept of cascading style sheets (CSS) comes in. The idea is that you have a single document that says how each element should be displayed. So, if you want to change all of your bold text to bold red text, you can do it quickly by just changing the one document.
HTML and CSS are not OSS. They are actually standards, not software, so they can’t have a license. However, if the software lives online, then it more than likely has an HTML or CSS layer involved.
Let’s say you want to do something more complicated than just simple formatting. If you want a form that people can fill out and send you an email, you can use JavaScript, which is an OSS programming language specifically for use on HTML web pages.
Not everyone who works on web pages wants to learn how to be a HTML, CSS, or JavaScript master. Instead, they want to focus in on their content and making it available. This is why a whole category of software was created to make creating and editing web pages as easy as writing a word document on your computer. This is where the content management systems (CMS) come in.
One of the most popular OSS CMS (lots of letters here), is Drupal [29]. Drupal, while OSS itself, can run on both OSS server software and proprietary server software. Drupal adds features that allow a website to be more easily run, like user accounts that let multiple people edit the site.
Libraries need websites to tie their online resources and their library information together in one place, and many libraries choose Drupal to do that. There are even some modules designed specifically for libraries, such as Drupal OPAC, article discovery layers, and digital asset management systems (DAMS). Islandora is an image repository software designed with specific digital library software and it uses Drupal as the front-facing user interface.
Library Enterprise Software
The biggest challenge for libraries and OSS is the idea of enterprise-level software. This is software that is designed to handle the entirety of an enterprise. The most well-known and talked about kind of enterprise-level software is the integrated library system (ILS). An ILS is a single monolithic piece of software that handles most of the functions of a library, like acquisitions, cataloging, and circulation. Sometimes an ILS will handle things like digital collections, course reserves, and interlibrary loan.
Most of the literature in libraries about OSS have to do with moving to an OSS ILS. The two most popular are Koha and Evergreen. These two have had the most written about them, and the most number of libraries trying to migrate to them from various systems. Koha is the more mature software, but it’s limited in that it doesn’t work well for multiple libraries. Evergreen was developed with library consortia in mind, so it handles various libraries’ sites a lot better.
Moving to an OSS ILS can be difficult, and the choice to move would be one that is not lightly undertaken by an organization. The very nature of ILS means that it touches nearly every part of the library and nearly all patrons, so changing from one system to another affects everyone. In addition, staff will most likely have to learn new workflows within counterintuitive design because these systems are, by and large, not designed by librarians. Handling the choice of whether or not an organization will move to OSS will be handled in Chapter 3. The argument for why librarians should be involved in the development of OSS, and how to get started, will be discussed in Chapter 6.
For your reference, the table below provides a listing of well-used OSS software in libraries.
| System | Purpose |
| Koha | ILS |
| Evergreen | ILS |
| Backlight | Discovery Tool |
| Extensible Catalog/XC | Discovery Tool |
| VuFind | Discovery Tool |
| Samvera | Repository Software |
| Omeka and OmekaS | Digital Collection Software |
| DSpace | Repository Software |
| Islandora | Digital Collection Software |
| Fedora | Digital Asset Management Software |
| Greenstone | Digital Collection Software |
| DataVerse | Data Management Software |
| OpenILL | Interlibrary Loan Software |
| FillfILLment | Interlibrary Loan Software |
| OpenRequest | Interlibrary Loan Software |
| Prospero | Interlibrary Loan Software |
In the learning activities, you will get the opportunity to play with Koha without having to install any software or do anything more than go to a website. For every other system, you would have to work somewhere to get experience with an ILS, but with OSS, some organizations will make example sites available for experimentation and learning.
Reflection Exercise
For every website you visit, someone has had to work to make it look the way it does. There was programming involved in how the site functions. How comfortable did you feel with the top of the stack technologies? Are you curious about doing more or are you glad the interactions between the different levels are seamless?
Chapter Summary
In this chapter, we went through a whole stack of software from the very bottom to the top, varying from technologies you may not have been familiar with to technologies you may use every day without realizing it.
Links to External Resources
- Open-Source Hardware Association (https://www.oshwa.org/ )
- Arduino Tutorials (http://www.ladyada.net/learn/arduino/)
- Learn Java (https://www.learnjavaonline.org/) Has tutorials and an in-browser code testing space so that you can learn and test Java without having to download or run anything on your local computer. The tutorials have basic programming concepts and some advanced concepts.
- Learn Python (https://www.learnpython.org/) Same group that does the Learn Java, but without the in browser tester, so you will have to install Python to get to test on your computer.
- Drupal for Libraries (https://groups.drupal.org/libraries/resources)
Self Assessment
- Why is Python a good programming language to start with if you want to learn to program?
- Explain how a server interacts with a computer to get a webpage.
- Why would you use a Content Management System?
Exercises
One of the great things about open-source software is that they are all very available. You can install them and get hands-on experience with them immediately. Depending on your level of technical expertness, the learning curve might be smoother or steeper, but it’s all available at your fingertips. In this section, the authors have chosen some small projects with minimal resources to do introductory tasks. Getting experience with these systems and software now can help you inform your IT decisions in the future. Based on your experiences with these tasks, is proprietary software worth it?
You can attempt any one of these or all of them, but as you work through the process, keep a project journal. Keep track of what you are trying to do, links that you used, notes on how successful or not you were, and track how much time it took you for each task. Whenever you are working on a complicated project, keeping this kind of journal will help in re-tracing your steps, or figuring out where things went wrong. The success criteria for these are that you attempt them. Trying and failing is a part of learning, so don’t shy away from something just because it looks hard. There are different activity review points if you fail. However, to prove you tried, you should still keep your project journal of what you tried and how you found information, what worked and what didn’t.
Get Experience Using Linux
The goal of this exercise is to install some form of Linux and use it to get to the internet.
Install Porteus, a portable distribution of Linux that can be installed on a USB or CD ( http://porteus.org/). This distribution is not setup, for example, to host sever level software, but to get on the internet and maybe write a document. It’s an incredibly small distribution of Linux, and it is suppose to boot very quickly.
One of the benefits of this is that you can use a computer that runs Windows to set it up, and view it. The downside is that it’s a bit of a difficult mess to try to install.
If you succeed in installing Porteus and making it to the internet, write about what you think about the interface, and the experience. What other software did you choose and why? What do you think of the other software packages that come on this distribution?
If you are not successful in installing Porteus, write about your experience in trying, what you tried, and how it failed. Write about how the process can be made more user-friendly. Would more documentation help? More detailed instructions for how to start? What resources did you look at to try to find answers to your solutions?
Get Started with Python
The goal in this learning activity is to learn what it takes to start programming in an open-source programming language. The language of choice for this activity is Python. The task is to use Python to print “Hello, World!”. Printing a command is one of the simplest tasks in any programming language, and getting to “Hello, World!” on your screen can be a journey all its own. It requires you to install the programming language on your computer, understand how to get to the command line, and to understand the syntax enough to tell the computer what to do. Thankfully, there are plenty of instructions on how to get started in Python.
Go to the Beginner’s Guide for Python and try installing it from those instructions: https://wiki.python.org/moin/BeginnersGuide/Download
https://www.python.org/about/gettingstarted/
To learn the syntax, you can go to https://www.learnpython.org/en/Hello,_World!
There, there are tutorials for how to print out the welcoming phrase in different versions of Python.
If you succeeded at getting the program to print “Hello, World!” write about your experiences getting to that point. Was it easy? Was it difficult? What resources did you use to help you to this point? Do you think the average library science student can get to this point?
If you failed to print the term, write about your experience. What failed? Did you give up? Did you run out of time? Does this experience make you have a new appreciation for developers? What could have made this easier? Go to Learn Java (https://www.learnjavaonline.org/) and try to get it to Print “Hello, World!”. It’s as simple as hitting the green “run” button. You didn’t have to install any software and technically completed the task. Try editing the code to print something else. Do you think more people would code if it were made easier?
Get Experience with LibreOffice
Download and install LibreOffice. Try to use the software instead of your normal software for a few days. How is it different from what you normally use? Are you impressed with it or disappointed? Are you likely to continue using it or are you more firmly set on using your software of choice?
There are no wrong answers. Getting experience using open-source software can be an eye-opener into what is and isn’t possible with collaborative programming.
Get Experience with Server-Level Software
Install MediaWiki using Wiki on a Stick : https://www.mediawiki.org/wiki/Manual:Wiki_on_a_stick
This whole process is a simplified version of installing a real server with a real MediaWiki installation. The only difference is that you are installing it on a flash drive or your computer hard drive instead of on a server. Because it’s localized, you won’t be able to have other people use it, but you can get the experience of setting it up and using it. You will actually have to turn on the server, have it boot up, before you can edit your MediaWiki instance. Write about the different open-source software that is involved in setting up just a simple wiki, and how difficult or easy the process was.
Or, install Drupal on your local machine https://www.drupal.org/docs/develop/local-server-setup and create a simple webpage that says “Hello, world”.
If you are successful with either of these, compare your copy to a version of the software running in the real world. Compare your MediaWiki instance to the real Wikipedia, or compare your Drupal to a library website using Drupal (choose one from this list: https://groups.drupal.org/libraries/resources). How much time do you think it takes to get from a fresh install to a website full of content? Do you think one person can do it alone, or should there be multiple content creators?
If you were not successful, what do you think was your limiting factor? Did you not have enough time? Did you not find the resources you need when you ran into a problem? Delve deep into how you think the community could provide better instructions.
Get Experience with Library-Specific Software
Go to the Koha Community Demo page (https://koha-community.org/demo/), and choose a Demo site to use for both the OPAC and Staff Interface. In the OPAC do a search for “War and Peace”, then do the same search in your normal OPAC of choice. How do they differ? Are you impressed or disappointed? Why?
Go to the staff side using the demo site’s log in. Look through all the modules and play around with them. See if you can find patron records, and see if you can check out a book to them. If you have taken a cataloging course recently, try to catalog a book from your private collection into the system. For some people, this may be their first time getting on the backend of a library system. For those people, write about your experience and if it was harder or easier than you imagined. For those who have experience with other systems, how does this system compare to other systems you have used?
Compare DSpace and Greenstone
Go to the Greenstone examples page (http://www.greenstone.org/examples) and look through a few of the highlighted Greenstone collections. Then, go to the DuraSpace Use-Cases for DSpace site (http://www.duraspace.org/dspacedirect/about/use-cases/). Based on a review of three different sites for each system, which system looks more modern? Now, go to the Samvara Partners page (http://samvera.org/samvera-partners/) and find at least one example collection to compare to the others.
How has the user experience for digital libraries changed from the first generation of digital asset management software to the newest?
Get a feel for an open-source discovery platform
Go to the example pages for Blacklight (http://projectblacklight.org/#examples) and choose one of the project showcases. Compare that to the out-of-the-box demo at https://demo.projectblacklight.org/
How much customization did different organizations put into their OSS? How many programming hours do you think it took to take Blacklight from the demo to one of the live projects? If you were a library administrator seeing some other organizations’ Blacklight interface, do you think you would be happy with the out of the box version at your own institution?
Can You Afford Open-Source Hardware?
Imagine you are starting a library makerspace and want to purchase some Arduinos. Do an evaluation of what different versions of Arduino are out there, how much they cost, and any accompanying hardware or software that you might need to have patrons use them. What would be good first projects to do as part of an Arduino workshop? Act like you are writing this up as a proposal to your director or dean to try to fund the project.
What argument can you make for why a library should be doing this type of workshop? If you were in charge of a library, do you think you would be convinced?
Self Assessment Answers
- Why is Python a good programming language to start with if you want to learn to program? Its clear readable syntax, quick progression, versatility, available open resources, and supportive community make it a great first language.
- Explain how a server interacts with a computer to get a webpage. In order for a website to be visited by a user, they first have to go to their web browser. They use the web browser to ask for a webpage using a Uniform Resource Locator (URL), which is an address that tells the browser which server to contact. The browser passes the request to the server. The server responds by sending the contents of the web page to the computer.
- Why would you use a Content Management System? A Content Management System simplifies the creation of websites so that users don’t have to understand the various technologies involved in order to create websites. A Content Management System can make it easier to maintain a website by making it easier to edit content, and manage multiple people editing.
- https://opensource.com/resources/what-open-hardware ↵
- http://www.xyzcargo.com/ ↵
- http://www.appropedia.org/Open-source_3D-printable_optics_equipment ↵
- https://learn.sparkfun.com/tutorials/what-is-an-arduino ↵
- https://readwrite.com/2014/03/29/10-arduino-projects-microcontroller-electrical-engineering/ ↵
- http://gs.statcounter.com/windows-version-market-share/desktop/worldwide/#monthly-201806-201806-map ↵
- https://www.lifewire.com/basic-guide-linux-operating-system-2202786 ↵
- https://www.wired.com/2016/01/i-moved-to-linux-and-its-even-better-than-i-expected/ ↵
- https://www.wired.com/2015/08/github-data-shows-changing-software-landscape/ ↵
- https://searchmicroservices.techtarget.com/definition/object-oriented-programming-OOP ↵
- https://www.oracle.com/technetwork/java/intro-141325.html ↵
- https://www.wefearchange.org/2010/06/import-this-and-zen-of-python.html ↵
- https://mikkegoes.com/5-reasons-why-python-is-a-great-first-programming-language/ ↵
- http://publiclibrariesonline.org/2016/05/occams-reader-interlibrary-e-book-loans/ ↵
- https://stackoverflow.com/questions/27327513/create-pdf-from-a-list-of-images ↵
- https://beebom.com/best-audio-editing-software/ ↵
- https://pagination.com/desktop-publishing-software/ ↵
- https://blog.g2crowd.com/blog/cad/10-open-source-free-cad-tools-download/ ↵
- https://www.makeuseof.com/tag/best-open-source-browsers/ ↵
- https://www.techradar.com/news/the-best-free-email-client ↵
- https://business.tutsplus.com/articles/best-mind-mapping-software-tools--cms-29581 ↵
- https://opensource.com/business/16/3/top-project-management-tools-2016 ↵
- https://opensource.com/alternatives/dropbox ↵
- http://www.techsoupforlibraries.org/planning-for-success/innovation/free-and-open-source-software-in-libraries ↵
- https://www.lifewire.com/servers-in-computer-networking-817380 ↵
- https://www.computerworld.com.au/article/457551/dead_database_walking_mysql_creator_why_future_belongs_mariadb/ ↵
- https://www.shibboleth.net/index/ ↵
- http://www.pewresearch.org/fact-tank/2016/01/14/wikipedia-at-15/ ↵
- https://www.drupal.org/ ↵
Computer hardware refers to the physical parts of a computer and related devices. Internal hardware devices include motherboards, hard drives, and RAM. External hardware devices include monitors, keyboards, mice, printers, and scanners. https://techterms.com/definition/hardware