Random scribblings on software, technology, language, and society.

The “development stack” that is not really a stack

I briefly want to discuss something that is commonly known as the “development stack”. First of all, against all affinity to clarity that software developers tend to, this term is used somewhat ambiguously. In its first meaning, it refers to “a stack of technologies that work together to provide a foundation for a software project “. This foundation refers to the final product; which means it incorporates the operating system, a database, a programming language, and a layer of frameworks that underlie the main code of a project.

The other sense I have picked up at some point, was its use to refer to the “toolchain” of software that is used to develop software. As such, it also includes the OS, programming languages, and frameworks; but it further describes your development environment, build automation or continuous integration solution. I am here referring to this second definition.

What I want to draw attention to, is the common notion that this “toolchain” or “stack” has a linear structure. I claim that all the different fragments of tools and software, are anything but linear. What would such an ordering refer to? The order in which a developer uses the different tools? An implicit “based-on” or “uses” relationship? Surely, your IDE uses your SCM, which in turn is used by a CI system, etc. But if you visualize some of these different tools, it becomes obvious that there is a lot of interoperability between them. And rightfully so.

Please note that in this graphic, in contrary to most other visualizations of this kind, no software lifecycle is shown. It is further restricted to the “development phase” of software engineering and excludes other phases, such as deployment, etc. Instead, I want to illustrate that this is not a “toolchain”, but a zoo of software engineering tools. Moreover, some software within this collection may belong to more than one category and blur the lines of this taxonomy. In fact, all these distinct solutions were developed to solve a specific sub-task in the development of software, and it is only natural that many projects attempt to unify this disjointed toolset. On a side note, I believe that eventually all these pieces will be melted together in one well-integrated solution. Until then, software engineering relies on selecting a subset of these fragments which come together neatly. But choosing this set, among thousands of different solutions is extremely difficult. It’s a mess, and I have a hard time keeping track of what’s out there.

So I was thinking, if it might be useful to provide a database containing a collection of all these tools, which documents their inter-relations. A use case of such a database might be to find a well-established “development stack” for a given set of constraints. Say I want to work on OS X, develop in language Y, and want to use source code management Z. Any takers?

The Copyright Alert System

Today, has reported [1] that a “Copyright Alert System” is going to be implemented in the United States within this year, after it has been previously negotiated in secrecy and delayed multiple times.
The Center for Copyright Information explains [2] how a 6-stage warning system is used on internet users suspected for copyright infringement. In early stages, these “alerts” will merely be notifications. Subsequent alerts force the user to watch “educational videos” and confirm their offences before regaining access to their internet subscription. Ultimately, later stages might reduce internet speed or lead up to a complete disconnection of the subscriber.

Holy shit. I can’t even begin to list the aspects of this radical agenda making me rage.
One reason these “laws” appear so ridiculous on a first glace might be the tendency to treat grown up citizens like little children. The regulations give the impression that Copyright holders could domineer over internet users at will, without the latter having any right to objection. A six-strike policy might resemble the educational ideas of a parent for their teenage kid – but it surely does not conform to a constitutional state – which is governed by law. Let me elaborate.

The era of a Corporatocracy
The Oxford dictionary lists corporatocracy as “political system [that] is controlled by corporations or corporate interests.” [3]. Arguably, we have long entered this era. The fact that life-affecting negotiations (such as the way we use the internet) are done by private organisations makes evident this shift in power. The participating parties, copyright holders and ISPs, obviously have no inclination to the will of the people. These regulations are discussed secretly, to leave the government an even smaller opening to confirm their legitimacy. A constitutional democracy passes laws for the benefit of all people, yet regulations regarding copyright issues are motivated by financial profit of large corporations, and are ultimately the result of lobbyism. Movements like Stop-ACTA [4] or SOPA-Strike [5] demonstrate clearly that the direction we are heading is definitely not the will of the people, and yet we have to fight an exhaustive crusade against the will of corporations.

