Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
bulletin
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Personal Projects
bulletin
Commits
a3dde8ce
Unverified
Commit
a3dde8ce
authored
2 months ago
by
Kevin Lyda
Browse files
Options
Downloads
Patches
Plain Diff
Update README
parent
79150418
Branches
Branches containing commit
Tags
Tags containing commit
1 merge request
!7
Documentation fixes
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
README.md
+28
-113
28 additions, 113 deletions
README.md
with
28 additions
and
113 deletions
README.md
+
28
−
113
View file @
a3dde8ce
# Recreating
bulletin
# Recreating
BULLETIN
Back in university we used to use a system called BULLETIN on the
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.
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
But I was thinking it might be fun to recreate. First though I'd like
an historic git repo that covers the early years.
an historic git repo that covers the early years.
This branch is where the gathering of the files was done and where they
This repository contains the following main branches:
were converted into more usable formats. The
`historical`
and
`master`
branches contain the actual timeline of the code.
## Who wrote it
*
`release`
- A recreation of BULLETIN written in Go and designed
to run under a single Unix user. 84ff1ce
*
`conversion`
- Multiple versions of the original source code.
The bulletin binary is designed to be run via the ssh command option for
an authorised key. That will specify the user. This means that bulletin
will initialise itself with that user for that session.
The code is organised like so:
*
`ask`
- Contains routines for asking the user questions.
*
`batch`
- Contains the batch routines - the
`-b`
flag.
*
`dclish`
- A command line parser akin to DCL.
*
`decus`
- Historical version this version is based on.
*
`editor`
- An editor function.
*
`folders`
- A higher level version of
`storage`
routines.
*
`key`
- Routines for handling ssh keys.
*
`pager`
- A pager function.
*
`repl`
- Actions and commands for the REPL.
*
`storage`
- Lower level storage routines.
*
`this`
- The current session.
*
`users`
- Validation routines for users.
# History of BULLETIN
First, git commits need an author. It would be nice to figure out
First, git commits need an author. It would be nice to figure out
the author. The version I used I suspect was written by
the author. The version I used I suspect was written by
...
@@ -20,116 +41,10 @@ Releases back then did not have commit messages or changelogs. However
...
@@ -20,116 +41,10 @@ Releases back then did not have commit messages or changelogs. However
there do seem to have been some announcements and the code does note
there do seem to have been some announcements and the code does note
some of the contributors.
some of the contributors.
## Where to find
BULLETIN
## Where to find
historical BULLETIN releases
The place to get it seems to be the
The place to get it seems to be the
[
DECUS archives
](
http://decuslib.com/
)
.
[
DECUS archives
](
http://decuslib.com/
)
.
I tracked it down with help from Kent Brodie who I discovered via
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
)
[
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.
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"
```
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment