Programming Languages

This Week in Programming: Revolutionary, Insane, or Just Plain Terrible?

21 Jul 2018 6:00am, by

Let’s kick this week off with a discussion over at /r/programming sparked by a Quora answer that describes Spotify’s “revolutionary (and kind of insane) solution of using self-contained iframes to increase team autonomy.” The question asks how JavaScript is used in the Spotify desktop app, how it deals with retrieving various assets, and, when needed, what VM is used.

According to Mattias Johansson, a former software engineer at Spotify, rather than dealing with deciding on uniform frameworks across the whole company, Spotify instead uses iframes to isolate numerous micro-web applications within the main Spotify web app. The architecture is meant to enable individual teams to work quickly and independently. Read on:

“This organization structure, combined with the global-ish nature of JavaScript in the browser, has made us build the desktop client UI out of many small, self-contained web apps called Spotlets. They all run inside Chromium Embedded Framework, each app living within their own little iframe, which gives squads the ability to work with whatever frameworks they need, without the need to coordinate tooling and dependencies with other squads,” writes Johansson. “While this approach has the disadvantage that we have many duplicate instances of different versions of libraries, increasing the size of the app, but it offers the massive advantage that introducing a library is a discussion between a few people instead of decision that involves ~100 people and their various needs. Not only would such a big discussion extremely time-consuming and hard, it would also force us to use a least-common-denominator approach to picking libraries, instead of picking the ones specifically tailored to the problem domain of each squad.”

In addition to giving autonomy to the teams, err, “squads,” the method also allowed for these “spotlets” to be released independent of full app upgrades and instead deployed in real-time “into the running clients of users.”

Now, I thought this whole idea was a novel, if somewhat bloated, way to make web development easier for numerous teams with different goals. Why take all the time to force each team to use the same things, when instead each could work to their strengths? After all, Johansson explains that “while teams are autonomous, there is functionality that we all would like to share because we explicitly want it to work the exact same way in all apps. For instance, we have a CSS framework called GLUE.” So, it’s not a total free-for-all, right?

And then I got into the Reddit comments, which range from the OP’s assertion that this is a “seemingly insane/insanely brilliant solution” to another that calls the method “a heavy-handed and crippling solution.” Another still asserts that this is neither insane, nor brilliant, nor anything particularly outlandish and new, but rather a method known as Self-Contained Systems (SCS), which is “an architecture that focuses on a separation of the functionality into many independent systems, making the complete logical system a collaboration of many smaller software systems.” The SCS site lays out eight foundational rules to govern how these individual applications should be designed to ensure everything works as it should and help avoid “the problem of large monoliths that grow constantly and eventually become unmaintainable.”

In the end, I found myself wondering — which is it? Is this approach revolutionary, insane, or just plain terrible? Whatever it is, it’s also terribly interesting, in my humble opinion.

This Week in Programming

  • Microsoft’s Visual Studio IntelliCode Learns Conventions for C#: Microsoft brings us a bit of news on the AI-assisted coding front this week, with the announcement that Visual Studio IntelliCode now infers coding conventions for consistent code. If you’ll remember, IntelliCode was first announced at Build 2018 a few months back and now the IntelliCode Extension has been updated to enable coding convention inference for C#. Put simply, what the extension now does is scans your existing code to learn your conventions and then alerts you when you write code that violates those conventions. In its announcement, Microsoft notes one of its own studies to back up the utility of this feature, stating that “18 percent of pull request review comments were related to coding conventions, styles, and naming issues.” To try it out, go ahead and download the extension.
  • Google Makes Using Kubernetes Even Easier: For those of you who remember using Cpanel and installing things like WordPress of phpBBS, then this week’s announcement by Google may sound familiar — though with far more feature-full bells and scalable whistles. The company has introduced commercial Kubernetes applications in GCP Marketplace, meaning you can now “find the solution you need in Google Cloud Platform Marketplace (formerly Cloud Launcher) and deploy quickly on Kubernetes clusters running on Google Cloud Platform (GCP), Kubernetes Engine, on-prem, or even other public clouds.” These apps, which include developer tools like Gitlab, CloudBees, DataDog and many more, “support usage-based billing on many parameters (API calls, number of hosts, storage per month), simplifying license usage and giving you more consumption options.” (Gitlab just made its own announcement on this, focusing on the ability to install “with a single click“.) Oh, and if you’re thinking about joining up, Google is offering free trials from select partners that can be combined with their $300 sign-up credit.
  • Amazon Translate Doubles Its Languages: Just a quick note here that Amazon Translate has added support for Japanese, Russian, Italian, Traditional Chinese, Turkish, and Czech, doubling the number of languages it supports. Amazon Translate is a translation API that was first released in 2017 and the company has plans to add support for Danish, Dutch, Finnish, Hebrew, Polish, and Swedish in coming months. Currently, the feature is available in US East (N. Virginia), US East (Ohio), US West (Oregon), and EU (Ireland) and AWS GovCloud (US).
  • Google Increases Search Analytics API Requests 5x: And another quick note, Google has updated its Search Console Search Analytics API to “support the retrieval of 25,000 rows of data per request, up from a previous limit of 5,000 rows per request,” as well as “increasing the number of rows that can be returned per request”, adding 16 months of data to the API. If this is of any interest to you, Google has a guide on how to use the API without exceeding quotas.
  • Go Adds Modules in Go 1.11: The next version of the popular Google-backed, open-source language Go will get modules in Go 1.11. The release is expected in the next month and will add experimental support for “modules”, according to the story in JaxEnter. Citing a thread on the Go Google Group, and a trial run by Heptio staff engineer Dave Cheney, the story explains that modules will be supported by the main repo and will make it possible “to work on your modules, wherever you like, without setting an environment variable or following a predefined location.” According to Cheney, “With Go 1.11 and modules you can write your Go modules anywhere you like [and] you’re no longer forced into having one copy of a project checked out in a specific subdirectory of your $GOPATH.”
  • Python’s Empty Throne: As we noted last week, Python’s “Benevolent Dictator For Life” (BDFL) Guido van Rossum announced he would be taking a “permanent vacation” after a particularly divisive debate over the adoption of a PEP (Python Enhancement Proposal). In the announcement, van Rossum said that he would not appoint a successor, and this week JaxEnter takes a look at the discussion among core Python developers in the time since, asking if there will be a new BDFL or if a democracy will be the best option moving forward. Options currently on the discussion table currently include moving to “’majority wins vote’, dictator per PEP, a triumvirate of ruling elders, or another dictator that will make all the sole choices.”

Google and Microsoft are sponsors of The New Stack.

Feature image via Pixabay.

A newsletter digest of the week’s most important stories & analyses.

View / Add Comments

Please stay on topic and be respectful of others. Review our Terms of Use.