Blogs and wikis get coverage because they turn everybody into a web contributor. RSS feeds get coverage because they turn everyone into a massive consumer of web content. But mashups? Not as much coverage.
Why not? Don't people understand that mashups allow everyone to become enterprise level web programmers?!?
For example, housingmaps.com is a mashup between craigslist.org and Google Maps. It allow people to browse a map to find rooms to rent, instead of reading a mundane list of addresses. Another example is chicagocrime.org, which is a mashup between weekly Chicago crime statistics and Google Maps. It gives people the ability to browse the Chicago metro looking for high density crime areas.
The two sites work well together if you're looking to rent a room near Wrigley field...
Well, what is the big deal? Isn't this just the same thing as portals? On the surface, that seems to be true. You have a web application that takes data from two sources, then displays it to the user in new and novel ways. For example, start by searching a customer relationship management database for a specific user's information. With that information, you then search a content management system for documents relevant to that user, or an enterprise resource planning (ERP) system for information on that user's specific business needs. Do all this with J2EE standards for data retrieval, and render it with JSPs. Isn't this the same thing?
Yes... sort of...
The problem with portals, and application servers in general, was that they led us to believe that they would solve all the problems of enterprise scalability automatically. In reality, they were oversold. You still needed to know quite a bit about performance, scalability, security, backups, and maintenance to create enterprise level software with them. Application servers gave you tools to simplify the process. This was nice, but only shifted the burden of knowledge, and made software much more complex, not to mention highly dependent on a complex framework.
Instead of only needing to know how to write enterprise level software, you had to know all that plus an alphabet soup of standards, toolkits, and frameworks. Here's a short list of acronyms that a good J2EE developer should know:
OOA/D, GoF, J2EEDP, UML, NIO, SWT, JSP, JDBC, ORM, JAAS, JCE, JSSE, JGSS, GSSAPI, JSTL, XML, XSLT, JSF, MVC, RMI/IIOP, JAXP, JDOM, DOM4J, JAX-RCP, SAAJ, JAXB, JAXM, JAXR, JWSDP, AXIS, JNDI, JMS, JTA/JTS, JMX, EJB, BMP, CMP, MDB, AOP, LOG4J, JNI, JCA, JCP, JUnit, JSR69, JSR73, JSR168, and JSR170
This double requirement has made more than one developer jump ship from Java, and embrace something simpler. That makes the problem slightly worse, because now people who don't know enterprise software are developing important applications that may have limited scalability.
Enter the mashup!
The advantage of mashups is that most of the application is hosted elsewhere. Does housingmaps.com have to publish huge amounts of mapping data, or process data when a new house is for sale? No! This mashup relies on other people to do all the heavy listing. Craigslist and Google know far more about enterprise software then housingmaps ever could (no offense).
The idea is that a mashup, when correctly written, offloads all the problems of security and performance to the software better able to handle it: your application server, and your single-sign-on infrastructure. With published XML files, RSS Feeds, and an XSS-proof SOAP interface, your application servers can focus on the enterprise. And then you can finally offload some of the creation of highly dynamic business software to less seasoned developers!
Ideally, your IT department would have every resource they needed to write every application you want. In reality, this isn't the case. They are so busy making sure the code is enterprise worthy, and keeping things running, that solving business needs takes a back seat. Funny... I thought that was the entire point of business software... silly me.
Damien Katz has some harsh but fitting words for such haughty IT folks:
...most of the real work in your office is getting done by people sending around Excel spreadsheets as they wait for your grand enterprise visions to be built.
Google Maps mashed with the location of customers? Very useful for a home repair or cleaning company, but not so useful for the phone company. AT&T may be more interested in a mashup between Google Maps and the location of broken phone lines, or slow internet routers.
Best of all, these mashups do not have to be passive; they can enter new data into your systems as well as display existing data. This is harder to get right, but with the proper application of AJAX, SOAP, and web forms, you can do almost anything. No longer are you forced to wait six months for the Java guru in IT to make you a portal: you could do it yourself.
Naturally, there are a lot of 'gotchas' to doing this right. The big problems are always the same: security, performance, maintenance, and scalability.
In later articles, I will discuss what you need to do to your enterprise systems to make them mashup enabled. With the right tools, it is surprisingly easy.