WIP: Canary example network application #19

Closed
mars wants to merge 2 commits from canary-application into main
Owner

Still needs a few more paragraphs to check off the technical details boxes the application guidelines require, but I would still appreciate some input and review early on!!! <3

Still needs a few more paragraphs to check off the technical details boxes the application guidelines require, but I would still appreciate some input and review early on!!! <3
mars added 1 commit 2022-09-05 07:27:32 +00:00
mars requested review from emma 2022-09-05 07:27:50 +00:00
mars requested review from lilithium-hydride 2022-09-05 07:27:50 +00:00
mars requested review from robotcritter 2022-09-05 07:27:51 +00:00
mars requested review from sashakoshka 2022-09-05 07:27:51 +00:00
sashakoshka approved these changes 2022-09-05 14:57:53 +00:00
emma requested changes 2022-09-15 06:23:53 +00:00
@ -0,0 +3,4 @@
Canary's current maintainer and benevolent dictator for life [2] is Marceline
Cramer (<cramermarceline@gmail.com>, <mars@tebibyte.media>, GitHub:
@marceline-cramer, Discord: @CrazyWazy#5915).
Owner

You should probably only list your e-mail here.

You should probably only list your e-mail here.
mars marked this conversation as resolved
@ -0,0 +5,4 @@
Cramer (<cramermarceline@gmail.com>, <mars@tebibyte.media>, GitHub:
@marceline-cramer, Discord: @CrazyWazy#5915).
Modern GUI frameworks (such as Qt) typically work with the backend application
Owner

Modern GUI frameworks, such as Qt, [...]

Modern GUI frameworks, such as Qt, [...]
Owner

What is "the backend application"?

What is "the backend application"?
mars marked this conversation as resolved
@ -0,0 +11,4 @@
application uses that GUI functionality like a traditional library. This
frame of design philosophy creates large, heavily centralized GUI systems.
Complex application interfaces are now only available through a limited number
of existing GUI frameworks, and as more applications become reliant on these
Owner

frameworks. As more applications [...]

frameworks. As more applications [...]
mars marked this conversation as resolved
@ -0,0 +12,4 @@
frame of design philosophy creates large, heavily centralized GUI systems.
Complex application interfaces are now only available through a limited number
of existing GUI frameworks, and as more applications become reliant on these
frameworks, the frameworks are forced to accumulate even more features and
Owner

reliant on them, the frameworks are forced [...]

reliant on them, the frameworks are forced [...]
mars marked this conversation as resolved
@ -0,0 +21,4 @@
application logic and frontend logic and relocating complex GUI code from a
static native library to a modular scriptable runtime that can be customized
by the user. Applications communicate with Canary scripts through
informally-standardized protocols of messages, and the scripts provide the
Owner

protocols of messages [...]

protocols ~~of messages~~ [...]
Owner

protocols and [...]

protocols and [...]
mars marked this conversation as resolved
@ -0,0 +22,4 @@
static native library to a modular scriptable runtime that can be customized
by the user. Applications communicate with Canary scripts through
informally-standardized protocols of messages, and the scripts provide the
layout and rendering. Custom scripts implementing the same protocols can then be
Owner

implementing these protocols [...]

implementing these protocols [...]
mars marked this conversation as resolved
@ -0,0 +23,4 @@
by the user. Applications communicate with Canary scripts through
informally-standardized protocols of messages, and the scripts provide the
layout and rendering. Custom scripts implementing the same protocols can then be
provided by the user, which style, personalize, and enhance Canary GUIs without
Owner

Custom scripts implementing these protocols, which style, personalize, and enhance Canary GUIs, can be utilized. This lifts the burden for the user of recompiling the target application or integrating with an upstream framework.

or something like this.

> Custom scripts implementing these protocols, which style, personalize, and enhance Canary GUIs, can be utilized. This lifts the burden for the user of recompiling the target application or integrating with an upstream framework. or something like this.
mars marked this conversation as resolved
@ -0,0 +27,4 @@
the need to recompile the target application or integrate with an upstream
framework.
To see why this model of GUI design is so innovative, imagine a stereotypical
Owner

To understand the innovativation of this design, imagine a standard video game.

To understand the innovativation of this design, imagine a standard video game.
mars marked this conversation as resolved
@ -0,0 +28,4 @@
framework.
To see why this model of GUI design is so innovative, imagine a stereotypical
video game. This game has a health meter for the player that has a certain
Owner

Let's say this game has a health meter [...]

Let's say this game has a health meter [...]
mars marked this conversation as resolved
@ -0,0 +31,4 @@
video game. This game has a health meter for the player that has a certain
capacity and value. During the course of the game, that meter may be depleted
when the player takes damage, filled when the player uses a healing item, or
have its capacity increase when the player levels up. With Canary, the game
Owner

have its capacity increased

have its capacity increased
mars marked this conversation as resolved
@ -0,0 +34,4 @@
have its capacity increase when the player levels up. With Canary, the game
would group these events and give them a name, like "simplehealthmeter". Then,
the game would ship with a Canary script that implements the "simplehealthmeter"
protocol and renders a basic red bar on the screen for the player's health while
Owner

protocol; it renders a basic red bar on the screen [...]

protocol; it renders a basic red bar on the screen [...]
mars marked this conversation as resolved
@ -0,0 +36,4 @@
the game would ship with a Canary script that implements the "simplehealthmeter"
protocol and renders a basic red bar on the screen for the player's health while
updating the position of the bar based on those events. The player can then
provide their own script implementing the "simplehealthmeter" that renders a red
Owner

that replaces it with [...] ? avoid repitition

that replaces it with [...] ? avoid repitition
@ -0,0 +39,4 @@
provide their own script implementing the "simplehealthmeter" that renders a red
dial instead, or a Zelda-style hearts meter, or anything they want. Then, when
they show off their new customization and upload their script online, other
players can use the new script for their health meter too.
Owner

can use it for [...]

can use it for [...]
Owner

comma before too.

comma before too.
mars marked this conversation as resolved
@ -0,0 +41,4 @@
they show off their new customization and upload their script online, other
players can use the new script for their health meter too.
Canary makes no assumptions about what the contents of your user interface may
Owner

Canary makes no assumptions about the contents of your user interface.

> Canary makes no assumptions about the contents of your user interface.
mars marked this conversation as resolved
emma requested changes 2022-09-15 06:57:58 +00:00
@ -0,0 +44,4 @@
Canary makes no assumptions about what the contents of your user interface may
be. It doesn't come with preset structures like "views," "containers," or even
"widgets." Canary operates on the principle that you, the user, are the only
person capable of structuring your computer's GUI, to your arbitrary,
Owner

computer's GUI to your arbitrary, [...]

computer's GUI to your arbitrary, [...]
mars marked this conversation as resolved
@ -0,0 +53,4 @@
There is a very large pool of developers available who would be interested in a
system like Canary. Online communities such as Reddit's r/unixporn are filled
with thousands of users who stylize and personalize their software's GUIs for
fun. Canary, as a maximally-hackable GUI framework, would have a lot of appeal
Owner

maybe write could have a lot of appeal?

maybe write *could* have a lot of appeal?
mars marked this conversation as resolved
@ -0,0 +54,4 @@
system like Canary. Online communities such as Reddit's r/unixporn are filled
with thousands of users who stylize and personalize their software's GUIs for
fun. Canary, as a maximally-hackable GUI framework, would have a lot of appeal
to these kinds of people. A big advantage that hackable GUI has to other kinds
Owner

Changes to hackable GUI are immediately apparent—that is its advantage over other kinds of hackable software.

> Changes to hackable GUI are immediately apparent—that is its advantage over other kinds of hackable software.
@ -0,0 +57,4 @@
to these kinds of people. A big advantage that hackable GUI has to other kinds
of hackable software is that changes to it are immediately apparent to anyone
looking at it. Canary's plan for adoption is to post some initial demonstrations
and functional Canary programs on image-oriented social media like r/unixporn.
Owner

Canary's plan for adoption is to post some initial demonstrations and functional Canary programs on image-oriented social media like r/unixporn.

Awkward, rewrite

> Canary's plan for adoption is to post some initial demonstrations and functional Canary programs on image-oriented social media like r/unixporn. Awkward, rewrite
Owner

Rewrite everything from that to the end of the paragraph.

Rewrite everything from that to the end of the paragraph.
emma marked this conversation as resolved
@ -0,0 +63,4 @@
others to establish a functioning ecosystem of Canary scripts and regular
contributors.
Canary would make a good project to be accepted to Tebibyte Media because its
Owner

Canary's contributions to Tebibyte Media are potentially valuable because [...]

Canary is a promising candidate for Tebibyte Media Network membership because [...]

Either of these is better

> Canary's contributions to Tebibyte Media are potentially valuable because [...] > Canary is a promising candidate for Tebibyte Media Network membership because [...] Either of these is better
mars marked this conversation as resolved
@ -0,0 +64,4 @@
contributors.
Canary would make a good project to be accepted to Tebibyte Media because its
post-structuralist nature of making no assumptions about the user's needs and
Owner

"post-structuralist modus operandi", maybe? "nature of making" is clunky, something else should take its place.

"post-structuralist modus operandi", maybe? "nature of making" is clunky, something else should take its place.
@ -0,0 +66,4 @@
Canary would make a good project to be accepted to Tebibyte Media because its
post-structuralist nature of making no assumptions about the user's needs and
its reliance on communal content creation matches Tebibyte Media's goals to
network users together towards similar ends. Other free software projects on
Owner

goals to network user together towards similar ends. You're addressing Tebibyte Media, we know what our goals are.

goals ~~to network user together towards similar ends~~. You're addressing Tebibyte Media, we know what our goals are.
@ -0,0 +67,4 @@
post-structuralist nature of making no assumptions about the user's needs and
its reliance on communal content creation matches Tebibyte Media's goals to
network users together towards similar ends. Other free software projects on
Tebibyte Media can use Canary for their GUI and convene with other network
Owner

Tebibyte Media could use Canary for their GUIs [...]

Tebibyte Media *could* use Canary for their GUIs [...]
mars marked this conversation as resolved
@ -0,0 +76,4 @@
network users together towards similar ends. Other Network members could use
Canary for their GUI and have an active community of Canary developers with whom
projects can share scripts with.
Owner

Go with the latter version over the former. I much prefer it.

Go with the latter version over the former. I much prefer it.
@ -0,0 +77,4 @@
Canary for their GUI and have an active community of Canary developers with whom
projects can share scripts with.
Canary is designed to be easy to develop alternative runtimes for, because its
Owner

for because [...]

for because [...]
emma marked this conversation as resolved
@ -0,0 +89,4 @@
shall be left open to develop a Canary runtime for web browsers, the web runtime
must require a different design architecture from its native counterpart and is
low priority. Canary's first target use case is to replace customizable desktop
widget apps with Canary-enabled apps. These may be wallpapers apps like
Owner

Canary-enabled apps. These may be [...]

clunky, reword

> Canary-enabled apps. These may be [...] clunky, reword
mars marked this conversation as resolved
@ -0,0 +96,4 @@
Virtual reality is also a primary target for Canary; the current VR ecosystem
is in desperate need of better GUIs and more free software alternatives. Canary
was originally conceived to fill both of these needs. Thus, VR-capable 3D game
Owner

these needs; thus, [...]

> these needs; thus, [...]
mars marked this conversation as resolved
@ -0,0 +97,4 @@
Virtual reality is also a primary target for Canary; the current VR ecosystem
is in desperate need of better GUIs and more free software alternatives. Canary
was originally conceived to fill both of these needs. Thus, VR-capable 3D game
engines such as Unity, StereoKit, and Bevy are considered first-class priority
Owner

"high priority" is a more common way of phrasing it.

"high priority" is a more common way of phrasing it.
mars marked this conversation as resolved
@ -0,0 +105,4 @@
MIT (aka Expat) or Apache-2.0. Both the LGPLv3 and permissive licenses allow
works to be linked to proprietary software, such as Unreal Engine and the Unity
game engine. The LGPLv3, however, requires that the work be linked to
proprietary software as a shared library. This shared library must provide to
Owner

shared library; this shared library must provide [...]

> shared library; this shared library must provide [...]
@ -0,0 +112,4 @@
If a third party distributes a shared library compiled from a modified copy of
an LGPLv3-licensed work, they must supply the modified source code to their
users. This prevents malicious parties from creating a custom canary-rs runtime
that is only useable with their applications. For more info, see Microsoft's
Owner

usable*

usable*
Owner

For more information, see [...]

> For more information, see [...]
mars marked this conversation as resolved
@ -0,0 +113,4 @@
an LGPLv3-licensed work, they must supply the modified source code to their
users. This prevents malicious parties from creating a custom canary-rs runtime
that is only useable with their applications. For more info, see Microsoft's
strategy to "Embrace, Extend, and Extinguish" other companies' software
Owner

other companies' software projects [3].

> ~~other companies'~~ software projects [3].
mars marked this conversation as resolved
@ -0,0 +116,4 @@
strategy to "Embrace, Extend, and Extinguish" other companies' software
projects [3].
The selection of a copyleft license allows for canary-rs to be used alongside
Owner

allows for canary-rs to be used alongside [...]

> allows ~~for~~ canary-rs to be used alongside [...]
mars marked this conversation as resolved
@ -0,0 +127,4 @@
possible. Few game developers who are unfamiliar with free software will choose
to take on the responsibilities that a non-Lesser GPL requires, no matter what
features Canary offers. The LGPL's slightly more liberal requirements will be
essential to Canary's adoption outside of the free software evangelist space.
Owner

Try to rephrase without saying "Canary" so many times.

Try to rephrase without saying "Canary" so many times.
mars marked this conversation as resolved
mars added 1 commit 2022-11-04 23:32:55 +00:00
emma requested changes 2022-11-05 00:19:04 +00:00
@ -0,0 +16,4 @@
programming, and neuters variety and creativity.
Canary inverts this hierarchy by cutting the GUI Gordian knot between
application logic and frontend logic and relocating complex GUI code from a
Owner

and by relocating [...]

> and by relocating [...]
@ -0,0 +17,4 @@
Canary inverts this hierarchy by cutting the GUI Gordian knot between
application logic and frontend logic and relocating complex GUI code from a
static native library to a modular scriptable runtime that can be customized
Owner

modular scriptable runtime that can be customized by the user.

> modular scriptable runtime ~~that can be customized by the user~~.
@ -0,0 +19,4 @@
application logic and frontend logic and relocating complex GUI code from a
static native library to a modular scriptable runtime that can be customized
by the user. Applications communicate with Canary scripts through
informally-standardized protocols, and the scripts provide the layout, input
Owner

protocols, through which scripts provide layout, [...] rendering information.

> protocols, through which scripts provide layout, [...] rendering information.
Owner

idk if "information" fits exactly but "the" should be replaced with some noun terminating the sentence.

idk if "information" fits exactly but "the" should be replaced with some noun terminating the sentence.
@ -0,0 +25,4 @@
This lifts the burden for the user of recompiling the target application or
integrating their changes into a larger upstream framework.
To understand the innovation of this design, imagine a stereotypical video game.
Owner

maybe call it a "standard" video game? "stereotypical" doesn't seem to fit here.

maybe call it a "standard" video game? "stereotypical" doesn't seem to fit here.
@ -0,0 +26,4 @@
integrating their changes into a larger upstream framework.
To understand the innovation of this design, imagine a stereotypical video game.
Let's say that this game has a health meter for the player that has a certain
Owner

To understand the innovation of this design, imagine a video game that uses a
meter to display a capacity and value for the player's health.

Something like that?

> To understand the innovation of this design, imagine a video game that uses a meter to display a capacity and value for the player's health. Something like that?
@ -0,0 +29,4 @@
Let's say that this game has a health meter for the player that has a certain
capacity and value. During the course of the game, that meter may be depleted
when the player takes damage, filled when the player uses a healing item, or
have its capacity increased when the player levels up. With Canary, the game
Owner

that meter may be depleted [...] be filled [...] have its capacity [...]

> that meter may be depleted [...] be filled [...] have its capacity [...]
@ -0,0 +36,4 @@
player's health while updating the position of the bar based on those events.
The player can then replace the provided script with their own
"simplehealthmeter" that renders a red dial instead, or a Zelda-style hearts
meter, or anything they want. Then, when they show off their new customization
Owner

Zelda-style hearts meter

a footnote for this would be good.

> Zelda-style hearts meter a footnote for this would be good.
@ -0,0 +61,4 @@
garnered from these GUI-customizing users, Canary's developers will use the
customizations and the scripts they write and share with others to establish a
functioning ecosystem of Canary scripts and regular contributors.
Owner

There is a not-insubstantial number of developers who would be interested in a
system like Canary. A maximally-hackable GUI framework are appealing to
communities such as Reddit's r/unixporn subreddit, where users who style their
GUIs for fun post their customizations. Hackable GUI frameworks make changes
immediately apparent to uninitiated observers, giving them an advantage in
publicity over other kinds of software.

To garner a userbase, Canary's development process will be posted in the form
of screenshots to image-based social media. This is how the project will gain
contributors, a base of scripts for users to hack on, and generally a healthy
and functioning ecosystem—organically.

> There is a not-insubstantial number of developers who would be interested in a system like Canary. A maximally-hackable GUI framework are appealing to communities such as Reddit's r/unixporn subreddit, where users who style their GUIs for fun post their customizations. Hackable GUI frameworks make changes immediately apparent to uninitiated observers, giving them an advantage in publicity over other kinds of software. > > To garner a userbase, Canary's development process will be posted in the form of screenshots to image-based social media. This is how the project will gain contributors, a base of scripts for users to hack on, and generally a healthy and functioning ecosystem—organically.
@ -0,0 +75,4 @@
Network members could use Canary for their GUIs and have an active community of
Canary developers with whom projects can share scripts with.
Canary is designed to be easy to develop alternative runtimes for, because its
Owner

for because [...]

> for because [...]
emma closed this pull request 2023-06-28 02:12:53 +00:00

Pull request closed

Sign in to join this conversation.
No Milestone
No project
No Assignees
3 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: meta/site#19
No description provided.