Skip to content

Commit aa46f57

Browse files
author
jade
committed
Merge pull request 'Update About page, and various improvements' (#55) from piegames into main
Reviewed-on: https://git.lix.systems/lix-project/lix-website/pulls/55 Reviewed-by: jade <[email protected]>
2 parents ef6e361 + dba4cdd commit aa46f57

File tree

9 files changed

+52
-41
lines changed

9 files changed

+52
-41
lines changed

config.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ menus:
4646
url: "/faq"
4747
weight: 2
4848

49-
- name: "Resources"
50-
url: "/resources"
49+
- name: "Team"
50+
url: "/team"
5151
weight: 3
5252

5353
- name: "Community"

content/about.md

Lines changed: 44 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: "About Lix"
33
description: "A strictly-better implementation of the Nix language."
4-
date: "2024-04-27"
4+
date: "2025-06-27"
55
author: "Lix Team"
66
---
77

@@ -14,7 +14,7 @@ That means that, with a few well-written Nix expressions, one
1414
can easily configure a system into a known state -- and the packages that are created this
1515
way are guaranteed to run _exactly the same way_ on any system of the same architecture.
1616

17-
As a fork of CppNix, Lix is designed to be fully compatible with the original CppNix
17+
As a fork of CppNix (last shared release: 2.18), Lix is designed to be fully compatible with the original CppNix
1818
implementation -- but also designed to allow evolution of the language and tooling, so
1919
its developers can improve usability and ergonomics without sacrificing correctness.
2020

@@ -42,12 +42,10 @@ provide a collection of necessary improvements over CppNix:
4242
We take moderation seriously, and are committed to preventing bad actors from driving out
4343
marginalized groups.
4444

45-
- **A correct implementation of the Nix language.**
46-
Recent versions of the CppNix project have introduced significant regressions -- so much so
47-
that the upstream [Nixpkgs](https://github.com/nixos/nixpkgs) team has opted to remain several
48-
versions behind. Lix is forked from the last truly-stable version of CppNix -- but has both
49-
introduced new features and backported a number of features from newer versions without
50-
sacrificing correctness.
45+
- **Close to our users.**
46+
Unfortunately, there have been various significant regressions in the CppNix project over the last years --
47+
to the extent that [Nixpkgs](https://github.com/nixos/nixpkgs) has repeatedly opted to *not* default users to the latest release, especially on stable channels.
48+
Lix wants to stay as close to its users as possible with the "Lix on main" program, inviting users to daily drive the latest changes with a promise of quick support and fixes, to help ensure that our releases are already widely tested by the time they land in Nixpkgs.
5149

5250
- **A more modern implementation of Nix.**
5351
Lix is designed for evolution of its codebase. Lix already uses the more modern
@@ -60,9 +58,45 @@ provide a collection of necessary improvements over CppNix:
6058
system will allow the language to grow and evolve without sacrificing backwards-compatibility or correctness.
6159
And room to grow means room for **usability and ergonomics improvements** -- both in the language and in
6260
tooling.
63-
61+
62+
- **Clear stability guarantees.**
63+
Fundamentally transforming a large codebase and adding new features while remaining stable at the same time is no easy goal.
64+
To achieve this, [we are selective](https://wiki.lix.systems/link/9#bkmrk-freezes) about which components may change and which components are feature-frozen until we have reworked them into a state where we are sufficiently confident in their stability.
65+
We are selective about our stability guarantees and explicitly define what is expected to be stable and what can change.
6466

6567
## Community, Team & Governance
6668

6769
**Looking for information about the people behind the project?**
68-
Check out our [community](/community) and [team](/team) pages.
70+
Check out our [community](/community) and [team](/team) pages.
71+
72+
## Technical differences from CppNix
73+
74+
The list of differences will only grow over time as both projects continue moving into different directions and pursuing different goals.
75+
On the broader strokes, Lix development currently mainly focuses on code cleanup and stability improvements, which aren't as easy compare as flashy new features.
76+
Still, some notable differences:
77+
78+
- Lix features various small improvements to the overall user experience, including better error messages in many places.
79+
- Lix does not include lazy trees, and does not intend to use the upstream implementation of lazy trees; a functionally equivalent replacement is planned (FIXME: publish the planning document for that).
80+
- Lix plans on completely rewriting CA derivations, and during that time will not offer a usable implementation of CA derivations.
81+
- Lix does not use libgit2 and does not intend to use it
82+
- Lix has started deprecating various legacy features and misfeatures of the Nix language, to reduce the number of foot guns users may run into.
83+
- The REPL has seen various feature improvements, notably `repl-overlays`, new debugging commands and improvements to the syntax.
84+
- Various performance improvements (8-20% faster than 2.18)
85+
86+
## Differences between Lix and snix
87+
88+
snix is a Nix implementation from the ground up in Rust, aiming to be compatible with CppNix.
89+
snix is designed to be modular, and also aims at replacing several core components of Nix with greenfield replacements of a second generation.
90+
91+
Lix is intended to evolve CppNix into a stable foundation for future evolution, without breaking clients along the way. Its goals are to aggressively pursue technical debt and remove the skeletons from the closet, while remaining deliberate about behavioural changes through testing. Lix will contain Rust components in the near future.
92+
93+
The two projects have similar goals but different approaches, there is some overlap between the developers, and the Lix project is open to integrating snix components in the future in places where it makes sense.
94+
95+
## A quick word on Flakes
96+
97+
The Lix project acknowledges that Flakes are the way that the majority of people use Nix today, and does not intend to remove support for them.
98+
However, Flakes are not the only way to write Nix language code in Lix, and we intend to provide a good experience to Flakes users, while also improving the experience for those not using them.
99+
As part of our overall focus on stability and dependability, some features of Flakes will be changed to be more strict.
100+
101+
Our long-term goal is to make Flakes less "special":
102+
We want to bring features that are currently Flakes-exclusive to everyone, and want to level the playing field by enabling everyone to build Flake-equivalent alternatives on top of Lix.

content/archives.md

Lines changed: 0 additions & 5 deletions
This file was deleted.

content/community-standards.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ The following are *principles* and do not in any way limit the authority of the
2828

2929
The following are hard lines for which we will likely ban on sight. These are not intended as an encompassing set of things that will not be tolerated, but rather as things that we promise will not be in our community. This can extend to patterns of behaviour outside our spaces.
3030

31-
For the avoidance of doubt, we do not tolerate discrimination such as racism, sexism, transmisia, pluralphobia, ableism or other sorts of discrimination; we do not tolerate unwelcome sexual advances, stalking, harassment or doxing.
31+
For the avoidance of doubt, we do not tolerate discrimination such as racism, sexism, transphobia, pluralphobia, ableism or other sorts of discrimination; we do not tolerate unwelcome sexual advances, stalking, harassment or doxing.
3232

3333
We do not tolerate peddling right-wing ideology, including but not limited to fascism, denying discrimination exists, and other such things.
3434

content/faq.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,10 @@ by evolving a compatible but more flexible flake-like abstraction in the periphe
3535
#### Q: What relation does Lix have to the Nix Foundation, and to related projects?
3636

3737
Besides being a fork of CppNix and an implementation of the Nix language, Lix is the
38-
effort of a number of long-time Nix, Nixpkgs, NixOS, and Tvix contributors and maintainers -- and has
38+
effort of a number of long-time Nix, Nixpkgs, NixOS, and Snix contributors and maintainers -- and has
3939
been developed in partnership with a number of prolific Nix-documenters, bloggers, and users.
4040

41-
We welcome anyone who wants to develop for both Lix and another implementation -- including CppNix and Tvix,
41+
We welcome anyone who wants to develop for both Lix and another implementation -- including CppNix and Snix,
4242
and our open-source implementation absolutely allows any developer to integrate our code into any
4343
license-compatible project.
4444

@@ -85,9 +85,9 @@ for login, as it will let you get started immediately. We also have local accoun
8585
wish not to use GitHub; if you would like one, please speak to a member of the Lix team on Matrix and we
8686
will gladly make you one manually.
8787

88-
#### Q: If Lix plans to adopt Rust, what makes it different from Tvix?
88+
#### Q: If Lix plans to adopt Rust, what makes it different from Snix?
8989

90-
Unlike Lix, [Tvix](https://tvix.dev/) is a ground-up re-implementation of the Nix language in Rust,
90+
Unlike Lix, [Snix](https://snix.dev/) is a ground-up re-implementation of the Nix language in Rust,
9191
which shares many of the same modernization goals as Lix -- but also has a long way to go before it can
9292
reach feature parity (and parity in correctness) with the CppNix and Lix implementations.
9393

content/homepage/about.md

Lines changed: 0 additions & 7 deletions
This file was deleted.

content/homepage/index.md

Lines changed: 0 additions & 3 deletions
This file was deleted.

content/homepage/work.md

Lines changed: 0 additions & 7 deletions
This file was deleted.

content/resources.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,8 @@ If you're learning about those topics because you want to understand the ideas t
3737
## Understanding Flakes
3838

3939
- [Flakes aren't real and can't hurt you](https://jade.fyi/blog/flakes-arent-real/), by our own **jade**.
40-
- Several of Lix community member [Xe Iaso](https://xeiaso.net)'s blog posts:
40+
- Several of [Xe Iaso](https://xeiaso.net)'s blog posts:
4141
- [Nix Flakes: An Introduction](https://xeiaso.net/blog/nix-flakes-1-2022-02-21/)
4242
- [Nix Flakes: Packages and How To Use Them](https://xeiaso.net/blog/nix-flakes-2-2022-02-27/)
4343
- [Nix Flakes: Exposing and using NixOS Modules](https://xeiaso.net/blog/nix-flakes-3-2022-04-07/)
4444
- [Building Go Packages with Nix Flakes](https://xeiaso.net/blog/nix-flakes-go-programs/)
45-

0 commit comments

Comments
 (0)