On open-source software
Bootstrap is amazing. I absolutely love it!
Before I launch into my ‘I love Bootstrap’ spiel, I’ll just give a quick overview of what Bootstrap is. According to Wikipedia Bootstrap is a free collection of tools for creating websites and web applications. It contains HTML and CSS-based design templates for typography, forms, buttons, navigation and other interface components, as well as optional JavaScript extensions. Did I mention that Bootstrap was developed by Twitter?
It is fair to say, that over these past couple of weeks I have struggled with the front-end design of my apps. It’s not that I don’t like pretty things, or that I can’t tell if something is ugly. But I have found it so hard to implement just a basic, clean design for my web applications programmes using just HTML/CSS (and some SASS). It was extremely hard to position elements in an aesthetically pleasing way; it was hard to gain a cohesive identity for the website. The homepage of my Foodly app (a mini project to practice using APIs) didn’t look too shabby (You can check it out on Heroku here: Foodly). As you can see, I gave up styling the results page because it took me so long to get the positioning right. I also didn’t have time to think about various screen sizes/making it available on cross-browser platforms - so if you are viewing this on a screen other than a 13 inch one, I can’t vouch for the layout. Sorry!). For me, HTML/CSS required a huge amount of time and patience to yield results that are only partly satisfying.
Today we were introduced to Bootstrap. I can’t believe I’m saying this, but I essentially spent all of today on designing my Instagram app, and it was an absolute pleasure! (You can check it out on Heroku here: Latergram). Bootstrap, when combined with the Chrome ‘inspect element’ features are literally life-saving, and return the pleasure of design to people like me who enjoy pretty things, but don’t have the eye to be able to put everything together from scratch. By far the best feature of Bootstrap is the grid design which makes positioning on your page simple and gives it a professional look. It is also responsive, meaning that the layout of the page will change when the screen size does, in a way to render the website nicely on a variety of screen sizes.
And the best thing about it all? These are open-source projects! Bootstrap has been forked from Github something like 70,000 times.
I think it is fair to say that it is purely due to the presence of open-source software, that someone like me, who has been programming for a mere 9 weeks, can begin to build both the back-end and front-end of web applications within that space of time. The plethora of software that is freely available to download and use in your own programmes is really quite astonishing.
I guess intellectually it makes a huge amount of sense. Why reinvent the wheel?
We discovered this the hard way. In week 6 we were introduced to databases, and we were creating a programme to manage links that you would like to bookmark. In order to make sure that a user could only edit and add their own links, and not tamper with other users, we created a system in which users could sign-in and out and register for an account. Because passwords need to be secret, they are never stored on the database, and thus sending people a password reset email becomes somewhat of a challenge. It was a problem that took us around 3 days to solve.
Only two weeks later, when we started working with Rails, were we introduced to a gem called ‘Devise’, in which it is possible to implement all the user functionality within about 20 minutes. Not only does it create the user model, but it verifies that the password is 8-characters long, matches the password confirmation, sends a password reset email etc. You get the gist. Again, the amount of hours that has been saved by creating open solutions to common problems is amazing. By people making their solutions to common problems publicly available, the productivity of the tech industry has no doubt been increased hugely, allowing companies to focus their efforts on new problems. What’s more, and in my opinion this is what is so cool about using a version control system like Github, is that anyone can contribute to it. People are actively encouraged to involve themselves in open-source projects to help fix bugs and to improve functionality with their own suggestions.
So the rationale behind it seems to be there. But here the rational economist jumps in with the theory of externalities and public goods. In economic terms knowledge is a public good, meaning that it is non-excludable and consumption of it is non-rivalrous. Everyone will wait for someone else to produce it. If the solution can be used freely, why would you expend the resources developing the solution? Therefore, if software was all freely available and open-source, surely it would be underprovided by the market. Indeed, in most industries, including tech companies, intellectual property is closely guarded and solutions are not shared. Software is an incredibly valuable asset and costs a huge amount of time and money to develop. So how can the presence of huge open-source projects, such as Bootstrap, or something like Wikipedia, be explained?
Last week, we had a brilliant lunch time talk from Tim Perry, the Open Soure Champion, at Softwire, a bespoke software consultancy. The presence of open source software is an historical accident because tech companies received the majority of the revenue from their hardware businesses, whilst software solutions were shared. Whilst the balance has shifted, the open-source movement has taken a life of its own and has become a philosophy. Essentially the open-source movement is about being a good person and good citizen of the tech industry: contributing and helping to those in your community facing similar problems. If you give someone else your time, they will help you when you need it. In the open-source movement, values that are treasured in our inter-personal relationships are carried through. Rather than the sole metric of success being a monetary value, success and respect is earned through contributing to the community, being generous and helpful. I think the world would be enhanced greatly if other industries followed this trend and measured success in ethical terms as well as monetary terms. There is a line to tread and companies ultimately want to have financial benefit from the software they develop. Indeed, Tim admitted that the work he did for most of his clients was not open-source. But I think the fact many of the largest and most successful companies, such as Twitter and Google have huge open-source projects available to developers, suggests not only that open-source is a key cornerstone of the tech industry, but that their financial success has not been held back by their significant open-source contributions. (Fun fact: Google has released over 20 million lines of code and over 900 open-source projects!).
Yet I don’t think the presence of open-source software and alternative metrics of success is necessarily enough to ensure the integrity of an industry. I was offered an interesting insight on the perspective of the ethics of the tech industry at a meetup this week at Pivotal Labs. The title of the talk was ‘using technology to make the world less shit’. Personally, my motivation for entering the tech world was exactly that. And I find it all too easy to be incredibly optimistic about the power of modern technology for enhancing lives around the world. The speaker, Nat, offered an alternative view-point: software can often exclude huge amounts of the population whilst purporting to be a voice of the people (e.g. whilst anyone can technically contribute to Wikipedia it requires at the very least internet connection, literacy, time and knowledge about a certain topic to be able to contribute). Furthermore, software is often created without considering the surrounding ecosystem. Small measures that Nat takes to steer technology to a place where it can be a force for good include ensuring the models that she creates are called people, rather than users. By doing so, people are maintained at the heart of the system, and the impact of the software is considered from the perspective of the people for whom it is produced. It is easy to see the benefits of many tech initiatives such as Wikipedia, Whatsapp. The lofty missions of connecting people, or democratising knowledge are impressive goals. But what of data privacy? Who are the people who are left behind? I am not convinced that fear against innovation is necessarily the right reaction. But let’s begin to ask the difficult questions. As of yet, I have no answers, but these are topics that I am beginning to think about. For example, I realise that the benefits I have received from Google are too great to enumerate. But at the same time, the amount of data they have about me is enough to make me feel slightly uncomfortable. Whilst they might currently be acting in my interests, will they always? I would like to think so, but I’m not sure. I would love to hear your thoughts on this topic so please do leave comments if you so wish.
Hannah