My ISP, Judge Dredd of the Internet
The root of the problematics with filesharing is the understanding of it as a criminal act. If you steal a car, you have violated a law and are guilty of a crime. It is important to note, that even though you have a dispute with the owner of the car, it is ultimately the state which convicts and subsequently punishes you. In case of the six-strike agenda on the other hand, there is no legal system serving justice. It is a private company which charges, convicts and executes their own punishment; and this concept of justice is really skewed. Laws are meant to be definite: You either violate it, or you are innocent. Furthermore the presumption of innocence guarantees that there must be evidence for being liable to prosecution. The six levels of alarms seem to make an excuse for the lack of proper evidence by introducing multiple levels of ‘guiltiness’. An Internet Service Provider should not turn into the judge, the jury and the executioner of copyright infringements.

Thoughtcrime is doubleplusungood.
The term that angered me the most in the press statement was clearly “educational video”. Internet users are meant to be “educated” into not being filesharers. In my books, education is the conveyance of factual knowledge. In case of an anti-piracy video however, it is the advocation of a certain belief that is forced upon the masses. Images of several dystopian movies can come into mind, in which an overpowering state uses subliminal messages to control its people. This is exactly what would become reality: Brainwashing people into an understanding of rightfulness that suits the capitalist rulers. I very much apologize for such an exaggerated position, but fail to describe the issue differently than a violation of the Freedom of Thought.

Lastly, there are tons of technical difficulties, for instance the issue of multiple users behind a single NAT [6].

The technical implementation of the six-strike ‘punishments’ which ISPs should be permitted to impose at will, is a whole different topic for discussion.

The bottom line of this is, that the six-strike regulation must not pass in the United States. Even not living in the US, a step in this direction would affect me like any internet user on a global scale. I hope that US citizens soon react with call-to-arms offensives to write their congressmen.

I, for one, refuse to welcome our new corporate overlords.


Are silent updates evil?

This morning I started up my instant messenger to find a new contact in my “Buddy list”, I have been exchaning mails with for quite a while. I have no clue what suddenly caused said person to appear as a chat contact and it got me thinking.

Maybe it was the update of my cell phones operating system, which also caused my phone book to fill up with random names I have never seen before. I caught myself reading up on how GTalk is related to Google+ profiles, how google behaves if muliple Google accounts are linked, or a youtube account is connected, how they get integrated into your phonebook and possibly joined with other entries in there.

I get to decide between "Now" and "Later"

..Then I realized this is all futile. Software and services are constantly changing, and my current understanding of things will be obsolete in a few months.

Silent updates
Many products – most of Google’s – update to new versions transparently these days, without any user interaction or awareness [1]. Google Chrome doesn’t even display a version number any more, as that is a thing of the past. The thought behind this is noble: Don’t bug the user with technical details they don’t want to care about. As a side effect, when software vendors roll out changes gradually and inevitably, users don’t even get a chance to complain about them. They don’t perceive updates anymore. Instead of doing major UI revisions, the trend goes to small, barely noticable changes, like the ordering of buttons in GMail.
Am I the only one fearing a loss of control there?

Firstly, I could be dangerous.
What if some transparent system update causes a cell phone to handle contacts differently? People rely on features like tagging, hiding, grouping and connecting profiles of various accounts and services. Software which fiddles with sensitive data that is highly relevant to ones personal life should not be allowed to secretly morph into some new behaviour.
We live in a world, where a car vendor could update your car to turn left when you steer right.. luckily that would never happen. I’d expect the same sanity when updating my cellphone.

Secondly, its patronizing the user.
Software updates always make some assumptions on how that software is used. Silently forcing your users to update is somewhat disrespecting them, and eliminates a valuable feedback loop.
To me, the programs which are most fun to use don’t see their users as zombies – each pressing the same sequence of buttons – but those which can be used in various, creative ways. And this just hold for “big” applications like Photoshop: In a recent example, the feature of generating randomized playlists was removed from Google’s Android Music player and a “Shuffle all” button was added instead. The way I was using the software was thus rendered impossible, and I am still pissed that this change was forced on me, without the option to opt-out or roll-back.

Richard Stallman has warned us about this dangerous principle of “Software as a Service” [2], and I begin to see more aspects in which it is taking away the user’s freedom.
As release cycles keep getting shorter, the software landscape starts to appear as a dynamically changing organism. They way I see it, feature-changing updates should be an active and decided process. This gives the user a slight but fundamental bit of control instead of turning him into an incapable observer.


