What is Modern?

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.

We've talked about the UI but what about the platform? What determines that a platform is modern or not modern? I think we have to ask what technologies are deemed modern? Going off of the web development industry: html, css, javascript, java and NOSQL are modern and certainly the current trend in web design (BTW, an nsf is a NOSQL database). All of these standards can be used in a classic Domino website, however due to the platform the complexity is very high to accomplish a modern classic Domino website.

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
  • XPages
  • The Extensibility API and the Extension Library

 So, as a developer, more specifically as a Lotus XPages developer what tools are available to us in order to assist in creating a modern application? Certainly the base of this is the Extension Library. This library provides many modern representations of not so modern patterns used in classic domino development. It's now easy to incorporate a tag cloud in an XPages application that would've taken days to incorporate in a classic domino page. We've also got dojo which is a great client side javascript platform to design modern applications with. It's dijit library is second to none. But aside from the tools IBM provided us what else is available? Well there are several good CSS libraries (i.e. Twitter Bootstrap, Blueprint, etc). These make it very easy to come up with a nice looking site and are very small in size. There is also jQuery which offers many very modern looking components out of the box and the availability of 3rd party components is amazing. jQuery's javascript framework is also very nice for DOM manipulation.

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.

Share This: