
First stable version of Scheme web framework Artanis released - nalaginrut
http://lists.gnu.org/archive/html/artanis/2018-03/msg00000.html
======
eatonphil
Nice work. Having written a few WAFs for unpopular languages, I think it's
most compelling to also include a more stable/mature backend like FastCGI in
addition to the self-rolled socket driver -- similar to how Flask has the dev
server and WSGI backend support. If your socket driver (and HTTP parser) ends
up being more performant and stable, that's awesome. But it's probably
unlikely and definitely a harder sell.

FastCGI in particular has the benefit of being incredibly simple to wrap. Here
[0] are some rudimentary bindings I wrote for Chicken Scheme.

[0] [https://github.com/eatonphil/pine](https://github.com/eatonphil/pine)

~~~
JasonFruit
Definitely second your recommendation on FastCGI: it's very straightforward,
and it's simple for people to deploy.

------
i_feel_great
If you didn't know already, "Artanis" is "Sinatra" backwards. It is similar to
frameworks such as Ruby Sinatra, Python Flask and Java Spark.

Also the main dev, "Nala Ginrut" is "Alan Turing" backwards, sorta.

~~~
bitwize
I just noticed that. I thought they named it after the Protoss character from
_StarCraft_.

~~~
giancarlostoro
Nostalgia kicks in and memories of playing StarCraft on Dial-Up return... I
miss how simple the web was back then... AOL, MSN, not even Google was
mainstream yet I don't think haha

Also for those wondering:

[http://starcraft.wikia.com/wiki/Artanis](http://starcraft.wikia.com/wiki/Artanis)

~~~
_sdegutis
The AOL dream is sorta realized... AIM is now Facebook Messenger, AOL
emphasized keyword search over addresses just like how people just Google
everything... maybe that's all actually...

------
Y_Y
"Sailing to /dev/null

That is no future for mediocre coder.

The hacker is one another's arm. Codes in the editors.

Those dying generations - at their song."

That's what the project page says. Anyone know what it means?

~~~
srean
That sounds like
[https://en.wikipedia.org/wiki/Sailing_to_Byzantium](https://en.wikipedia.org/wiki/Sailing_to_Byzantium)

------
_sdegutis
Extremely cool. Can't wait to write something in this! Why is the
configuration[1] done in an ad-hoc language instead of Guile?

[1]:
[http://www.gnu.org/software/artanis/manual/manual.html#org96...](http://www.gnu.org/software/artanis/manual/manual.html#org9698308)

------
mark_l_watson
I tried Artanis about a year ago - very cool, but I only played with it, never
deployed anything. It is an impressive amount of work done by one person and
the documentation is very adequate.

~~~
i_feel_great
I should have another go at contributing to the documentation in my copious
spare time. The lead dev seems like a really nice, enthusiastic guy.

~~~
mark_l_watson
Cool! Thanks for your efforts. I also enjoy the lead dev’s online persona.

------
softwarelimits
Think Permissions. Authentication backends. For the world, as it is. Built it
into the thing right form the beginning. Always.

There is no future for mediocre frameworks that do not come with what is most
hard to get right - knowing who to let in and what to allow them - that is the
most important hackers work - to collect that knowledge in devoted
collaboration is the noble generations teaching.

The work that does not make the reasoning on locks and keys its cornerstone
looks hollow, inchoate, empty. No need for just another lightweight paper
castle, no matter how magic your language speaks - it needs to fill the needs
of a warriors world, full of dark and evil souls, so better you draft with
shelter always on your mind.

------
viperscape
"scheme web framework", except there are multiple scheme implementations _and_
variants. I don't understand why the word scheme is even used, each scheme is
basically a silo.

~~~
eatonphil
Unless Artanis uses FFI calls (which are not part of any SRFI I recall) it is
quite reasonable to implement an entire WAF using standard Scheme + SRFIs (for
instance, there's an SRFI for socket IO). Build steps always differ but it
isn't necessarily difficult to avoid using implementation-specific
functionality.

For a non-trivial example, check out the R7RS benchmark suite [0]. 10 of the
30 implementations there complete 95%+ of the benchmarks. (10 is a lot of
options...) Racket is probably the most intentionally divergent from Scheme
and it still manages to provide an R7RS front-end making it one of only 5
Schemes to finish 100% of the benchmarks (and be pretty fast).

[0] [https://github.com/ecraven/r7rs-
benchmarks](https://github.com/ecraven/r7rs-benchmarks)

