# Greymatter (software)

Greymatter is a free and open-source blogging software package, originally created by Noah Grey in November 2000. It was "the original opensource weblogging software". Noah Grey stopped maintaining it around 2002. Since then, it has been maintained by the community of users. It is one of the first software packages created for blogging, and had a large number of users. With the creation of WordPress and Google's Blogspot, its users have declined since 2005, but it is still in use.
Greymatter does not require a database; its only requirement is Perl support on a webserver. It features robust options and extensibility, with a focus on customization and user control. Its current version is 1.8.2.

## Design

Greymatter is written in Perl, designed as a CGI script placed in the cgi-bin directory of a website. The blog can be displayed on the website's homepage or in a subdirectory. The archives are in a user customized folder on the server, typically called "archives". The main, archive, and entry pages are written in HTML.

### Source files

* GM.cgi is the main powerhouse of the program and the largest file.
* GM-Authors.cgi contains author information, which is now encrypted (as of version 1.21d)
* GM-Banlist.cgi contains a list of banned IPs (usually comment spammers) which is editable through GM.cgi.
* GM-Comments.cgi contains the subroutines not only for comment posting and viewing but also for searching entries.
* GM-Config.cgi has information relating to user preferences and site information.
* GM-Counter.cgi keeps track of the number of entries, archived entries (entries older than X number of days, specified by user, default 7), the "stay at top" entry which sits at the top of the main page, positive and negative karma votes, comments, opened entries, and closed entries (equivalent of deleted entries but can be re-opened at any time).
* GM-CPLog.cgi contains raw HTML for the control panel log (optional feature, user specified).
* GM-Entrylist.cgi is a list of all of the entries and information about each (time of post, author, and so on).
* GM-Karma.cgi contains the subroutines for karma voting.
* GM-Library.cgi contains the most used subroutines.
* GM-Templates.cgi contains the user-specified templates for the site's HTML and the format of the entry.
* GM-Upload.cgi is the script that enables users to upload files to their site through Greymatter to their archives directory.

## Functionality
### Static pages

Greymatter creates static pages. Therefore, when an entry is edited, only the main page and the entry's page are rebuilt (but not the monthly or weekly archive file). While static pages are arguably quicker to load for the user, it is time-consuming for the author and resource intensive for the user to constantly rebuild files. Also, by using static pages, at least twice as much space is used on the server as is needed (the entry files, .cgi format, as well as individual entry pages in HTML and weekly or monthly archive logs in HTML). Besides this, sometimes rebuilding is impossible and leads to Greymatter timing out and showing a blank window (usually when there are massive numbers of entries being rebuilt, or when attempting to rebuild all files).

### Raw HTML

Raw HTML is included in Greymatter's original Perl source files. The developers discussed the idea of extracting the HTML used in the Greymatter front page's many tables, and a version was made, but was never popularized. This leads the Greymatter source files to be larger than necessary (mostly GM.cgi).

### Usability

Because Greymatter is written in Perl, files need to be given the proper permissions with the chmod command before use. Though an experienced web guru or installer can make the installation in under five minutes, for a one-time install it is more work than many other programs available. It is advertised as being for novice or advanced users. However, Greymatter does automatically try to detect web paths (though not usually successfully) and has many common defaults set.

### Customization

Greymatter uses custom designed templates (usually written in HTML), which can be used to completely configure the look and feel of the blog, rather than relying upon static "templates" like Blogspot. This allows the software to integrate into the look and feel of the author's website.

### Too many entries

While Greymatter saves entries with 8-digit filenames in the format XXXXXXXX.cgi, after 5,000 entries diagnostic mode would not work in early versions. This bug was fixed, but shows that large numbers of entries hinder Greymatter's performance ability and were not truly planned for.

## Features

Greymatter's main features are that it is written in Perl, resides on your own server, and saves .cgi files of the entries (plain text format), as opposed to using PHP and a MySQL database (as most blogging software use today). Greymatter has many mods which let users use emoticons and post the current mood and/or music of the user. There is also an "entrymore" text, which is displayed on the entry's individual page, allowing users to customize the summary which appears on the main page of the blog. Greymatter is easy to customize and is open-source, allowing users to edit the HTML and/or Perl contained within. Many users have been known to edit the color scheme of the Greymatter user page (originally purple, yellow, and green). Greymatter contains many variables within double curly braces (i.e. {{entrysubject}} displays the subject). These variables let users completely customize the way Greymatter displays entries and also the layout of the page. While some variables are predefined by Greymatter, the {{header}} and {{custom}} variables can contain anything from HTML to Perl.

## Mods and edits

Many users have edited Greymatter; this is possible because it is open-source. The best known mods are by Foshdawg for the 1.21 versions, and later by Pete Finnigan. The site also includes information on the set up of all of the cgi files Greymatter uses. Popular mods in early development of Greymatter have been made by flippedcracker and Linear. Hazelorb also implemented dynamic Perl pages and was at one time working on a Java version, showing that Greymatter is extendable. It has been suggested that Greymatter be rewritten in PHP using mySQL. Developers at the Greymatter Forums continue to create new mods and feature requests.

## Future

As of February 2001, Greymatter is no longer being developed by Noah Grey, but is instead being maintained and occasionally updated by developers at the Greymatter Forums. Pete Finnigan and Coldstone have been maintaining some more recent versions. Though a core group had been attempting a rewrite as Greymatter 2 (which was set to include RSS/Atom support), a new version has not been released since 2008 and development is not extremely active. Greymatter is believed to be "dead."
Noah Grey has no plans to resume involvement with Greymatter in any form. Originally he had said that future versions of Greymatter might not be free, and that he might eventually release a commercial "pro" version. Instead of a "pro" version, Grey had written an all-new PHP- and MySQL-based CMS, Greysight, which was licensed to commercial and private clients.