Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Move over to Zola. #10

Merged
merged 11 commits into from
May 2, 2023
Merged

Move over to Zola. #10

merged 11 commits into from
May 2, 2023

Conversation

richard-uk1
Copy link
Contributor

Still needs a github action configuring.

Still needs a github action configuring.
Copy link
Contributor

@raphlinus raphlinus left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great, I'm really looking forward to see this land. I reworked the description of xilem because I don't think vdom is central to the architecture (and might create misleading perception of architecture), and also describing it as medium-grained is intended to distinguish it from fine-grained approaches such as Leptos.

Other than that, minor typos and so on.

content/_index.md Outdated Show resolved Hide resolved
content/_index.md Outdated Show resolved Hide resolved
content/_index.md Outdated Show resolved Hide resolved
content/_index.md Show resolved Hide resolved
Copy link
Member

@DJMcNab DJMcNab left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Haven't studied content, just a few details which I think need double checking.

<meta property="og:description" content="{{config.description}}">
<link rel="canonical" href="/">
<meta property="og:url" content="/">
<meta property="og:site_name" content="">
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This seems slightly strange - maybe it's right?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've created an issue to track the contents of in base.html (#12)

<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Begin Jekyll SEO tag v2.8.0 -->
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We're not using Jekyll anymore, right?

Comment on lines +72 to +73
<p><a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/88x31.png" /></a><br />This website's content is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International License</a>.</p>
<p>All code used in this website is available under the Apache-2.0 license.</p>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This feels slightly off to me; in particular, what counts as code? Like, is it content in code blocks - what happens if someone moves some content between code blocks and not in a code block?

I think the simplest solution might be to just dual-license everything as both/either CC-BY and Apache, unless anyone else has a better suggestion. Whatever the final scheme is, we should probably describe it in a README of this repo.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll add an issue for this so we can resolve it in a subsequent PR.

content/about.md Outdated Show resolved Hide resolved
richard-uk1 and others added 3 commits April 23, 2023 16:47
Co-authored-by: Raph Levien <[email protected]>
typo

Co-authored-by: Raph Levien <[email protected]>
typo

Co-authored-by: Raph Levien <[email protected]>
@richard-uk1
Copy link
Contributor Author

I've implemented suggestions in both @raphlinus's and @DJMcNab' s reviews. I've got to go out now, but when I get back I'll get the publish github action working and the PR merged, so that the new site is live.

In future it will be much easier to update the site - we just merge some new code to master and it will publish automatically.

content/about.md Outdated
@@ -0,0 +1,19 @@
+++
title = "About"
slug = "about"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No need to specify this explicitly, since it's the same as the filename here.

Copy link
Contributor

@nicoburns nicoburns left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please can you add a minimal README that contains instructions on how to build this locally and test changes?

@richard-uk1
Copy link
Contributor Author

@nicoburns I'll do that before merge. If you want to test in the meantime:

  1. Install zola
  2. Do zola serve in the root.
  3. Go to the website address that's printed (localhost:1111 off the top of my head)

Copy link
Member

@xStrom xStrom left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I did a quick reading pass on the content. Found some typos, and I also have a few editorial suggestions regarding glazier / druid-shell.

base_url = "https://linebender.org/"

title = "Linebender"
description = "Homepage for the Linebender organisation"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
description = "Homepage for the Linebender organisation"
description = "Homepage for the Linebender organization"

Given that _index.md uses the American spelling, might as well be consistent.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah I'm aiming for american spelling, so these fixes are all valid.


# Linebender projects

Below is a list of the main linebender projects, and a short description of each project's purpose, as of 2023-04-22.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Below is a list of the main linebender projects, and a short description of each project's purpose, as of 2023-04-22.
Below is a list of the main Linebender projects, and a short description of each project's purpose, as of 2023-04-22.


- [`vello`][vello] - An experimental GPU compute-centric 2D renderer.

This crate contains a set of compute shaders and framework for rasterizing 2D
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
This crate contains a set of compute shaders and framework for rasterizing 2D
This crate contains a set of compute shaders and a framework for rasterizing 2D

Alternatively frameworks if there are many.


- [`glazier`][glazier] - An experimental windowing library.

This crate provides access to the platform API, in order to create windows and contexts to draw to, and to feed platform events like keypresses and mouse/touch events into an application. It serves a similar purpose to [`winit`][winit], and indeed either `winit` or `glazier` can be used as the windowing layer with `vello`. It exists because we have slightly different goals to `winit`: we want to provide rich desktop integration including things like menus, but there is a chance in the future that we can merge the functionality that we need into `winit` and use that crate instead.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
This crate provides access to the platform API, in order to create windows and contexts to draw to, and to feed platform events like keypresses and mouse/touch events into an application. It serves a similar purpose to [`winit`][winit], and indeed either `winit` or `glazier` can be used as the windowing layer with `vello`. It exists because we have slightly different goals to `winit`: we want to provide rich desktop integration including things like menus, but there is a chance in the future that we can merge the functionality that we need into `winit` and use that crate instead.
This crate provides access to the platform API, in order to create windows and contexts to draw to, and to feed platform events like keypresses and mouse/touch events into an application. It serves a similar purpose to [`winit`][winit], and indeed either `winit` or `glazier` can be used as the windowing layer with `vello`. It exists because our requirements for Xilem slightly differ from the goals of `winit`: we want to optimize for rich desktop applications, including things like menus, contrasted to `winit` which is more focused on fully custom drawn applications like games.

I don't think we should be prophesying the demise of Glazier in its short description, even as that probability exists. We could just delete that part, but here I decided to add a bit of additional flavor instead.


- [`kurbo`][kurbo] - A library for creating, manipulating and interrogating 2D curve shapes.

At its core, `kurbo` is a library for contructing paths and splines out of straight lines and Bézier curves up to order 3 (known as cubic Béziers). It turns out that a series of cubic Bézier curves can be used to approximate any smooth curve with a very high degree of accuracy, compared to the number of curves required. They are also relatively easy to work with, and form the basis of the approach to curve rendering used in `vello`. The key abstraction is [`kurbo::Shape`](https://docs.rs/kurbo/latest/kurbo/trait.Shape.html), which provides the `path_elements` method. This method returns an interator over Bézier curves that approximate the type implementing the `Shape` trait, which `vello` can then draw.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
At its core, `kurbo` is a library for contructing paths and splines out of straight lines and Bézier curves up to order 3 (known as cubic Béziers). It turns out that a series of cubic Bézier curves can be used to approximate any smooth curve with a very high degree of accuracy, compared to the number of curves required. They are also relatively easy to work with, and form the basis of the approach to curve rendering used in `vello`. The key abstraction is [`kurbo::Shape`](https://docs.rs/kurbo/latest/kurbo/trait.Shape.html), which provides the `path_elements` method. This method returns an interator over Bézier curves that approximate the type implementing the `Shape` trait, which `vello` can then draw.
At its core, `kurbo` is a library for constructing paths and splines out of straight lines and Bézier curves up to order 3 (known as cubic Béziers). It turns out that a series of cubic Bézier curves can be used to approximate any smooth curve with a very high degree of accuracy, compared to the number of curves required. They are also relatively easy to work with, and form the basis of the approach to curve rendering used in `vello`. The key abstraction is [`kurbo::Shape`](https://docs.rs/kurbo/latest/kurbo/trait.Shape.html), which provides the `path_elements` method. This method returns an interator over Bézier curves that approximate the type implementing the `Shape` trait, which `vello` can then draw.


## Crates (passively maintained)

- [`druid`][druid] - A GUI framework for Rust
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- [`druid`][druid] - A GUI framework for Rust
- [`druid`][druid] - A GUI framework for Rust.

Every other crate line ends with a period, so this makes it consistent.


- [`druid`][druid] - A GUI framework for Rust

`druid` is the original Linebender UI framework, and was the main focus of development until recently. There are many good things about `druid`, but the data model it uses (primarily `Lens`es) gets complicated in Rust, and doesn't compose as well as it would in a [GC'd][garbage collection] functional programming language. However, a lot of the things that work will will be copied straight over to `xilem`, and today `druid` is a solid choice for a new UI app projected to have low to medium complexity. The [#druid-help channel on Zulip](https://xi.zulipchat.com/#narrow/stream/255910-druid-help) is still monitored and you will likely get good answers to any questions you have.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
`druid` is the original Linebender UI framework, and was the main focus of development until recently. There are many good things about `druid`, but the data model it uses (primarily `Lens`es) gets complicated in Rust, and doesn't compose as well as it would in a [GC'd][garbage collection] functional programming language. However, a lot of the things that work will will be copied straight over to `xilem`, and today `druid` is a solid choice for a new UI app projected to have low to medium complexity. The [#druid-help channel on Zulip](https://xi.zulipchat.com/#narrow/stream/255910-druid-help) is still monitored and you will likely get good answers to any questions you have.
`druid` is the original Linebender UI framework, and was the main focus of development until early 2023. There are many good things about `druid`, but the data model it uses (primarily `Lens`es) gets complicated in Rust, and doesn't compose as well as it would in a [GC'd][garbage collection] functional programming language. However, a lot of the things that work will be copied straight over to `xilem`, and today `druid` is a solid choice for a new UI app projected to have low to medium complexity. The [#druid-help channel on Zulip](https://xi.zulipchat.com/#narrow/stream/255910-druid-help) is still monitored and you will likely get good answers to any questions you have.

Comment on lines +53 to +55
- [`druid-shell`][druid-shell] - The old name for `glazier`.

Previously, the windowing library `glazier` lived within the `druid` repository, and was called `druid-shell`. When work moved over to `vello`/`xilem`, there was debate over whether to split this code into its own crate, or move over to `winit`. We decided to keep using our own windowing library for now, to give us the flexibility to add or change what we need to, but we may try to unify with `winit` in the future.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- [`druid-shell`][druid-shell] - The old name for `glazier`.
Previously, the windowing library `glazier` lived within the `druid` repository, and was called `druid-shell`. When work moved over to `vello`/`xilem`, there was debate over whether to split this code into its own crate, or move over to `winit`. We decided to keep using our own windowing library for now, to give us the flexibility to add or change what we need to, but we may try to unify with `winit` in the future.
- [`druid-shell`][druid-shell] - The windowing library for `druid`.
It lives in the `druid` repository. When our focus moved over to `vello`/`xilem`, there was debate over whether to split this code into its own crate, or move over to `winit`. We decided to keep using our own windowing library for now, to give us the flexibility to add or change what we need to. Thus `glazier` was born as a fork of `druid-shell`.

Given that druid-shell is still very much alive (and diverging 😕) it shouldn't be equalized so much with glazier. As for moving to winit, that may be of relevance to glazier but not for druid / druid-shell, so I removed that note.


It is also a group of volunteers and enthusiasts who hang out on [our Zulip][xi.zulip], and who collaborate on designing and coding the different parts of the stack required for UI. We are a friendly bunch, and always welcome newcomers, whether they have any experience with 2D graphics and user interfaces or not.

All the work of the Linebender is done in the open, and the full history of all conversations is available on Zulip. In fact, we recommend searching the chat history for any topic that you are interested in, as there have been many discussions in the past with novel and valuable ideas. All code is dual-licenses under the MIT and Apache-2.0 licenses (where possible) and we aim to license non-code material under the [CC-BY Creative Commons license][CC-BY]. In fact, the non-code portion of this website is licensed under CC-BY, while all code, including any JavaScript written by the authors, is available under the Apache-2.0 license. A copy of the Apache-2.0 license is available in [this website's repository][website repository]. We reuse some code from the 'minima' Jekyll theme under the MIT license. The aim is to make any of the code on this website reuseable, so if the lincensing is causing friction please contact us [on Zulip][xi.zulip] and we'll work together to solve the problem.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
All the work of the Linebender is done in the open, and the full history of all conversations is available on Zulip. In fact, we recommend searching the chat history for any topic that you are interested in, as there have been many discussions in the past with novel and valuable ideas. All code is dual-licenses under the MIT and Apache-2.0 licenses (where possible) and we aim to license non-code material under the [CC-BY Creative Commons license][CC-BY]. In fact, the non-code portion of this website is licensed under CC-BY, while all code, including any JavaScript written by the authors, is available under the Apache-2.0 license. A copy of the Apache-2.0 license is available in [this website's repository][website repository]. We reuse some code from the 'minima' Jekyll theme under the MIT license. The aim is to make any of the code on this website reuseable, so if the lincensing is causing friction please contact us [on Zulip][xi.zulip] and we'll work together to solve the problem.
All the work of the Linebender is done in the open, and the full history of all conversations is available on Zulip. In fact, we recommend searching the chat history for any topic that you are interested in, as there have been many discussions in the past with novel and valuable ideas. All code is dual-licenses under the MIT and Apache-2.0 licenses (where possible) and we aim to license non-code material under the [CC-BY Creative Commons license][CC-BY]. In fact, the non-code portion of this website is licensed under CC-BY, while all code, including any JavaScript written by the authors, is available under the Apache-2.0 license. A copy of the Apache-2.0 license is available in [this website's repository][website repository]. We reuse some code from the 'minima' Jekyll theme under the MIT license. The aim is to make any of the code on this website reuseable, so if the licensing is causing friction please contact us [on Zulip][xi.zulip] and we'll work together to solve the problem.


All the work of the Linebender is done in the open, and the full history of all conversations is available on Zulip. In fact, we recommend searching the chat history for any topic that you are interested in, as there have been many discussions in the past with novel and valuable ideas. All code is dual-licenses under the MIT and Apache-2.0 licenses (where possible) and we aim to license non-code material under the [CC-BY Creative Commons license][CC-BY]. In fact, the non-code portion of this website is licensed under CC-BY, while all code, including any JavaScript written by the authors, is available under the Apache-2.0 license. A copy of the Apache-2.0 license is available in [this website's repository][website repository]. We reuse some code from the 'minima' Jekyll theme under the MIT license. The aim is to make any of the code on this website reuseable, so if the lincensing is causing friction please contact us [on Zulip][xi.zulip] and we'll work together to solve the problem.

The organisation was started by [Raph Levien], and he informally leads and drives the work forward.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
The organisation was started by [Raph Levien], and he informally leads and drives the work forward.
The organization was started by [Raph Levien], and he informally leads and drives the work forward.

Ditto for consistency.

@richard-uk1 richard-uk1 marked this pull request as ready for review May 2, 2023 12:42
@richard-uk1 richard-uk1 merged commit ee93c34 into master May 2, 2023
@richard-uk1 richard-uk1 deleted the zola_switch branch May 2, 2023 12:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants