What is Functionality? A CM Domain White Paper By Bob Boiko
Transcription
What is Functionality? A CM Domain White Paper By Bob Boiko
What is Functionality? A CM Domain White Paper By Bob Boiko This white paper is produced from the Content Management Domain which features the full text of the book "Content Management Bible," by Bob Boiko. Owners of the book may access the CM Domain at www.metatorial.com. This paper retitles chapter 4 of the CM Domain Table of Contents Table of Contents__________________________________________________________________2 What Is Functionality? ____________________________________________________________2 Monolithic Vs. Mix-and-Match Functionality___________________________________________3 Functionality Interspersed with Information ___________________________________________4 Managing Functionality Like Information _____________________________________________5 Publishing functionality on the Web _______________________________________________6 Where information and functionality diverge ________________________________________7 Summary _______________________________________________________________________7 Since the time computers first entered organizations as accounting and manufacturing automation systems, the industry's seen a steady movement toward computer-based business processes. Today, a worker in an organization commonly spends her entire day "doing business" in front of a computer terminal. Inside organizations, business is largely electronic. Until recently, however, the movement of information between organizations was slow. Organizations and their partners were often on different internal systems and had different processes and standards that don't easily translate across company lines. Between organizations and their end users (customers, members, media contacts, and industry watchers), the basic connectivity that would enable the end-user computers to communicate with the organization's computers was largely absent - until the advent of the Web. With the Web and the open standards it engenders, the way is now clear for making the transition to computer-based business processes among organizations and their partners and end users. The Web provides both the basic connectivity for end users and a "lingua franca" that enables different computer systems to communicate. Today, business functionality can extend far beyond the office to reach anyone with a computer and an Internet connection. The way is clear, but the road is still rough. But as you see in this white paper you can go a long way toward making all your business electronic by applying a content model to computer functionality. What Is Functionality? In the software world, a computer-based process is known as functionality. The functionality that a computer application offers casts a human process into a series of human-computer interactions using a user interface. From the standpoint of the organization, you can say that functionality is the way that you do business by using a computer. Simply put, functionality is the stuff that you do on the computer. Unlike text, sound, pictures, and motion, which you experience (by reading, hearing, or seeing), you do functionality (by requesting or responding to something). A user interface represents functionality as a set of buttons, menus, dialog boxes, and other controls that give you a particular capability. Microsoft Word, for example, provides table functionality. The functionality is available from the Table menu at the top of the Word window. If you choose the Table » Insert Table command, Word displays a dialog box full of buttons and other controls that enable you to specify how you want the Insert Table functionality to perform. On the Web, functionality is programming code that lives in a Web page or on a Web server. It does useful things such as performing calculations, allowing you to submit data via a form, carrying out financial transactions, verifying your credit card information, and so on. Functionality's taken the following two major steps over the course of computing: CM Domain White Paper Bob Boiko Copyright 2002 Metatorial Services Inc. & HungryMinds Inc. Do not reproduce without permission. Page 2 ?? It's moved away from monolithic programs, where all the functionality is built-in, toward mix- and-match programs, where the functionality exists in small chunks known as objects. ?? It's moved away from applications with the single purpose of presenting functionality toward Web sites in which functionality and content intermingle and become hard to tell apart. Taken together, these two steps enable you to treat functionality as a form of content. Monolithic Vs. Mix-and-Match Functionality In the early days of computing, all the functionality of an application was built into the application. The application's programmers coded all their own functionality from scratch. Today, much of the functionality that an application provides comes from outside the application itself. It's created and packaged into functionality objects that programmers then glue together into an application. Computers entered the organization one process at a time. First came accounting and manufacturing systems. Then came spreadsheet and writing applications. Today hundreds of different types of computer applications are used in organizations. Because of the way they entered organizations, however, these applications were often unable to communicate with other applications, they duplicated the functionality of other applications, and couldn't easily integrate with each other. Because of this incompatibility, much of an organization's functionality is today locked in silos of distinct applications that don't easily operate with one another. Most newer applications take solid steps to break down the borders of different applications. Communication standards (such as XML) provide a standard accepted map among the different vocabularies and methods of various applications. Open programming standards such as the Application Programming Interface (API), object-oriented programming, and Remote Procedure Calls (RPC) ensure that interoperability is built directly into the core of modern applications. The result of the newer application models is that knowing or caring about the application that hosts a particular functionality becomes less and less important to you. You merely need to know how to connect to, and use, the functionality that you need. Conversely, building complex applications that combine the best functionality and data from a variety of sources is becoming easier and faster than ever. Today, programmers pack pieces of functionality into programming objects. Objects serve as a standard way to package and transfer functionality. Every object programmer knows exactly how to access the functionality in an object and to include the object in her own programs. In fact, many programs (especially those on the Web) do nothing more than draw together a set of previously created objects into a customized look-and-feel. My notion of content components shares a lot with programming objects. In fact, content components serve the same basic function as programming objects. They both provide a level of isolation between the person who creates them and the person who uses them. If I create a content component or a programming object, for example, I give it a set of attributes that enable it to take on a life of its own. Later users of the component or object find it and use it based on these attributes (that is, the metadata for components and properties and the methods for objects). They know that the component or object serves the purpose they intend for it and don't need to look inside the component or object to see what it contains or how it works. Functionality that you package in objects can have the following characteristics: ?? Segmented: Functionality can come in chunks as small as you like. (Small in the computer world means not taking up many bytes, not requiring much of the computer's processing power to run, and not requiring a lot of supporting hardware or software to run.) ?? Shared: You can easily locate and use the functionality that someone else created apart from the application that they originally intended it for. CM Domain White Paper Bob Boiko Copyright 2002 Metatorial Services Inc. & HungryMinds Inc. Do not reproduce without permission. Page 3 ?? Encapsulated: To use the functionality in your application or Web page, you don't need to know how the functionality works; you need only know how to invoke it and what sort of results it delivers back to you. These three attributes of modern computer functionality pave the way for treating functionality as content. Functionality Interspersed with Information Before the multimedia age, the state-of-the-art computer application used a graphical user interface (GUI) consisting of buttons, menus, and a small set of other program controls that gave the user the capability to interact with a given program. The application's aesthetic was efficiency of space and parsimony of language. Programmers prided themselves on their ability to use as few pixels as possible to convey the meaning of each action. Long explanations and anything else that you might consider content was relegated to the system documentation. Multimedia applications began to overturn this aesthetic, and the Web destroyed it. After users stopped working with data and started working with content, the assumptions of how to create an application shifted, too. Interspersing text, pictures, and sounds with application functionality became not only acceptable, but also standard. And although the small set of standard program controls never disappeared, a whole host of other controls appeared to deal with the interesting new needs of content applications. The text hyperlink and the hyperpicture, for example, weren't part of the classic GUI, but were added later to deal with the need to link from one piece of information to another. In the old world, the premium was on parsimony. Applications had terse menus, well-ordered and trim dialog boxes, and buttons with one word or less (such as Del instead of Delete) on them. On the Web, a new aesthetic has taken hold. If the old style was Spartan, then the new one is Attic. On the Web, the menus can come with a paragraph of text. Dialog boxes are interspersed with pictures, ads, text, and links to other sites and applications all across the Web. The "buttons," in the form of linked images, stretch all the way across the screen. The result is a tremendous amount of mixing between content and functionality, and a blurring of which is which. In the older software applications, the programming code that creates functionality was packed deep inside executable files (EXEs). On the Web, you can type computer code directly into HTML (today's basic language that you use to create Web pages) just as you can any other content. Although this mixing of content and functionality has caused untold thousands of all-nighters by frustrated programmers who pine for the good old days of neatly encapsulated programs, it's also provided the capability to create an entirely new way of thinking about an application. In the past, an application was a single, defined thing. Applications changed interface or functionality only once every year or two, when the creators made another product release. On the Web, not only can you change interface and functionality, but you're fully expected to do so. A good site delivers personalized functionality based on what it can infer about the user. The same functionality may show up in different contexts, and a particular function may even be represented with different controls, depending on the situation. On the Web, functionality and content are mixed and matched to whatever extent the site owners can manage. It's a management issue. To mix and match content and functionality, you must be well organized. You must have a lot of structure in place that enables you to efficiently store and deliver your functionality where and when you need it. In short, you need a CMS. Functionality objects enable you to treat functionality more as content. The new aesthetic, of content-rich applications that provide personalized functionality to the user, demands the use of functionality as content objects. Luckily, you can use the same tools and processes to manage functionality as you do content. CM Domain White Paper Bob Boiko Copyright 2002 Metatorial Services Inc. & HungryMinds Inc. Do not reproduce without permission. Page 4 Managing Functionality Like Information Content management consists of collecting, managing, and publishing content. I define content as information that you enhance with data and put to a particular use. I can now extend the definition of content to include functionality that you've packaged for reuse in objects or in blocks of programming code. To illustrate this notion, look at a piece of information and a piece of functionality that you must manage: Suppose that Wingnuts, Inc., wants to make people aware of upcoming marketing events. People, in this case, means staff, partners, and customers. Making aware means listing the appropriate events on the company's intranet, on the Internet, and in e-mail messages. The following events functionality is available to Wingnuts in a programming object: ?? Listing event descriptions. ?? Showing the details of a single event. ?? Creating a new event. ?? Deleting an event. The information that the object can provide for an event is as follows: ?? A name. ?? A location. ?? A date. ?? A description. ?? A picture. ?? An owner. ?? Target customer type. ?? Marketing purpose. You can imagine that, for the different combinations of person and outlet (which refers to audience and publication in CMS-speak), you must use the appropriate set of functionality and information, as follows: ?? Staff should be able to list, show detail, and create events on the Internet or intranet. If any staffers are the event owners, then they should be able to delete them, too. Staff shouldn't be bothered by e-mail and should see all the information associated with an event. ?? Partners see events only on the Internet site and in e-mail messages. On the Internet, they should be able only to list and show details of events. The information that they see on the Internet shouldn't include the marketing purpose of the event. In e-mail, they should see only a list of events, but each list item should contain a link to a page on the Internet site that shows the event detail. ?? Customers (like partners) see events only on the Internet site and in e-mail messages and should have only two options on the Web, list events and show event detail functions. How much difference exists between the way that you must manage functionality and the way that you manage the information? First, notice that you do need to manage both the information and the functionality. You need to publish both in the same three publications (the intranet site, the Internet site, and e-mail messages). You need to store both in a way that you can access a subset of their parts. Finally, you need to subject both to the same rules that determine which parts are available to whom and in what publication. CM Domain White Paper Bob Boiko Copyright 2002 Metatorial Services Inc. & HungryMinds Inc. Do not reproduce without permission. Page 5 Both functionality and information are kinds of content that you need to create, store, and access in such a way that you can target and format them appropriately for publication. With functionality, as with information, you can tackle the problem of managing - multiple publications by hand or by using a CMS. Publishing functionality on the Web Because you bring functionality onto a Web page via blocks of text, you can treat that functionality as just another type of content to publish. If you look inside a Web page, then you see that everything in it is text. In HTML, for example, the following text block causes a button to appear on the page. The button, after someone clicks it, initiates a search: <input type=submit value=Search> If you want the same button on ten pages, then you simply include the same text block on each page. The next text block calls a Java applet onto the page. An applet is a "miniapplication," or, as I call it in this white paper, a functionality object. The following code passes the applet all the information that it needs to do its job: <applet code="Events.class" width="468" height="234"> <param name="User Type" value="Staff"> <param name="Pub" value="Intranet"> </applet> The <applet> tag tells you which Java applet you want on the page, and the <param> tags pass the applet all the information that it needs to perform its functions correctly. In this case, you can probably guess that this applet lists events and can behave differently based on the user type and publication. You really see no difference between storing the block of text that invokes this applet and storing a block of text that describes an event. Moreover, no extra process or software is necessary to embed this block of functionality in a container that tells a CMS what the functionality is for, to whom it applies, its status, and on what pages to include it. The same process that you use to create a content component from a block of information you can also use to create a component from a block of functionality definition. Whether it's delivering functionality or information onto a page matters not at all to a CMS. Of course, I don't discuss a lot of details here, such as how you package and deploy the events applet and exactly how you go about storing complete code blocks versus dynamically filling in the correct parameters. But that's not my task at the moment. The point that I hope I'm making here is that if you store a functionality generating text block and call it into publications, then you're making it into just another kind of content component. Even at the highest level, the similarities are solid. Whether you're managing information or functionality, you make an agreement with the creator or owner that enables you to capture her valuable creation; you devise a way to store what you collect; and you devise a way to deliver the creation electronically to the people who need it. As you see in more detail throughout this white paper, a CMS provides the following capabilities— and more— for effectively managing and delivering functionality: ?? The CMS repository provides a place to store the code chunks that provide the functionality. ?? The CMS metadata facilities provide a way to tag functionality so that you can effectively store, locate, and select it for use in a particular page. CM Domain White Paper Bob Boiko Copyright 2002 Metatorial Services Inc. & HungryMinds Inc. Do not reproduce without permission. Page 6 ?? The CMS workflow system provides a way to wrap the functionality in a process for reviewing and approving it. Many CMS systems actually supplant the source code management systems that programming organizations traditionally use. ?? The CMS templating system provides the capability to locate a particular chunk of functionality on a particular page based on the user, or any other rules that you may use to place information on a page. In addition, the templating system enables you to customize the user interface of the functionality based on rules that you design. You may present the beginner's interface or the advanced interface, for example, based on the perceived computer savvy of the user. Where information and functionality diverge Where information and functionality management diverge is in the details, as the following list describes: ?? To collect content, you work with authors or bulk content sources. To collect functionality, you work with application developers. Instead of making an agreement with a person to deliver a certain type of information, you make an agreement with a programmer to supply software code segments that create the functionality. You also make an agreement with a system administrator, who assures that, when the code runs someday, the database or other system that the code works with is available and ready to respond. ?? To manage content, you send it through a variety of workflows that ensure its accuracy, connection to other content (metadata), and relevance. To manage functionality, you send it through a variety of workflows to ensure that it works as you want (that is, with no bugs), is the most current version available, and can connect to its data sources. ?? To publish content, you create templates that draw in relevant content chunks and navigation. You ensure that the content always makes sense relative to the other content that surrounds it. To publish functionality, you create templates that draw in and integrate code chunks with the surrounding code in the template. You ensure that any supporting code registers on the Web server and is ready for the code that you draw into templates to call it. You also ensure that all connections to other servers or data sources are enabled on the server. By and large, these details fall below the radar of a CMS. The biggest hurdle to overcome is the mindset change that your developers and organization may need to undergo. They, too, must come to believe that functionality is a kind of content to collect, manage, and publish just as information is. Tip People frequently ask when you would put your functionality code into the CMS repository and when you would not. One reason not to put code in the repository is if programmers are used to a different, or more sophisticated, version control system, but the CMS that you choose or build doesn't offer that level of sophistication. Summary Functionality is the capability to interact with a computer to perform a particular task. You create functionality by programming it using computer code and by presenting it in a user interface. Here are some things to keep in mind about modern functionality and how it relates to content: ?? Where previously functionality was trapped within massive programs, today it's segmented into lightweight objects and code blocks that you can share and reuse in a variety of contexts. CM Domain White Paper Bob Boiko Copyright 2002 Metatorial Services Inc. & HungryMinds Inc. Do not reproduce without permission. Page 7 ?? Where previously functionality stood separate from information, today it so intermixes with text, pictures, and other types of information that determining just where the information ends, and the functionality begins, is often difficult. ?? In construction and in presentation, functionality shares so many of the attributes of content that you have no reason not to treat it as just another type of content. CM Domain White Paper Bob Boiko Copyright 2002 Metatorial Services Inc. & HungryMinds Inc. Do not reproduce without permission. Page 8