UrWeb, or the Ur programming language and the UrWeb domain-specific language standard and library, is an ecosystem designed to promote *very* safe {web} development. The system has some interesting ideas like validating requests, queries, HTML and SQL, and has an inbuilt ORM for expressing database interactions.

It's also super easy to install with Nix!

Unfortunately, it's software developed on master without rigorous testing practices and the documentation can be lacking at times (though it is very good for a research effort). In my limited time using the framework, I found that I would frequently struggle with errors related to bad parses; if I used the wrong syntax at some point, I would receive an error that felt incredibly inconsistent with the code I was writing - I wish the system had more logging to inform the user of where the error occurs at the least!

It's also clear that the framework operates entirely independent of any progress in the web development space -- which leads to some interesting ideas but foregoes several nice-to-haves of current systems. Urweb, though, is in it for the long haul.

Ur/web *does* seem to have decent Emacs support, though I had some initial trouble getting urweb-mode to run in Emacs out of the box.

Starting Out

If you're starting and you're a beginner, don't bother with the manual at first. Install the

 package with Nix (use a nix-shell!) and jump straight to the 
        examples. I found that without the proper context the manual and reference 
        weren't super useful; they focus on the programming language itself rather 
        than the ecosystem surrounding web development, which is likely why you're 
        using the framework.

Of course, once you're familiar with using the ecosystem, go back to the reference to learn more about the language!


[the Urweb repository]

[the main demo as provided in the repo]

[a great writeup on why urweb is worth trying]

[http://expdev.net/urtutorial/]decent tutorial

[ur/Web part of BazQux Reader sources]

[Useful Ur/Web functions.]

[ur programming languages - web dev w this!]

2022-10-31 33a79e4
2022-10-27 7aac666
2021-09-22 52a677b
2021-09-21 7732812
2021-08-19 87d9551
2021-04-24 20fde56
2021-01-15 5599273
2020-11-15 a0eccac