Installing BBJ in a server (a kind of bulletin board for tildes)
================================================================

I have an account here but I also started a server myself elsewhere so I
decided to share with you what it was like to make it work.

First a little commentary on how I got here: Unlike some people I got here
thanks to discovering the Public Access Unix System known as SDF.org.
Then I knew about the tilde world. Now they look all really similar but
one thing is  that some tildes seemed more focused in publishing
websites and gopher sites whereas SDF is very focused on interaction
inside the system like the old bulletin boards (because it IS one).
Actually the BBOARD as of 2020 is still their main communication tool
along with com. However, the BBOARD (the reason unbeknownst to me) was
never made available for others to use.

There are some tildes that use bulletin boards inside to promote community. 
I'm building a tilde myself and I wanted something like that.
The system I knew existed was called BBJ and it is used in places like
tilde.club so as most tools it's publicly available but it was not
really well documented beyond the API so this is just the explanation of
how I managed to install it and make it work. It's easy and it'll be
even easier after I finish this article.

WHAT'S BBJ
==========

BBJ is not exactly like the BBOARD. It's in fact inspired in some way in
imageboards like 4chan and the like. The key difference is that you can
register a nickname, use a real password and as an admin you can even
disable all anonymity if you so desire. Also it's just ONE board.

Technically speaking the BBJ is written in Python (3) and it uses a
client-server architecture which can be a web or a
text client. I think there's even an emacs client (I've never used emacs
so I'm not gonna focus on that).

BBJ INSTALL
===========

1. Clone the code. It's on github or tildegit:

    git clone https://github.com/bbj-dev/bbj

    git clone git@tildegit.org:bbj/bbj.git

2. Now you have a folder called "bbj". It includes both the server and
the client.

The server is server.py.

The client is clients/urwid/main.py

3. Before trying to run server.py you need to make sure to copy the
configuration files.

    cp config.json.example config.json

This file also 

4. Run setup.sh. It will install some python dependencies and prepare a
sqlite database. You only have to do this the first time.

5. Test server.py and see if it runs without errors. You'll probably
need a script that runs this python file at startup. 

6. Test the client (see the location in step 2). This will create a
config file and you can also assign an admin user and set if you want
anonymous posting or not. 

This will be the client that every user will have to run so it'll be
necessary that you make a script that runs this file more easily in
/usr/bin or /usr/local/bin (like in my case in OpenBSD). I made a script
called "bbj" that runs this file and it's available for every user.

AFTER BBJ IS UP AND RUNNING
===========================

Congrats. You have a bulletin board up and running for your tilde. Just
some tips:

1. Install nano

By default BBJ offers its users nano to make posts and comments. If it
doesn't exist when users attempt to post they'll get EMPTY POST
DISCARDED. Users can swtich text editors pressing "o" for options but it's
not that easy to figure it out. Some systems like OpenBSD also lack vim
and only have vi at base install. 

2. You can register your nickname

When you start the client will ask you for a nickname but you will not
be prompted to make a password unless you want to. It's a good idea to
register your UNIX username with a password to avoid being impersonated.

3. Become an admin

Every bulletin board and its successors have some degree of toxicity,
some day you'll have to deal with it. If you exercise your power within
reason you'll have a healthy community. It's just like being an ops on
IRC or a mod on Reddit. 

If you wanna ask me a question find me in IRC or send me an email
to tilde.pink. Just remember that I'm an user and not the original
writer of the software.