~pmc/webjamboree

Find pages and sites from all around the World Wide Web!
Use BEGIN IMMEDIATE for transactions to prevent concurrency issues
Add personal homepages

refs

main
browse  log 

clone

read-only
https://git.sr.ht/~pmc/webjamboree
read/write
git@git.sr.ht:~pmc/webjamboree

You can also use your local clone with git send-email.

#Jamboree

Find pages and sites from all around the World Wide Web! Inspired by the original Yahoo! link directory, circa 1997. Think of Jamboree as coming from an alternate timeline where Google never existed and the PageRank-like search engine formula never took off.

I've started to seed Jamboree with some links, but I'd appreciate help! Email Git patches or just links and details to webmaster@webjamboree.net if you have any suggestions. Include a short description of each link and which category you think it should be in (even if that category doesn't exist).

Browse Jamboree at webjamboree.net.

#Running locally

Ensure you have PHP 8.1 or newer with the YAML and APCu PECL packages as well as SQLite3, curl, and XML support. Point Apache at your checkout of this repository. Setup the SQLite database by requesting /postdeploy.php.

On Debian-based Linux distros, you can install these packages with this command:

sudo apt install apache2 libapache2-mod-php8.1 php8.1-yaml php8.1-apcu php8.1-sqlite3 php8.1-curl php8.1-xml

#Deploying

Same as local. The Makefile has some helper targets for deploying to the webjamboree.net NFSN site. NFSN doesn't have any PECL packages installed by default, so you need to install them manually then configure them in your /home/conf/php.ini file:

#Installing yaml

phpbin=$(dirname $(readlink -f $(which php8.2)))
cd /home/protected
rm -rf yaml-2.2.3.tgz yaml-2.2.3
wget https://pecl.php.net/get/yaml-2.2.3.tgz
tar -xvf yaml-2.2.3.tgz
cd yaml-2.2.3
$phpbin/phpize
./configure --with-php-config=$phpbin/php-config
make
mkdir -p /home/protected/php-modules
cp modules/yaml.so /home/protected/php-modules/yaml.so
# only if the first time
echo "extension = /home/protected/php-modules/yaml.so" >> /home/conf/php.ini
nfsn web-kick

#Installing APCu

phpbin=$(dirname $(readlink -f $(which php8.2)))
cd /home/protected
rm -rf apcu-5.1.22.tgz apcu-5.1.22
wget https://pecl.php.net/get/apcu-5.1.22.tgz
tar -xvf apcu-5.1.22.tgz
cd apcu-5.1.22
$phpbin/phpize
./configure --with-php-config=$phpbin/php-config
make
mkdir -p /home/protected/php-modules
cp modules/apcu.so /home/protected/php-modules/apcu.so
# only if the first time
echo "extension = /home/protected/php-modules/apcu.so" >> /home/conf/php.ini
nfsn web-kick

#Web technologies

Currently, these are the rules for what web technologies are acceptable:

  • Use whatever HTML you want, as long as it's used for progressive enhancement and is still usable on arbitrarily old browsers. For example, <details>/<summary> is fine since it still appears on older browsers, and just provides a quality-of-life improvement on new browsers.
  • Use whatever CSS you want, subject to the same rules as HTML. Jamboree should be perfectly usable with CSS disabled.
  • Don't use JavaScript. I may change my mind on this in the future, but for now put any interactivity into PHP to run it on the server.

I made a few conscious choices when configuring the web server and choosing the tech stack as well:

  • I didn't want a complicated stack, or one that was too anachronistic to the inspiration, so I decided on raw PHP hosted with Apache. I did decide to use PHP 8.1 though, I don't hate myself enough to use '90s PHP when modern PHP exists.
  • I wanted Jamboree to work on arbitrarily old browsers, so while I did enable TLS I didn't enable the HTTP->HTTPS redirect. All of my links to Jamboree are HTTPS, so I suspect most viewers will be immediately greeted with HTTPS, so I feel this is a reasonable compromise. This way, folks on modern browsers end up on the HTTPS site while folks on older browsers/systems can enter the URL into their browser without the "S".

#Programmatic access

You can programmatically access the YAML files comprising the link database by just... requesting the files from the server. Add /subcategories.yaml to a category path to get a YAML file containing the list of that category's subcategories. Add /links.yaml to a category path to get a YAML file containing the list of links belonging to that category. This isn't a special API or anything, you're just requesting the static YAML files from the filesystem.

#License

The PHP (and other) code making up Jamboree is licensed under the AGPL version 3.0 (or any later version). The YAML data files making up the link database are licensed separately, under the CC-BY-SA 4.0 license. Check out the footer of any Jamboree page for more information.