# Recreating bulletin

Back in university we used to use a system called BULLETIN on the
local VAX/VMS cluster.  It eventually went away due to security issues.
But I was thinking it might be fun to recreate.  First though I'd like
an historic git repo that covers the early years.

This repo is not it.  It's where I attempt to recreate it.

## Who wrote it

First, git commits need an author.  It would be nice to figure out
the author.  The version I used I suspect was written by
[Mark London](http://web.mit.edu/london/www/home.html).

## Where to find BULLETIN

The place to get it seems to be the
[DECUS archives](http://decuslib.com/).
I tracked it down with help from Kent Brodie who I discovered via
[an old USENET post](https://groups.google.com/forum/#!search/bulletin$20vms/comp.os.vms/rzM2LQMl6Jo/y1BKhO7dv80J)
where he too was trying to track the software down. In 1994.

## Extracting from tape

To trawl through looking for bulletin source distros (using the
[zip files](http://decuslib.com/zips/) from decuslib:

```
for f in *.zip; do
  unzip -l $f 2> /dev/null | grep -qi /bulletin && echo $f;
done
```

That yields this list of zip files:

I did this on an internet server since my bandwidth is tiny. I only
copied down the relevant bits of the zip files which I extracted like so:

```
for f in *.zip; do
  unzip -l $f 2> /dev/null | grep -qi /bulletin \
    && unzip $f $(unzip -l $f | grep -i /bulletin | awk '{print $4}');
done
tar jcf decus.tar.bz2 decus
```

This was used to create `decus.tar.bz2` which was then extracted as
`decus/` in this archive.

## Creating the BULLETIN source repo (or branch)

The files in the ZIP archives are not ready in their current state to
make the repo. A number of things had to be done to get them ready for
a proper historical source code archive.  The `conversion` branch tracks
the steps taken to prepare to recreate the historical archive.

Once the `conversion` branch seems complete, I'll start creating
the historical archive.

The subsections below track the major conversion probems encountered
and the steps taken to address them.

### Dependencies

The shell snippets assume zsh (the `**/*.ext` idiom gets used a lot).
Need a `gcc` toolchain.  Need the `unzip`, `unar` and `zoo` utilities.

### File conversions

Some files are in VMS record formats.  These are handled by
`convert-vms-record-fmt.c` which is compiled to `convert-vms-record-fmt`.

### .mai files

I think these are mail archives.  Might need a script to turn those
into mbox files.

### Unpacking archives.

Within the zip files there are sometimes other archive files.
These had to be extracted.

For .zoo files:

```
for f in **/*.zoo; do
  (cd ${f%\/*} && zoo -extract ${f##*\/} && rm ${f##*\/});
done
```

For .zip files:

```
for f in **/*.zip; do
  (cd ${f%\/*} && unzip ${f##*\/} && rm ${f##*\/});
done
```

For .lzh files:

```
for f in **/*.lzh; do
  (cd ${f%\/*} && unar ${f##*\/} && rm ${f##*\/});
done
```

### .com files

So it might be possible to run DCL on Linux.  A rather
[exhaustive list](http://jonesrh.info/dcll/dcll_why_i_use.html)
of the options seems to indicate that
[PC-DCL](http://users.skynet.be/michel.valentin/) might be an option.

### General cleanup

  * Removed exe and obj files: `git rm **/*.{exe,obj}`

### Committing to the BULLETIN git repo

To get the right dates and authors in git, need to tweak these environment
variables for each commit.

```
export GIT_AUTHOR_NAME="Mark London"
export GIT_AUTHOR_EMAIL="mrl%foo@bar"
export GIT_AUTHOR_DATE="Jan 28 20:52:53 1982 +0000"
```