What is Conversant?
The Long Version
Over the years, many people have asked the question, "What is Conversant? What does it do?"
If this little bit of light reading doesn't answer that question, perhaps nothing ever will.
This document is an interactive outline. Usage guide:
- Any underlined headline can be collapsed (or re-expanded) with a single click.
- Shift-click to fully collapse (close) an "expanded" (open) headline, and all of it's sub-heads.
- Shift-click to fully expand (open) a "collapsed" (closed) headline, and all of it's sub-heads.
- Alt-click (option-click on mac) an expanded headline to fully expand all subheads.
- Try it out!
- Conversant's Feature List
- Note that this is not a marketing document. It's a description of the software.
- Some of it is technical, some is not.
- It's not exhaustive.
- A conversant "server" is the root of everything. The server is made up of the following:
- System preferences
- These settings generally control how the server operates, such was what plugins are enabled.
- Server Administrators
- These are user accounts that have full control over everything on the server. Sysops.
- Twine is our "abstraction layer" for nearly everything. It lets us change where our data is stored and how it is accessed without having to rewrite any part of Conversant itself.
- For example, Twine makes it possible store all of one site's content within a Frontier database (a .root file), another site's content in the file system, and yet another site's content in a sql database. The same is true for membership data and preferences.
- The Conversant software itself
- Conversant is basically a programming interface for interacting with various parts of the data and the plugins.
- Conversant has no user interface except for the administrative preferences system, which is a web site.
- Conversant plugins
- This is where all of the real features are implemented.
- There are currently more than 30 plugins for Conversant.
- Conversant is like an operating system, or a "platform." The plugins are the applications written for it.
- More on plugins, below.
- Zones are containers. They don't have a user interface, there's no web site or email address for a zone. They exist simply to provide a grouping for related sites and user accounts.
- A Conversant server can contain any number of zones.
- More on zones, below.
- The following graphic/table is intended only to help you visualize the containment (or hierarchy) of data in Conversant.
- marketing department
- main blog editors
- sales support
- project a
- it department
- help desk editors
- main blog editors
- help desk
- migration project
- Zones are containers for everything else, including:
- Conversations (individual sites)
- Conversations are where you find the user interface. Web sites, mailing lists, nntp news groups, etc., etc. These things are all "Conversant conversations."
- A zone can have any number of conversations (sites).
- Conversations are for the content.
- More on conversations, below.
- Membership Accounts (users)
- A zone can have any number of members, from 0 to infinity.
- Can post and edit their own messages.
- Can set their own preferences through a conversation's preferences page
- Zone Administrators
- Members (see above) which have been given administrative privileges.
- Can administer anything in the zone, including users, groups, and conversations, plugins, etc.
- Groups (of users)
- Where would a groupware system like Conversant be, without groups?
- A zone can contain any number of groups.
- Collections (lists, subsets) of the users in a zone.
- Can be used in many places that a single user might be used.
- For example, a weblog's "editor" can be a single user, or an entire group. When it's a group, everyone in the group has the ability to post to the weblog.
- Plugins which are enabled at the server level can be enabled or disabled at the zone level.
- More on plugins, below.
- Preferences database.
- Zones have a dedicated preferences database to track all of the settings for everything in the zone.
- Most preferences are provided by plugins, to customize the features provided those plugins.
- Some preferences are general to a zone, others are specific to each conversation, each member, or even a specific member when interacting with a specific conversation.
- Conversations are contained with a zone.
- offer security options for controlling:
- Can new members sign up on their own?
- Guest access (can anyone who is not a member, or not logged in, access the site?)
- Cookie vs. "Password Dialog" (HTTP-Auth) login requirements
- There's more on security, below.
- Conversations are thought of in a number of different ways, all of which are accurate:
- a web site with a flat or threaded discussion group
- a weblog
- a mailing list
- a NNTP newsgroup
- Conversations contain:
- A message database
- the basic unit of content in Conversant
- messages are indexed as soon as they are posted to the database, for the built-in search engine
- More on messages, below
- Custom fields
- Any number of additional fields can be added to your message database.
- Fields (built-in and custom) always have unique names.
- Different types of fields are available:
- text fields
- lists of pre-defined values (where you choose one, or more than one)
- boolean fields (true or false values)
- Data is stored in the message database, with each message.
- Indexed for the search engine, automatically.
- A web site
- Can have any number of web pages
- Traditional web pages, just "static" content built from a message.
- Dynamic pages like weblogs, search engines, discussion boards, message posting / editing forms, etc.
- More on web pages, below.
- Messages can be posted through the web site.
- Messages can be accessed at their own URL, within a web site, as if they were web pages.
- Nearly everything can be served as an RSS feed, including search engine queries, weblogs, discussion threads, and more.
- Several built-in, permanent web pages:
- /[msgnum] (messages all have numbers)
- A mailing list
- Also known as an email discussion list
- Dedicated email addresses for posting messages, subscribing, and unsubscribing.
- Members can post messages by sending an email to the conversation
- If the message is a reply to another message, it's "threaded" properly
- Members can "subscribe" to a conversation's mailing list, so new messages are mailed to them automatically.
- Messages sent to the mailing list from the conversation can be in plain text or html format
- Can be controlled by external mailing list software like majordomo
- When a mailing list has many members, this option is more efficient.
- A NNTP newsgroup
- Similar to email, messages are posted, replied to, and read by "NNTP clients".
- Mozilla and Outlook are both very good NNTP clients, and there are many others for all operating systems.
- Generally used for designing the structure and display of content
- Templates have different "types." Some examples:
- web page templates
- message templates for the web
- message templates for email
- various weblog templates
- many others
- Template "typing" makes them easier to organize and manage.
- Templates use "macros" to import content. (More on macros, below.)
- bits of simple, pluggable content, such as image tags, links to web pages, or boiler-plate text
- resources are inserted into templates or messages by entering the name of the resource within |vertical pipes|
- whenever a resource is encountered in a message or template, it is replaced with its value from the resource database
- for a simple example:
- this text:
- Please contact |me by email| with any questions.
- might have it's resource replaced and end up looking like this:
- Please contact <a href="mailto:email@example.com">me by email</a> with any questions.
- Later, if you decide that you don't want to publish your email address, you could change the resource so that the link points to a contact form on a web page. So, you change the URL in the resource, and the link is instantly changed everywhere that the resource has been used.
- An administrative web site
- Attach and detach members to/from the conversation (using the pool of members in the zone)
- Manage your web site's files and folders
- Manage the mailing list
- Manage templates
- Manage resources
- Change conversation preferences (settings)
- Group administrative tasks together into simple, web-based wizards.
- Only available to administrators.
- Existing wizards include:
- Bulk membership management
- use a tab-delimited text file to create or change many members at once
- Look and Feel
- set some basic preferences for the web site's HTML
- New Conversation
- makes it easy to create new conversations with pre-defined features
- Site Security
- set access restrictions for a conversation
- (There are other wizards, too.)
- Conversation (site) administrators.
- Similar to zone admins, they are members of the zone.
- Can administer only the site, not the entire zone.
- No control over member preferences, or groups.
- Limited access to the administrative site.
- A member-preferences web site
- Any logged-on member can access the members page.
- Allows members to set their own preferences, such as:
- full name
- subscribed to the mailing list?
- (many more)
- What are plugins?
- Plugins are mini-programs designed to work within and to enhance Conversant
- They provide features, some very small, some quite large
- Nearly all features in Conversant are written in plugins because Conversant itself is designed mainly to provide a stable, standard API
- Conversant is like an operating system, or a "platform." The plugins are the applications written for it.
- Conversant's plugins provide much of the functionality seen by users:
- web server itself is implemented as a plugin.
- mailing list service is a plugin
- newsgroup is a plugin
- xml-rpc service is a plugin
- Almost all of the web pages are actually provided by plugins
- the search engine interface (not the indexer), weblogs, message thread pages, wizards, event calendars, etc.
- More on pages, below.
- 99.9% of macros are actually scripts contained in the plugins.
- (More on macros, below.)
- Read-only templates.
- can be used anywhere, and copied, but can not be edited
- gives the user something to start with when customizing a site
- Plugins can easily provide extend Conversant's xml-rpc interface (great for web programming)
- Almost every function in the Conversant API provides at least one callback for overriding or enhancing the default behavior.
- Make it very easy to write simple plugins, and possible to write very powerful plugins.
- Can be enabled or disabled on a zone-by-zone and conversation-by-conversation
- Can specify preferences for zones, members, conversations, groups, and combinations thereof.
- A good example is the email plugin. It provides preferences which are specific to members that are attached to a conversation. Subscription to a conversation's mailing list is a "plugin-member-conversation" preference. This means the preference is provided by the plugin, belongs to the user, and is specific to a single conversation. (Specific to a single conversation because the user can subscribe to one conversation's mailing list, but that doesn't mean he wants to subscribe to the mailing lists for all of them.)
- The basic unit of content
- Nearly all pages are built from at least one message
- Can contain HTML, macros, and resources (or just plain text)
- edit with a wysiwyg editor
- have their own, unique URLs
- can have any number of attachments, just like email
- a.k.a. "enclosures"
- pictures, word documents, PDFs, quicktime movies, whatever
- every attachment is given a unique URL, automatically
- edit a message by adding "/edit" to the URL
- reply to a message by adding "/reply" to the URL
- once in the conversation, you can do anything with a message: post it to a weblog, find it in the search engine, reply to it, publish it to a "traditional" web page, delete it
- Conversant's very own, very simple scripting language.
- Syntax is based on the format for HTML comments. Every macro begins with "<!--#" and ends with "-->"
- Macros are usually the names of special scripts provided by plugins.
- When a web page or email is being served, the macro scripts are called, and the macro (in the content) is replaced with the result.
- So, for example, <!--#msgsubject--> could be rendered as What is Conversant? The Long Version
- and <!--#msgsubject link="true"--> could be rendered as What is Conversant? The Long Version
- There are hundreds of macros.
- Some are general purpose, like the #msgSubject and #member macros.
- Others are specific to particular types of pages, such as weblogs and search engines.
- Conditional macros (branching)
- if / elseif / else / endif
- special type of macros (not found in many other systems).
- allow conditions (at the time the macro is being processed) to dictate what parts of a page are included, and what parts are eliminated entirely
- example use: hide admin-only links on a web page from anyone who is not an administrator
- Web pages
- the most basic web page is a message, at a url like http://www.truerwords.net/4491
- uses a "message template" to describe the contents of the page (where to put the subject, the author, the body text, etc.)
- message template is rendered into html, and then embedded in the overall page template
- message pages are "built in"
- you don't have to create a special page to view them in a browser
- Just add the message number to the site's URL.
- See above for more on messages.
- other built-in web pages:
- /signup: allow new members to sign up by providing at least an email address and password
- /logon: allow members to provide their username (email address) and password so that the server will recognize them
- logging on is required for posting messages through the browser
- some conversations don't allow any access at all without first logging on
- a cookie is stored in your browser after you log on, so that when you return to the site you don't have to log on again
- /logoff: deletes your membership cookie
- mainly useful when you've logged on from a public terminal (so that others can't use your account)
- /__NewThread__: for posting a new message that is not a reply to another message
- The rest of this section lists the other types of pages provided by Conversant's plugins.
- Search Engine pages (2)
- Queries can be cached, so that the same search runs every time the page is loaded. Very good way to list all the pages in a certain category (for example)
- If the query is cached, the search results can be cached also, for performance.
- A macro allows you to insert the results of a query anywhere else in a conversation.
- Search results can be in RSS (or Atom) instead of HTML
- Published messages
- a message can be published to a url with a filename like "mypage.html" instead of just the message number
- Discussion Forum pages:
- a "DG Calendar" page shows what messages were posted on a given day, and offers a calendar for browsing by date
- "full thread" page shows all of the messages in a thread
- starts with the first message, and then shows every reply, and all replies of replies, etc.
- can be sorted by replies, or chronologically (chrono is better for "flat" message boards)
- "HTMLArea" page makes wysiwyg editing possible in Mozilla and IE (and Safari under Tiger)
- Topics page lists all of the disucssion topics (threads) in a conversation, chronologically
- The query pages can also be used as tools to enhance the discussion group
- Directory mirror
- Makes it easy to create another version of a page (or all the pages in a folder), such as a "printer friendly" page
- Enclosure page
- Publish a message's enclosure (an attachment) to any URL in your conversation's web site, so that the same file is available in both places.
- So, a file which was originally available here:
- Can be served from here:
- Note that this is really serving the enclosure, as the name implies. If you change the enclosure, the "enclosure pages" will automatically serve the new file. This is great for pictures which occasionally change.
- Event calendar
- supports month, week, and day views
- Events can be categorized. categories are shown by coloring the events and/or adding an icon
- event descriptions are stored as messages!
- So, members have a natural place to discuss an event on the calendar.
- Mailform Page
- If you don't want to give out your email address, this is the next best thing.
- User enters his/her email, a subject, and a body. When submitted, message is sent.
- Will only send email to the member(s) specified in the admin settings (spammers can't use it to broadcast their junk mail)
- Redirect page
- when the browser sends a request to this page, they're redirected to a different URL
- more powerful than it sounds
- can be used to redirect all requests for a directory to some other directory
- (mainly useful when a directory or file has been deleted)
- Old weblog page served us well for almost four years
- new weblog page is unbelievable. "Is there anything it doesn't do?"
- unfortunately, it seems the new weblog page will never be "soup"
- multiple editors (group weblogs)
- categories ("channels")
- automatically produces rss feed
- produces rss feeds for individual channels, combined channels, and even "query" feeds
- for example, an rss feed could contain "only the posts which contain the words macrobyte or conversant"
- Web Outline
- Create a hierarchical display of the entire site, or just a given directory
- depth is variable, so it can show the contents of sub folders to any level
- very useful as a sort of "table of contents"
- there's a macro for doing something very similar, which you can see in action here
- the benefit of the macro is that it can be put into any page, instead of requiring a dedicated page
- IP Banning - block a single address or an entire range
- Three membership levels:
- Guest - anyone who does not have an account or has not logged in
- Member - anyone with an account any who is logged in (so the server knows who this is)
- Administrator - a member who has been given sysop privileges
- Options based on membership level:
- Allow everybody to view the whole site
- Prevent guests (anyone not "logged in") from viewing the discussion group
- Prevent guests from seeing except the logon form
- Use "HTTP-Auth", so logon uses a challenge dialog instead of an HTML form, so guests will see nothing (and users are forced to log on every time they visit)
- Labels allow message-by-message restrictions
- Viewable by anybody
- Viewable only by members
- Viewable only by administrators
- Plus, labels are inherited by new replies that are added to the message after the label is set.
- Setting a label is as easy selecting from a popup menu when editing the message
- Other stuff
- RSS client features
- There's a macro that can be used to download RSS feeds from anywhere on the internet, and display the contents (through custom templates) on any web page. You can even put the results into an email template!
Last update: 1/18/2005; 11:08 AM