Concepts in other fields

Concept is an important term in a few other fields. I’d like to hear how its usage and meaning here differs from or has similarities to these other usages

Concept in advertising and marketing campaigns - an overarching theme that quickly resonates with the target audience - this has good examples Campaign concepts: three Big Duck examples to inspire your own - Big Duck

Concept in design - a collection of styles that conveys a cohesive esthetic - there’s a very recent youtube video Open Source Design in VS Code - YouTube from the VSCode design team that mentions concepts many times - easy way to find all the occurrences is to open the transcript and use CTRL-F - Open Transcript is an option in the three dots menu along the title line - this is actually very interesting because VSCode is a software application and the term is already used in a familiar manner

Concept in programming languages - C++ is the example that comes to mind where a concept is a set of properties and constraints for a generic type that lets the compiler generate easier to understand and more meaningful error messages for types that violate a specified concept

The VSCode youtube video has a very interesting discussion at the 15:00 mark - Open Source Design in VS Code - YouTube

The designer says “We initially wanted to have this sort of onboarding experience for new users because we knew that there was a couple of concepts that were hard to figure out from the community. So things like the command palette - a lot of people didn’t really know about that. Things like the extensions - we want to make it a lot easier”

What do people here think of his two example concepts - the Command Palette and Extensions?

Would you categorize them as concepts? Or are these manifestations and specific implementations of higher-level concepts - e.g. Command Palette is a Discoverability feature - and Extensions are a Customizability or Extensibility feature

Hi Zartaj, Welcome to the forum!

The term concept is indeed widely used in many different fields. My goal was to develop the idea of concepts specifically for software, and to understand in particular what would make a concept in software something more than just a vague idea, or a feature, or a classification. I wanted my usage of the term to be consistent with the way it’s often used in software, but to give more precision and clarity to the term (along with criteria for designing concepts, etc).

The essential idea in my approach is that a concept represents a little behavioral protocol (and a structure to support that protocol) that can be defined and understood independently of any other concept. For a user, understanding the concept means understanding that protocol. From a programming perspective, a concept is a kind of service, like a microservice but more granular and fully decoupled from other services.

Yes, extension is a concept in the meta-world of applications (rather than in any particular application, in which a particular extension might offer one or more concrete concepts in its own right), whose behavioral protocol includes installing, enabling and disabling, uninstalling, etc. For example, to understand the concept of “extension” in an app, you need to know how to install one, enable it, perhaps grant it permissions, etc.—and then when you don’t want it, how to get rid of it!

The tricky design aspect of the extension concept also includes the question of how updating works (and as I mentioned in another post recently) this has been a source of serious security vulnerabilities in browsers, when people grant access to an extension that then gets bought by another developer with malicious intent.

Command palette seems to me more like a user-interface idiom, although I think it can be useful to treat certain important UI idioms as concepts so long as they have rich behavior and structure and aren’t just about presentation. I don’t know VSCode, but if command palettes includes the ability to create your own keyboard shortcuts for commands and change those bindings etc, that might begin to have the richness of a concept.