The server powering the CPS-VO deployment is currently a Dell PowerEdge r515:
This server hosts 4 Virtual Machines:
The software architecture of the VO comprises a large suite of open-source technologies.
In the following sections, we progressively walk through an overview of each of the layers, proceeding from the lowest systems level software, to the upper application-specific codes.
The CPS-VO collaboration framework is hosted within a VMWare virtual machine. Presently, we are running VMware ESXi version 5.
VMware, however, is not a strict requirement. There are several open-source, or otherwise free, alternative hypervisors on the market.
By using virtualization techniques the process of creating a clone of the VO is simply a matter of shutting down the virtual machine and copying a few files.
The operating system driving the VO collaboration framework is Ubuntu, the world's most popular free, open-source, enterprise-level linux server derivative. In addition to the base operating system, the primary systems-level software packages are:
The VO collaboration platform is built on top of the open-source Drupal content management platform, which powers millions of websites and applications. It's built, used, and supported by an active and diverse community of people around the world (including a dedicated Drupal Security Team, which is 40 strong). Presently, we use version 6 of the Drupal CMS.
The architecture, installation, configuration and maintenance of Drupal-based content management systems is well documented at http://drupal.org, but we summarize the essential ideas here. The Drupal architecture is defined by a series of abstraction layers, along with an extensive and well documented API for extending and modifying default behaviors.
"Effective Web design is driven by the need to balance flexibility and simplicity. If a system is too simple, it can only be used for a single purpose - but if it is too flexible, it may be too difficult for new users to learn. Drupal strives to reconcile these conflicting goals by providing its users with the tools they need to make their own content management solution, while still providing some pre-built components to help them get started. Thus, it can be described both as a content management system (CMS) and a content management framework (CMF) - one system which strives to have the strengths of both, without their deficiencies. Most CMS's are like a toy boat or truck - specific assumptions have been made about their use, assumptions that would be hard for you to override. Frameworks, on the other hand, provide you with raw materials only - you need to know a programming language and have a clear design vision to put them together. Drupal is like a Lego kit. Skilled developers have already made the building blocks - in the form of contributed modules - that you need to create a site that suits your needs, whether that is a news site, an online store, a social network, blog, wiki, or something else altogether."1
Type |
Description |
---|---|
Bibliographic Reference | Allows members to add bibliographic references to groups in which they have membership. Biblios can be added manually or imported from BibTex. |
Event |
Events are special because they have a start date/time and an optional end date/time as a first-class concept. |
File |
Files allow uploads of documents and other pre-existing content. |
Forum topic |
A forum topic is the initial post to a new discussion thread within a forum. |
Group |
The basic unit of organization for adding new virtual communities to the VO. |
Group Project |
Used for documenting research projects relevant to some Special Interest Group. |
NSF CPS Project |
Used to build the catalog of NSF CPS research projects. |
News Item |
News items are more ephemeral forms of information than Pages. They are ideal for creating and displaying content that informs or engages website visitors. Press releases, site announcements, and informal blog-like entries may all be created with a news item entry. News entries may be automatically featured on the site's or on a group's home page. |
Online Meeting |
A virtual teleconference/desktop sharing session. |
Page |
A simple web page for creating and displaying information that rarely changes, such as an "About us" section of a website. By default, a page entry does not allow visitor comments and is not featured on the site's initial home page. |
Panel |
A panel layout broken up into rows and columns. Used for building Dashboards with various content embedded within the rows and columns at specified locations. |
Story |
Deprecated |
Tearline |
A content type that differs from web pages in that there are separate sections, each with differing access permissions |
User Profile |
Used to track basic data and meta-data for individual users (e.g. place of employment). |
Video |
Used for embedding videos hosted at sites such as youtube or vimeo. |
Webform |
Create a new form or questionnaire accessible to users. Submission results and statistics are recorded and accessible to privileged users. |
Wiki page |
A version of web pages that supports hyperlinking by symbolic names, rather than explicit URLs. |
Finally, the last component of an instance of a VO is it's data. This includes, for example all of the web pages belonging to a site, as well as the list of validated users that may log onto the site. As with configuration settings, the data within an instance of a Drupal website is stored in a series of database tables.
1. Quoted from http://drupal.org/getting-started/before/overview
2. List of module pre-requisites for the VO collaboration framework
3. List of some of the Views defined by the VO collaboration framework
The VO collaboration and content management system is a large and complex software system consisting of many layers that require configuration and maintenance.
Later, in the final chapter, we will discuss the process for an initial installation of a VO, which requires expertise in operating system administration, networking, and database management.
Once the basic software is deployed, it is time to install, configure and customize the various modules and themes, which were reviewed in the previous chapter.
Using drupal.org's module search engine, a site developer can quickly find the official homepage of all of Drupal modules that have been published to the open-source community.
Each module comes with specific instructions for its installation and configuration procedures in a bundled README.txt file.
The above figure shows an example README for the node_clone module, which allows one to quickly make copies of existing content.
Once installed, however, it is frequently the case that, while the module is useful, its behavior needs to be extended in some way in order to better meet the needs of the CPS-VO community. In the case of the node_clone module, for example, while it can copy most simple content types, the concept of Groups has been greatly extended from the notion of groups that come with a vanilla, out of the box Drupal installation. Using Drupal's hook system, however, a software developer can define a new module that intercepts certain events generated by the website in order to override or complement the behavior of existing module(s). This is particularly useful for tying together multiple modules, which were developed in isolation and are not aware of one another, so that they behave in a more coherent fashion. The following figure show the info file for a custom CPS-VO module.
This info file declares that the cpsvo_groupclone module is dependent upon three other modules (viz. clone, og_vocab, & og_panels). In addition to the info file, the cpsvo_groupclone module contains a module file that contains PHP code, which defines the module's behavior.
In this example, we intercept Drupal's node_save event for the Group content type, and in addition to cloning the group node itself, we also look up all of that group's taxonomies and its panels from the database and iteratively clone each of those items as well, associating copies of each to the newly cloned group. This gives us the ability to have push-button initialization for a new group, based on previously defined template groups, without the tedious overhead of manually initializing the new group's taxonomies and its services (e.g. discussion forums, group homepage, membership listing, ...).
While code developers typically work from the backend, using software development tools such as version control and PHP code editors, there is another class of support staff whose expertise falls along the lines of web design. These site administrators work primarily with Drupal's web-based administrative front-end to maintain basic configuration settings, and with CSS stylesheets and graphics files for maintaing the sites visual look and feel.
Below is an example screenshot of the web-based configuration page for the node_clone module.
Additionally, each module defines a set of permissions for its various features, which the site admin must map to the various roles assigned to each class of users. In the following screenshot, you can see that we restrict the ability to clone a group so that only site administrators have access to this feature.
The next level of support staff required to maintain an evolving virtual organization is that of the individual group moderators and managers.
Group managers do not have the ability to perform site-wide configuration duties, but they do have full control of their own local group. This includes the ability to edit, delete, or roll back (i.e. to a prevous version) any content that resides within their group. The chapter titled Form & Manage Groups lays out the details for this role.
This covers the four layers of the archetypical support roles. Next, we delve into more details of the systems administration tasks at the lowest layer.
Joining the CPS-VO by founding a new group was covered previously in the chapter titled Form & Manage Groups. Here we discuss creating a new Virtual Organization from ground zero.
In the upcoming sections, we discuss options for instantiating a new Virtual Organization, which is based upon the CPS-VO project's open-source codebase. A detailed description of the process for replicating the CPS-VO on a local workstation or laptop to be used for software development is given here.
Drupal's multi-site features allow one to easily associate a new domain name to the existing CPS-VO infrastructure. Multi-site installations leverage all existing computing hardware, networking infrastructure and system administration staff resources. Additionally, since multi-sites share the same codebase, all future software development and code maintenance for the core CPS-VO modules are shared with sister sites with little additional overhead1. Given that multi-sites share all resources all the way up to, but stopping short of, their Drupal configuration, the installation process for this mode of operation is far easier.
Alternatively, one may instantiate a new virtual organization at a physically separate site, assuming the requisite computational infrastructure and administrative personell are available. In this case, however, a snapshot of the VO codebase is forked off, and there is no automated support for managing future software upgrades. The process for creating a new Virtual Organization is a subset of that of setting up a development environment outlined above, where the difference is that Drupal's configuration and site content will not be replicated from http://cps-vo.org.
1. It is still possible to develop new, customized features on a sister site that is isolated from the core CPS-VO activities.