I have seen the term vanilla version used seeral times. For example, I have seen the term on the Lasagna-users google group, where a user mentions the term:  vanilla CNN package. So, when is a software called a vanilla version, and what should it have for it to be called it (or distinguish it from being a vanilla version)?Explanation can be done by taking a software/library in mind.
What is a vanilla version, and what should software have to distinguish it from a vanilla version?
terminology
In context, software is vanilla when it's ordinary: that is, it isn't customized or expanded upon. It comes from the ice cream flavor vanilla which to some is considered to be ice cream's default flavor.Some examples of vanilla in software:Consider a customizable text editor like Sublime Text: vanilla Sublime would be running it without any plug-ins.Take a video game like World of Warcraft: vanilla World of Warcraft is the game as it was prior to the release of its expansion sets.Consequently, software stops being vanilla when it's been customized or expanded upon to suit a specific purpose.So, a vanilla library may be one that does the absolute minimum to implement a specification, while a non-vanilla library would be one that takes it one or more steps further and does something above and beyond what the vanilla counterpart does.