My 2 cents on facebook’s timeline

Just recently facebook announced the release of a replacement for the “Wall” by something way more advanced called the “Timeline“. Personally, I’m using facebook on quite a superficial level and wouldn’t care so much. But as a friend is currently doing an internship at fb, I put a little more thought on the matter and actually watched through Mark Zuckerbergs keynote presentation at F8.
So.. the idea is basically that a user’s profile page shows a timeline from their birth up to the present, with all important key events of one’s life neatly lined out for your friends to browse. Web developers praise the technical execution, mothers will go “Aww” at all the baby photos, and the average user just enjoys another exiting web-toy to play around with. Everyone’s happy, right?
Well I, for one, would like to caution everyone to a healthy amount of skepticism towards these changes!

The media’s reception has been somewhat critical [1][2], and arguments have been made mostly about security and privacy concerns. I try not to be too nitpicky here, but note that the media loves to mess up all these terms, blur the line between very distinct problems, and add in meaningless 1984 references where they are entirely inappropriate. Concerns about ‘who shares how much information with who’, are certainly reasonable, but as they have been preexisting, I will gladly skip them here. Instead I want to mention a point, that hasn’t been brought up very often and might sound a little far fetched at first: Obsolescing real life interactions with software.

The issue I see with timeline is that it will compete with real-life interactions. Worse, it will often be the better option.
Zuckerberg explained how your profile page would be the “opening 5 minutes” of a conversation: your work, where you went to school, your relationship status. The wall would be the next 15 minutes of a conversation: what you have been doing recently in your life. In that analogy, timeline relates to “all the rest”.. which I consider kind of scary: facebook tries to capture the entirety of every conversation you will ever have with everyone. The proposed gain here is that newly made friends can see a “summary of you”. Facebook wants to be all about presenting yourself to the outside world. You will see one interesting detail by extrapolating the trend between profile, wall, and timeline: the requirement of “completeness”. Facebook wants to eliminate the gaps. If its an aspect of your life, it should be part of your interactions on facebook.
And my point is: The scary part is not visibility concerns; its the fact that it could actually work. Since we have computers, we boost our efficiency with software. Now we simply reached the point where we also optimize social interactions.
Reading someone’s timeline on facebook could be way more efficient than an actual conversation. And our need for time-cost-optimization will make this a useful tool. Without wasting too much thought on whether this is inevitable or not, we could at least ask ourselves if this is something we want.
Isn’t the charm of meeting new people that they aren’t open books? In the offline world, you get to know people over the course of many conversations, and through time and setting gradually discover new aspects of their personality. Worse, we tell the same stories of our life over and over, because in the offline world we are restricted to conversions between small groups of people. What if this terribly inefficient process will gradually shift to online interactions?
The hypocrisy is that facebook wants to be all about improving human connections – and yet relationships become more dehumanized. When I check in a movie on imdb, and after layers of layers of statistical filtering, a friend sees this in his newsfeed, facebook regards itself as the saint of spreading culture and friendship. Yet, both of us interacted with an application. I might be old-fashioned but I don’t see this in any way equivalent to telling a friend of a good movie I saw.
Mind you, I’m not your mom, telling you to sit less in front of your screen and go out see the sun. Such a conservative point of view – wanting to restrict social interactions to real-life – is too naive in the internet age. The way we communicate has changed, and will continue to do so in the years to come. What I want to defy is the cruel rationalization and centralization of social interactions and friendships.

So am I advocating for retreating from facebook? Not exactly.
Firstly, I’m not rating the product here; other platforms deal with just the same controversies, and denying their existence is not going to solve anything.
These issues here are sociological paradigm shifts, and I feel that most people just aren’t aware of their relevance. History books of the future will certainly talk about this, and we are right in the midst of it. What scares me is the way people tend to sheepishly follow any direction the big companies impose. The message of this, if there is any, is simply that users of social networks should be more conscious about the changes that are happening to human communication – and that not all of them are for the better.