In this tutorial, we’ll study vanilla software and programming.
2. Software Categorization
We can categorize a piece of software based on the degree of customization as vanilla or non-vanilla:
2.1. Vanilla Software
Vanilla software contains the basic functionality and has no customizations.
In other words, every vanilla software is generic. It has only the features that were available upon its release.
However, most vanilla programs allow users to customize them. To do so, we add domain-specific features through various plugins and add-ons. Most of the time, customization requires us to buy special licenses.
2.2. Non-vanilla Software
That brings us to non-vanilla software. Non-vanilla software is customized software adapted to a specific set of users. Apart from the generic functionalities available in the basic version, it contains specific functionalities tailored to our specific needs.
For example, upon installing the latest Ubuntu distribution, we get a vanilla setup. Each installation has the same functionalities. However, if we configure the kernel, then we change the vanilla setup to a customized distribution.
3. Code Categorization
Similarly to software, we classify code as vanilla or non-vanilla. However, the criteria aren’t the same.
3.1. Vanilla Code
Vanilla code uses only native constructs of the chosen programming language. It includes no frameworks, external libraries, or plugins.
For example, let’s say that our problem is to sort an array of numbers. If we develop a sorting algorithm such as quick sort from scratch, we’ll say we’ve got a vanilla code.
3.2. Non-vanilla Code
Our code is non-vanilla if it integrates third-party libraries or add-ons. For instance, if we use a sorting routine from an external framework or library (such as the sorting module in Python), then our program will become non-vanilla.
In this article, we explained the meaning of vanilla in programming. Vanilla software is generic, whereas non-vanilla is customized or custom-made. When it comes to programming, vanilla code uses only the basic features of a language. In contrast, non-vanilla code uses external libraries and frameworks.