I've been working a lot lately towards the concept of a modern application. What exactly makes an application modern? Is it the UI? What about the platform the application runs on? Is modern just a feeling the user experiences? If so, what determines that the experience is modern?
These questions make me think that what determines something is modern is all of the things questioned above. A modern application must have a modern user interface that runs on a modern platform. OK, that's fine, but what exactly is a modern UI? If you take a look at the Yahoo! Design Pattern Library they define almost every type of pattern that you may find on a website. They then show what a modern representation of that pattern would be. Almost none of the listed patterns can be represented very easily on a classic Domino based website. However, almost all of the patterns are represented with the extension library or dojo or jQuery in some form or fashion.
With the above about classic Domino websites being said, an argument can be made that complexity is not modern and simple is. Take a look at Google+, Facebook, Yammer, Twitter and LinkedIn. These are fairly simple UIs driving complex concepts. If tens of millions of people use these sites with no support they must be simple right?
Of course we don't stop there. What else about an application can be determined to be modern? What about it's data delivery mechanism? This does kind-of fit into the platform category I guess. But the application should offer a variety of methods for interacting with it either internally or externally via REST services. These REST services could provide an API for getting the specific data you are looking for in order to make adding additional features easy in the future. Also to that concept, if the data you provide via REST is available to other applications it's easier to surface relevant data in other applications also. If you already have a means of delivering the data to a feature (internal or external), that feature is that much easier to incorporate, right? The Extensibility API coupled with the Extension Library allows us to develop custom REST services to meet whatever need may arise in this area.
We're starting to paint a fairly decent picture of what can be determined to be modern:
- Simple UI
- NOSQL data store
- A platform that helps speed up development by making it easy to use modern design patterns
- A platform that allows delivery of data via REST Services
- The Extensibility API and the Extension Library
Continuing the tools available to us….. NOSQL is a great pattern for web applications. As an XPage developer you are no longer tied to the nsf. We've got MongoDb, CouchDb, Neo4j and others. There is no limitation to what you can use as a data store. If you want traditional SQL relational databases those can also be used. The sky is the limit when it comes to data sources available for you to use to drive your XPages applications.
This is but a brief overview of the concept of "Modern" but I think it brings up a few good points to keep in mind when taking on your next project. I hope this helps you make better decisions about what is available to you and how to approach a modern project.