Gemini App Developer Guide [main]
Added a few notes
[1mdiff --git a/app-guide.gmi b/app-guide.gmi[m [1mindex 797af94..d673877 100644[m [1m--- a/app-guide.gmi[m [1m+++ b/app-guide.gmi[m [36m@@ -39,6 +39,7 @@[m [mThe Common Gateway Interface (CGI) is an interface specification that enables we[m Let's begin by taking a look at a basic Gemini CGI program. This will give you a starting point on which you can build more complex features.[m [m (minimal and naive example of a Gemini CGI app using Python)[m [32m+[m[32m(link to some more technical guide about setting up CGI with a Gemini server)[m [m # 2. User interface[m [m [36m@@ -276,6 +277,7 @@[m [mIn Geminispace, in the absense of financial motivations, a malicious user could[m [m # 6. Internals[m [m [32m+[m[32m* some lower-level notes about Gemini-specific CGI; however, this guide is not meant to be a technical reference about CGI; for getting CGI up and running,see @tomasino's Gemini CGI videos (tbd: other CGI tutorials?)[m * CGI environment, cf. official/Sean's documentation, server's own documentation[m * what to do with the cert/pubkey hash; storing in database or persistent storage, security implications (TLS-backed); what do the variables mean and how to use them[m * example: generating a SHA-256 fingerprint using pyOpenSSL from the peer X.509 cert[m [36m@@ -285,7 +287,7 @@[m [mIn Geminispace, in the absense of financial motivations, a malicious user could[m [m ## 6.1 Alternatives to CGI[m [m [31m-* while CGI is quite versatile, it still assumes input to arrive via environment variables and output via stdout, with each request spawning a CGI process; this may not be optimal for all apps; see also: FastCGI[m [32m+[m[32m* while CGI is quite versatile, it still assumes input to arrive via environment variables and output via stdout, with each request spawning a CGI process, which can be heavy the server; this may not be optimal for all apps; see also: SCGI, FastCGI[m * a bespoke app server is not too difficult to pull off, given Gemini's simplicity; could use an off-the-shelf solution: Sean Conner's GLV (?), mozz's JetForce (?), or skyjake's GmCapsule -- this could also be considered a possible optimization in case CGI becomes a hindrance[m * Gemini proxy servers are a bit under-documented; a Gemini server can respond to any given URL (scheme, hostname, etc.); an app could be built around this, and a proxy server that fetches remote content could be built as a stateful app, too -- use of client certificates is not well-defined, though, but generally cliets activate certs based on the request URL; the proxy server would receive this certificate instead, but cannot redo the request with cert unless it possesses a copy of the same private key -- this area is open for experimentation[m * custom apps with custom URL schemes are possible, for specialized clients, but that is outside the scope of this tutorial as those cannot be called Gemini apps[m