Defining a Product Vision


A long long while ago, I was having a conversation with a good colleague of mine, discussing how to evolve the roadmap of an open-source project to define a vision and how to handle user expectations to an extent so developers could meet and deliver them.

Our conversation sort of stuck with me afterwards in form of the following motto:

Ask not what X can do for you. Ask what you can do with X.

I realize there are lots of “It Depends!” buried there. That’s fine. You have to factor in the relevant context though. This was coined, as I remember it, to embody the true open source and community spirit of a software platform and its users’ ability to extend and modify its capabilities as they see fit without any restrictions or hassle. The platform would continue to remain true to its roots while allowing adopters and deployers to take their deployments to the extreme edges of the world and build on top of it features and functionality that would be very different from the original core vision.

Very cool.

I want to say something different here. While I like that motto quite a lot and I think it says it all within the right context, I have been thinking about its complement. While it’s good and a true sign of power when deployers and users can take the platform and do absolutely whatever they want with it, it would be even more fantastic and awesome if the product did “everything” they wanted in the first place forcing them to keep their customizations to a minimum. This perhaps sounds like stating the obvious, but in my view, it’s the very delineating factor between failure and success. Evolution is key to success, and any platform or product that wishes to stay alive and stay relevant must redefine its core mission and vision every once in a while and must always be in pursuit of new ground to explore newer and exciting opportunities to help its community. There is no point in maintaining and working on a “beautiful, elegant, small design” that pushes all the responsibility and the liability to its community. If you find yourself often repeating the phrase “That’s not our core concern”, it’s time for you to joggle priorities and reevaluate concerns ‘cause those are what your community cares about. Beautiful design, more often than not, is secondary.

So, how do we deliver “everything”? How do we design the implementation of everything? Is it going to be a monolith? It’s going to be ugly? Big blob of mess and mud? Should it lead us to bloat? Must it be YOOOGE? Is nose-picking banned for the Philippines police?

I don’t know. You figure it out. All I know is that my new motto is:

Ask what X should do for you. Then ask what you can do with X.

Misagh Moayyed

Related Posts

Apereo CAS - Extending Webflows

Learn and master extending CAS 5 Spring Webflow definitions.

Apereo CAS - Administrative Endpoints & Monitoring

Gain insight into your running Apereo CAS deployment in production. Learn how to monitor and manage the server by using HTTP endpoints and gather metrics to diagnose issues and improve performance.

Apereo CAS - Custom Authentication & Attribute Sources

Master writing custom authentication handlers/schemes in CAS and learn how to design custom data sources that can produce user claims and attributes.

Apereo CAS - User Interface Customizations

A short tutorial on Apereo CAS user interface customizations, including themes, localization and dynamic views for all those who enjoy front-end development and suffer from instant gratification.

CAS Multifactor Authentication with Google Authenticator

A short walkthrough to demonstrate how one might turn on multifactor authentication with CAS using Google Authenticator, leveraging a variety of triggers.

CAS 5.3.x Deployment - WAR Overlays

Learn how to configure and build your own CAS deployment via the WAR overlay method, get rich quickly, stay healthy indefinitely and respect family and friends in a few very easy steps.

CAS 5.3.0 RC4 Feature Release

...in which I present an overview of CAS 5.3.0 RC4 release.

Apereo CAS - Identity Impersonation

You do not always have to be you. Allow the Apereo CAS server to allow you to pretend to be another person for fun and profit.

Apereo CAS - Customized Settings

Extend the Apereo CAS server to allow custom configuration properties and settings.

Apereo CAS - Handling Multiple Logout URLs

Extend the Apereo CAS server to allow for multiple logout URLs during SLO operations.