I finally got around to sending a postcard a couple of weeks ago. I’ve needed to send a postcard to a company in Belgium for a while.
Let me explain; we have used several packages (bits of code that we can integrate into an overall solution for a customer) from a Belgian web agency called Spatie. They ask for a postcard if you use any of their packages. It’s a bit of fun, and it’s very nice of them to let anyone lift their packages and use them. This concept is called “open source”, and it’s something you and I benefit from every single day, whether we know it or not.
What about an Example
So, lets say that you wish for us to build a website or web application for you. Firstly, that’s great! Please get in touch. Secondly, you may be surprised to know how much of your site we’re going to build based off other people’s code which they’ve shared for free. Let’s have a look.
Let’s say it’s a WordPress site that we agree to build. WordPress, that’s free and open source. Actually, we’re going to be building it based on the bedrock build of WordPress. We use this for a couple of good reasons, one of which is so that we can easily use composer to bring in packages (WordPress calls specific packages for WordPress “Modules”), more easily.
Composer is an open source dependency manager (in some contexts packages can be referred to as dependencies. I don’t want to get into this right now), which means that composer helps us bring in other code more easily. We’re going to bring in some other Free Open Source WordPress modules, depending on what your site needs, and what is appropriate.
Now, your WordPress site is going to be running on a server i.e. a computer. WordPress is written in PHP, so the server will need PHP installed to understand the code and run it. It will also need a database to store your content on. That’s most likely going to be a MariaDB database. You can download these and see how they’re made as well, if you like.
The server will also need a piece of software which understands what do to whenever an end user visits the site in their web browser. We use nginx these days, lots of agencies use this, or Apache, both are Free Open Source Software.
The server also needs to be running an Operating System, before it can do anything. We use ubuntu for this. Again it’s open source. You can grab the code, and start poking about with it, and create a different operating system, based on ubuntu if you wish. Personally, I wouldn’t. There’s some other FOSS software on that server, but this is probably getting hard to read already.
Now, your end users will use a web browser to interact with the site. If they use Chrome, Safari or Firefox, which they probably will, it will either contain open source elements, or be an entirely open source project.
So, a (very) incomplete list of FOSS software we use, just so that one person can look at one page of a site is as follows:
- The Bedrock WordPress build
- Various WordPress modules
This is probably fairly typical of lots of web agencies in Belfast. There are two pieces of FOSS software on this list, which are just used to bring in more FOSS software! So, why does this happen?
Why do people write all this stuff and give it away for free?
Well, for some people it’s simply because they’re nice people and they want to share the good work that they’ve done.
Other people will enjoy the community aspect of it. If you take something like the main Laravel project – nearly 400 people have contributed to it at the time of writing, from all over the world. That’s very cool! For Taylor Otwell, who created Laravel, he has a better product, which is more widely used, because of these contributors, and because it’s a FOSS project. I doubt that as a closed source project it would have spawned conferences, training websites and an entire ecosystem built around itself.
There are sound business reasons for creating FOSS as well.
We have a couple of small Open Source projects, as much so that other people can start to contribute to them easily as for any other reasons. If someone else can use them too, then that’s great – and I have no objections.
Why do people use it?
Well, a few months ago, we completed a project which was going to have huge bursts of traffic immediately following events. So, I wanted to use a package which allowed the site to store the response it made whenever someone visited a page, so that it didn’t have to build the same page hundreds of times a minute. The site was built with Laravel. What I needed therefore was a caching package for laravel. So, lets see what options I had:
Build one myself
I have no doubt at all that I could do that. I could work out how middleware works, work out how to test the system under load, learn a bunch of stuff about caching and laravel. I’d like to do that, but the customer (understandably) wants a result quickly and cheaply, and my time is expensive. They probably don’t want their site to be the guinea pig for a completely new piece of software if there’s some other package we can use instead, which has been used in several places.
Pay for something
I’m not sure that there’s a paid-for package that I could have used, but if there was, then – either The Tomorrow Lab or the customer would have to pay for something, and take responsibility for the licensing. If the source code is obfuscated in some way, to protect the financial value of the package, then I wouldn’t be able to read the code to see how it works. Depending on whether or not there is a trial version of the software, I might have to pay for it before using it, which means I might end up paying for junk. I might have to visit a webpage, sign in, and download something myself, every time there’s an update, instead of just letting composer deal with it. Ghastly.
Find an open source package
I used a package made by Spatie (the agency who really like postcards), called Laravel Responsecache. It has been written over a period of two years. It has a suite of unit tests (code written to make sure that other code works in the expected way). I can look at the code and see how it works. I can run the tests to make sure that it works. I can even contribute to it if it doesn’t quite do exactly everything I need.
To me, this is strongly preferable to the other options, for myself, for the customer and for the end user.
In short, Free Open Source Software makes my life easier as a developer. It allows customers to have better products. It allows end users to have better experience of a customer’s product. It’s great, no matter how many postcards I have to write.