SmallTech

From Knowledgebase

"Cloud computing is like factory farming for servers. My home server is a pet."
my toot on Mastodon

Disclaimer: This article is written from my own personal experience working on big tech and small tech. I don't claim to have built the the biggest tech or the smallest tech, but I have a feel for both.

Definitions

Big Tech[1] is the collective name given to the largest tech companies in the world (as of 2021). They are also collectively referred to as FAANG by those who admire their technology and as GAFAM by those who understand their business model to be based on monopoly and surveillance capitalism. Small Tech[2] is a term that has been popularized recently. It refers to technology that is built to be the opposite of Big Tech's technology.

In this article, I use "big tech" and "small tech" in lower case to refer to the technologies themselves. "Big Tech" and "Small Tech" refer to the collection of organizations developing these technologies.

big tech vs. small tech

Centralization/Decentralization

Centralization of disempowered users into large walled gardens is a common business model for Big Tech companies. Their technology choices reflect this. Proprietary protocols are used. Interoperability is intentionally prevented. DRM is introduced into the client software to punish any attempts at reverse engineering or creating adverserial interoperability[3].

Small tech is software built by people to empower themselves. Since there is no incentive to lock-in all users into one walled garden, open protocols are used. Usually peer-to-peer protocols or protocols that support federation are used. Multiple independently developed software implementations co-exist and may even interoperate. Modification and adaptation of software to local needs is encouraged.

Software Licensing

The software produced by Big Tech is usually proprietary with extensive use of permissive open-source libraries and tools in the process. Big Tech companies avoid copyleft free software licenses like the plague and encourage permissive open-source licenses that can be easily incorporated into proprietary software.

Copyleft licensing is the norm for small tech software. When permissive licensing is used, Big Tech companies can co-opt the small tech software and change it to their requirements[4].

Scalability

Supporting large scale deployments is a primary consideration when building big tech software. This requirement drives most architecture decisions. Scale often comes at the cost of system complexity and difficulty of maintenance. Most big tech software cannot be used for small tech purposes even if they released the source code because of fundamental differences in assumptions made during the design of the software.

Small tech is usually not meant to scale, since it is built for small-scale use by individuals or small communities. This does not mean that small tech is inefficient. Small tech is built to run efficiently on small computers like SBCs and other low-powered hardware like old PCs. This design choice itself can limit how many users can be supported.

Software Development Models

Enterprise open-source software developed by Big Tech is dominated by the corporation that made it. The community's voice is ignored during the design process[5]. Requirements are driven by the corporation's needs. Feature requests and contributions are rejected if they aren't aligned with the goals of the corporation behind the software. The community's requests to remove malicious software falls on deaf ears if it hurts the corporation's profits[6]. The corporation owns the overall copyright to the software through contributor license agreements though there are contributions from multiple non-employees.

There is usually no corporation controlling the development of small tech. The copyright of small tech is usually managed by a non-profit foundation or a tech cooperative. The community's interests come first in the development and design of small tech, irrespective of whether a cathedral or bazaar model is followed in the development process.

Global/Local

Big Tech's business model requires them to follow a one-size-fits-all model. There are no compartments inside their walled gardens.

Most small tech software was made to be local software that is meant to serve a certain community's needs. Some small tech evolves to be more general. In such cases, the design is usually flexible and extensible to support varied needs of diverse communities around the world.

Tech Stack

Big Tech's software choices (and those of most large enterprises) are driven by scalability concerns. They pick a programming language that most developers already know so that they can scale up their internal development teams quickly. Their choice of development platforms is also driven by software scalability concerns. These technologies scale up very well, but might not so well in scaling down (have high minimum requirements).

Software made by individuals or small communities uses the most convenient tech stack for the job. It might not be very popular but the community of developers might be most comfortable using it. Sometimes, it could be a one developer project using a less known programming language and platform that is best suited for the project. Small Tech projects often intentionally pick certain technologies that run efficiently on low-powered hardware.

Examples

Social Media Moderation

Walled gardens like Facebook and Twitter have to use the same moderation rules for the entire planet with no nuance to regional or cultural differences. The moderation is done at scale by bots.

Mastodon, Pleroma and other federated software have a more decentralized approach to moderation. They have human moderators who understand the local context, regional affairs and the local language.

References