ref: 59c2e948797d088e795cc2290fa8c3004ddb71c1 git.gmi/README.md -rw-r--r-- 1.4 KiB
59c2e948 — Frederick Yin Massive improvements 1 year, 4 months ago

#git.gmi - git frontend CGI script

#Front Matter

You may find it strange how I wrote a CGI script when there are so many amazing things available, and you're right. Git.gmi isn't meant to be a CGI script; it had to be one. The only Gemini server library I know in Python, Jetforce, is licensed under the Floodgap "Free" Software License, which is free software but well, free as in beer. I find absolutely no reason to allow proprietization but prohibit monetization, which is the exact opposite from the GPL - unfortunately the license of choice by the pygit2 devs. So here we are, locked in restrictions of both fundamental dependencies that don't get along with each other. I once comtemplated violating FFSL, before coming up with this workaround, i.e. CGI. Git.gmi is licensed under GPLv2 eventually.

The CGI script, cgi.py, prints output to stdout as response to the user, the one thing I'm uncomfortable with because it disables the One True Debugger. As an extra workaround, I just used raise Exception('debug message') everywhere (but deleted all of them before committing, ofc).

It's in the MVP stage, with the ability to view summary, trees, blobs, and commit log in a primitive way. There is a test instance at gemini://fkfd.me/git/cgi.py/.



You need to edit the shebang of cgi.py.