This document is intended to provide some information about how to
contribute to the project, from basic sanity checks and code quality
to information about how to structure git commits.
These are the most common things that I encounter in pull requests
sent to my projects.
Carnix can not be configured to not build a dependency's
binaries (even if relevant features are disabled), but Comrak's binary
can by default not be built in Carnix because it attempts to read a
Cargo-provided environment variable at compile time.
This works around the issue by "faking" the environment variable,
which is less than ideal but works.
Converse now sets the user ID as the session identity parameter in
actix_web's identity middleware after a successful login and uses the
ID to determine identity when creating threads & posts and when
validating edit permissions.
As a first step of getting the concept of users into the database,
this creates a (somewhat involved) migration that moves all existing
"users" into a new users table and updates the post table to reference
it.
This migration is not yet finalised and still needs to be updated with
something to handle the concept of anonymous users (which I want to
keep around).
The `default.nix` in this repository contains generated code and skews
Github's language statistics. While I'm a big fan of Nix, Converse is
certainly not 80% written in Nix ;-)
There is some weird dependency interaction between pulldown-cmark and
getopts which causes builds to fail with a message about unstable
features if getopts is not explicitly depended on as a dependency of a
dependency (yeah, huh?)
Relicense the project from the standard GPL3 to the Affero version of
the license, requiring source code disclosure for modifications made
on instances of Converse that are serving users over the network.
Instead of loading the templates at launch time (which requires the
template folder to be present), include the template strings into the
binary.
This also re-enables auto-escaping in Tera.
Adds a Nix build configuration baesd on the default rustPlatform
configuration.
The configuration pins a specific nixpkgs commit (which at the time
was a commit tracking nixpkgs-unstable).