<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.restless.systems/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kraaabs</id>
	<title>DisNCord Community Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.restless.systems/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kraaabs"/>
	<link rel="alternate" type="text/html" href="https://wiki.restless.systems/wiki/Special:Contributions/Kraaabs"/>
	<updated>2026-05-29T17:30:36Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=Building_OpenFirmware_for_QEMU&amp;diff=1167</id>
		<title>Building OpenFirmware for QEMU</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=Building_OpenFirmware_for_QEMU&amp;diff=1167"/>
		<updated>2023-02-23T22:40:58Z</updated>

		<summary type="html">&lt;p&gt;Kraaabs: add gitlab link to the dockerfile ~Sarah&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Preservation and Documentation]]&lt;br /&gt;
In 2006, the source code for OpenFirmware&amp;lt;ref&amp;gt;https://openfirmware.info/Welcome_to_OpenBIOS&amp;lt;/ref&amp;gt; on x86 was released. Although there are instructions&amp;lt;ref&amp;gt;https://openfirmware.info/Open_Firmware#Building_Different_Versions&amp;lt;/ref&amp;gt; for building images for use with QEMU, they are sparse and don&#039;t work any more on modern, 64-bit Linux.&lt;br /&gt;
&lt;br /&gt;
== Setting up your own build environment ==&lt;br /&gt;
As far as I can tell, building OpenFirmware requires an older version of GCC as well as multilib support. The easiest way to get both of these things at once is to use an older Linux distribution in a virtual machine.&lt;br /&gt;
&lt;br /&gt;
Slackware 14.2 (the 32-bit version) is known to produce working builds. Just install the entire distribution and follow the [https://openfirmware.info/Open_Firmware#Building_Different_Versions instructions on the OpenFirmware wiki] to build your image of choice. As of 2023/02/22, this method seems to work fine.&lt;br /&gt;
&lt;br /&gt;
As well, [[User:Kraaabs]] has created a Dockerfile to build images without having to set up your own VM: [https://gitlab.com/sarahcrowle/of-docker-build https://gitlab.com/sarahcrowle/of-docker-build]&lt;br /&gt;
&lt;br /&gt;
== So why doesn&#039;t it work? ==&lt;br /&gt;
OpenFirmware is actually bootstrapped using a FORTH interpreter that it builds before the &amp;quot;real&amp;quot; build process starts. This interpreter is &#039;&#039;known&#039;&#039; not to build on aarch64, and segfaults on x86_64. 32-bit builds of the interpreter &#039;&#039;appear&#039;&#039; to work, but they produce broken images (with no error message!).&lt;br /&gt;
&lt;br /&gt;
At this point it&#039;s unclear whether the issue is with the FORTH interpreter itself (likely) or with the FORTH code used to build OpenFirmware (less likely). Either way, building on an older 32-bit system seems to work just fine, and produces images that run in modern versions of QEMU.&lt;br /&gt;
&lt;br /&gt;
== Just give me images! ==&lt;br /&gt;
[[User:Kraaabs]] has successfully built every kind of QEMU OpenFirmware image for x86. [https://picsofbread.com/dl/ofw-images.tar.xz Download here.]&lt;br /&gt;
&lt;br /&gt;
== Footnotes/references ==&lt;/div&gt;</summary>
		<author><name>Kraaabs</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=Building_OpenFirmware_for_QEMU&amp;diff=1165</id>
		<title>Building OpenFirmware for QEMU</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=Building_OpenFirmware_for_QEMU&amp;diff=1165"/>
		<updated>2023-02-23T02:53:18Z</updated>

		<summary type="html">&lt;p&gt;Kraaabs: a little page about building openfirmware in 2023 ~Sarah&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Preservation and Documentation]]&lt;br /&gt;
In 2006, the source code for OpenFirmware&amp;lt;ref&amp;gt;https://openfirmware.info/Welcome_to_OpenBIOS&amp;lt;/ref&amp;gt; on x86 was released. Although there are instructions&amp;lt;ref&amp;gt;https://openfirmware.info/Open_Firmware#Building_Different_Versions&amp;lt;/ref&amp;gt; for building images for use with QEMU, they are sparse and don&#039;t work any more on modern, 64-bit Linux.&lt;br /&gt;
&lt;br /&gt;
== Setting up your own build environment ==&lt;br /&gt;
As far as I can tell, building OpenFirmware requires an older version of GCC as well as multilib support. The easiest way to get both of these things at once is to use an older Linux distribution in a virtual machine.&lt;br /&gt;
&lt;br /&gt;
Slackware 14.2 (the 32-bit version) is known to produce working builds. Just install the entire distribution and follow the [https://openfirmware.info/Open_Firmware#Building_Different_Versions instructions on the OpenFirmware wiki] to build your image of choice. As of 2023/02/22, this method seems to work fine.&lt;br /&gt;
&lt;br /&gt;
== So why doesn&#039;t it work? ==&lt;br /&gt;
OpenFirmware is actually bootstrapped using a FORTH interpreter that it builds before the &amp;quot;real&amp;quot; build process starts. This interpreter is &#039;&#039;known&#039;&#039; not to build on aarch64, and segfaults on x86_64. 32-bit builds of the interpreter &#039;&#039;appear&#039;&#039; to work, but they produce broken images (with no error message!).&lt;br /&gt;
&lt;br /&gt;
At this point it&#039;s unclear whether the issue is with the FORTH interpreter itself (likely) or with the FORTH code used to build OpenFirmware (less likely). Either way, building on an older 32-bit system seems to work just fine, and produces images that run in modern versions of QEMU.&lt;br /&gt;
&lt;br /&gt;
== Just give me images! ==&lt;br /&gt;
[[User:Kraaabs]] has successfully built every kind of QEMU OpenFirmware image for x86. [https://picsofbread.com/dl/ofw-images.tar.xz Download here.]&lt;br /&gt;
&lt;br /&gt;
== Footnotes/references ==&lt;/div&gt;</summary>
		<author><name>Kraaabs</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=EAWebKit&amp;diff=976</id>
		<title>EAWebKit</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=EAWebKit&amp;diff=976"/>
		<updated>2023-01-29T22:34:12Z</updated>

		<summary type="html">&lt;p&gt;Kraaabs: /* Building EAWebKit */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Projects]]&lt;br /&gt;
[[Category:Preservation and Documentation]]&lt;br /&gt;
EAWebKit is EA&#039;s WebKit fork for use in their games and software. It&#039;s technically open source as per LGPL requirements&amp;lt;ref&amp;gt;https://gpl.ea.com/eawebkit.html&amp;lt;/ref&amp;gt;, but getting it to build is another story...&lt;br /&gt;
&lt;br /&gt;
[[User:Kraaabs]] is currently trying to get a build of EAWebKit working.&lt;br /&gt;
&lt;br /&gt;
== Building EAWebKit ==&lt;br /&gt;
EAWebKit does away with the CMake build system of regular WebKit (see [[Notes on WebKit]]) in favour of a set of hacked up Visual Studio solutions and projects. Therefore, at the moment we&#039;re only trying to build for Windows (however, other platforms should still be supported).&lt;br /&gt;
&lt;br /&gt;
Unfortunately, the versions of EASTL&amp;lt;ref&amp;gt;https://github.com/electronicarts/EASTL&amp;lt;/ref&amp;gt; and EABase&amp;lt;ref&amp;gt;https://github.com/electronicarts/EABase&amp;lt;/ref&amp;gt; (support libraries) bundled with the GPL source release of EAWebKit 16.4.2.0.0 are either broken or misconfigured, and they will not build correctly in Visual Studio 2022. Things that are broken are:&lt;br /&gt;
&lt;br /&gt;
* MSVC floating point intrinsics (such as &amp;lt;code&amp;gt;_Nan&amp;lt;/code&amp;gt; etc.)&lt;br /&gt;
** This can be resolved by defining &amp;lt;code&amp;gt;EASTL_CUSTOM_FLOAT_CONSTANTS_REQUIRED 1&amp;lt;/code&amp;gt; in order to force EASTL to use EA&#039;s own implementations of these definitions&lt;br /&gt;
* Include paths... Like all of the include paths.&lt;br /&gt;
** No resolution yet... this will probably require manual fixing of every single vcxproj in the build system.&lt;br /&gt;
* Some source paths are wrong in the vcxproj files&lt;br /&gt;
** An example is &amp;lt;code&amp;gt;EAWebKitSupportPackages\JavaScriptCore\local\JavaScriptCore\DerivedSources\pc64\dev-debug\LowLevelInterpreterWin.asm&amp;lt;/code&amp;gt; in the JavaScriptCore vcxproj. This can be worked around by replacing that source path with an absolute path (is the working directory wrong?)&lt;br /&gt;
&lt;br /&gt;
=== What about other releases of EAWebKit? ===&lt;br /&gt;
Those are even more broken! Releases of EAWebKit before 16.4.2.0.0 are full of hardcoded paths in the project files that break the build completely unless you manually tweak all of them. Luckily, the least broken version seems to be the latest one anyway.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
[[Notes on WebKit]]&lt;br /&gt;
&lt;br /&gt;
== Notes and References ==&lt;/div&gt;</summary>
		<author><name>Kraaabs</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=Notes_on_WebKit&amp;diff=975</id>
		<title>Notes on WebKit</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=Notes_on_WebKit&amp;diff=975"/>
		<updated>2023-01-29T22:32:51Z</updated>

		<summary type="html">&lt;p&gt;Kraaabs: add backlinks to the eawebkit page ~Sarah&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Preservation and Documentation]]&lt;br /&gt;
[[Category:Projects]]&lt;br /&gt;
WebKit is an open source Apple-led browser engine project that powers Safari and Epiphany, as well as being the original basis for Google&#039;s Blink engine. It is notably portable&amp;lt;ref&amp;gt;https://blogs.igalia.com/jaragunde/files/2015/10/igalia_building_browser_automotive.pdf&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://eu.access-company.com/netfront-html5-platforms-for-automotive.html&amp;lt;/ref&amp;gt;, powering platforms such as automotive displays, game consoles, and more.&lt;br /&gt;
&lt;br /&gt;
Unfortunately, WebKit documentation is fairly sparse -- especially when it comes to creating a &amp;quot;platform&amp;quot; that embeds WebKit directly. Therefore, most open source embedded WebKit projects (such as the headless browsers listed [https://github.com/dhamaniasad/HeadlessBrowsers here]) choose to use the existing GTK+ or Qt backends instead of using WebKit itself directly; this introduces additional dependencies, and makes it more difficult to port WebKit to platforms with fewer resources or library availability.&lt;br /&gt;
&lt;br /&gt;
Documenting the WebKit API will hopefully make it easier to port WebKit to weaker/vintage platforms, and also create a better understanding of what&#039;s going wrong when things inevitably go wrong...&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
&lt;br /&gt;
WebKit is actually not the browser engine itself&amp;lt;ref&amp;gt;https://trac.webkit.org/wiki/SourceDirectory&amp;lt;/ref&amp;gt;. Rather, WebKit is a frontend API that brings together WebCore (the rendering/layout engine) and JavaScriptCore (the JavaScript runtime) under one umbrella for browsers/platforms to use.&lt;br /&gt;
&lt;br /&gt;
As a note, there are actually two WebKit APIs. WebKit2&amp;lt;ref&amp;gt;https://trac.webkit.org/wiki/WebKit2&amp;lt;/ref&amp;gt; (now usually referred to as just &amp;quot;WebKit&amp;quot;) is the current, &amp;quot;modern&amp;quot; API, with features such as multi-process rendering, sandboxing support, and more. The old API, which used to just be called &amp;quot;WebKit&amp;quot;&amp;lt;ref&amp;gt;Yes. This will cause confusion.&amp;lt;/ref&amp;gt; is now called &amp;quot;WebKitLegacy&amp;quot;. This is a more &amp;quot;classical&amp;quot; browser engine that runs in a single process and has little to no support for modern browser sandboxing features. It&#039;s kept in the tree, but I believe it&#039;s deprecated.&lt;br /&gt;
&lt;br /&gt;
Modern ports (such as WPE or WebKit2GTK+) use the WebKit2/WebKit API. To avoid confusion over naming, this page will refer to the modern API as &amp;quot;WebKit2&amp;quot;, and the older API as &amp;quot;WebKitLegacy&amp;quot; to avoid ambiguity.&lt;br /&gt;
&lt;br /&gt;
=== Where does WPE factor in? ===&lt;br /&gt;
&lt;br /&gt;
Igalia&amp;lt;ref&amp;gt;https://www.igalia.com/&amp;lt;/ref&amp;gt; is an open source consultancy firm that is one of the primary non-Apple contributors to the WebKit codebase. Most notably, they maintain the WebKit2GTK+ port, as well as WPE.&lt;br /&gt;
&lt;br /&gt;
WPE can be considered a &amp;quot;meta&amp;quot; or &amp;quot;hybrid&amp;quot;&amp;lt;ref&amp;gt;https://wpewebkit.org/about/architecture.html&amp;lt;/ref&amp;gt; platform. Rather than targeting a specific UI toolkit or platform, it instead acts as a sort of shim on top of libWPE, which itself is a stripped back WebKit API. libWPE can target multiple backends, similarly to full-fat WebKit, and it&#039;s intended for use mostly in embedded applications, such as automotive displays or kiosks.&lt;br /&gt;
&lt;br /&gt;
WPE only has a few hard dependencies by design. The most notable and largest of these is EGL (meaning WPE does require a &amp;quot;real&amp;quot; GPU running on Linux or (maybe) BSD).&lt;br /&gt;
&lt;br /&gt;
== How do we add a new platform? ==&lt;br /&gt;
&lt;br /&gt;
With great difficulty. WebKit&#039;s build system is old and large. Most of the build system is CMake, but there are also various Perl, Python, and Ruby scripts thrown into the mix gluing various things together (most notably the Perl scripts that manage WebKit developer builds). This means that adding a new platform involves writing a total of about a dozen CMake scripts, modifying the Perl scripts, and figuring out which build system options and configuration &amp;lt;code&amp;gt;#define&amp;lt;/code&amp;gt;s are needed in order to get the platform working. There is some limited documentation&amp;lt;ref&amp;gt;https://trac.webkit.org/wiki/SuccessfulPortHowTo&amp;lt;/ref&amp;gt; on this on the WebKit wiki... but it&#039;s mostly undocumented. This is where the most work will have to be done. &lt;br /&gt;
&lt;br /&gt;
JSCOnly is a &amp;quot;platform&amp;quot; with a minimal setup that just builds JavaScriptCore and nothing else. This is often cited as an example to look at when creating a new platform. However, WPE is also likely something to look at, as it includes an actual renderer. This may help provide a better indication of what needs to get done.&lt;br /&gt;
&lt;br /&gt;
== Where are we right now? ==&lt;br /&gt;
&lt;br /&gt;
At the moment, [[User:Kraaabs]] has managed to build the WPE port, the libWPE Wayland/FDO backend, as well as cog&amp;lt;ref&amp;gt;https://github.com/Igalia/cog&amp;lt;/ref&amp;gt;, the &amp;quot;reference&amp;quot; WPE frontend. Next steps are:&lt;br /&gt;
&lt;br /&gt;
* Try to create an alternative backend for WPE. There is an x11 backend in the tree, but it&#039;s broken right now. Can a simple SDL2 backend be created so that we can use WPE on non-Wayland platforms?&lt;br /&gt;
* Decouple EGL from WPE. This could either be a lot of work, or fairly easy. Currently I think we can probably copy WPE, rip out the renderer, and replace it with the Cairo&amp;lt;ref&amp;gt;https://www.cairographics.org/&amp;lt;/ref&amp;gt; renderer that many of the other ports (including fellow Igalia port WebKit2GTK+) use already. This would provide us with a software rendering option we can use with libWPE... as it stands, I don&#039;t think creating a platform from scratch is feasible with a small team, so targeting WPE is smart.&lt;br /&gt;
* If decoupling EGL is not feasible, and we DO have to write our own backend, [[EAWebKit]] (see below) may be a good reference point (it uses a Cairo based renderer, etc).&lt;br /&gt;
&lt;br /&gt;
== Other interesting WebKit platforms ==&lt;br /&gt;
&lt;br /&gt;
[[User:Vmlemon]] has helpfully uncovered a few commercial WebKit backends from throughout history that may be useful resources to look at as far as creating our own platform:&lt;br /&gt;
&lt;br /&gt;
* [https://gpl.ea.com/eawebkit.html EA WebKit] - [[EAWebKit]] is used in various EA games for embedded UIs/login screens/what have you. A &#039;&#039;very&#039;&#039; clean Cairo-based backend, and a very small codebase. Could be a great resource.&lt;br /&gt;
* [https://doc.dl.playstation.net/doc/ps3-oss/webkit.html PS3 WebKit] - As used in the PS3 web browser.&lt;br /&gt;
* [https://github.com/blackberry/WebKit-Smartphone Blackberry WebKit] - As used on pre-BBOS 10 based Blackberry phones (Olympia platform). Could be interesting for future projects...&lt;br /&gt;
* [https://www.nintendo.co.jp/support/oss/index.html Nintendo WebKit (NetFront NX)] - A variant of Access Co. Ltd.&#039;s WebKit platform NetFront NX, as used on the Wii U, Switch, and 3DS. &#039;&#039;&#039;(update: doesn&#039;t actually contain any 3DS/Wii U/Switch modifications...?)&#039;&#039;&#039;&lt;br /&gt;
* [https://doc.dl.playstation.net/doc/psvita-oss/webkit.html PS Vita WebKit] - Another Sony WebKit variant, for the PlayStation Vita.&lt;br /&gt;
* [https://archive.org/details/web-core-08w-11-prod-08w-37 Nokia S40 WebKit] - As used in the browser for Nokia S40 phones. Previously lost, was recovered by [[User:Vmlemon|vmlemon]] from an old hard drive.&lt;br /&gt;
&lt;br /&gt;
The commonly held belief is that the Sony WebKit variants are also Access Co&#039;s NetFront. This appears to be false (at least for the PS3 and Vita variants). These variants contain &#039;&#039;Sony&#039;&#039; copyrights, not &#039;&#039;Access&#039;&#039; copyrights like the other NetFront NX-based stuff. (Not that that makes much difference. See below.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE THAT THESE WEBKIT VARIANTS ARE FREELY DISTRIBUTABLE/MODIFIABLE UNDER THE LGPL!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== What makes NetFront NX different from regular WebKit? ===&lt;br /&gt;
&lt;br /&gt;
Nothing at all! NetFront NX is literally just renamed WebKit. Nothing has changed except the branding. I&#039;m thinking it&#039;s more of a &amp;quot;service&amp;quot; than a &amp;quot;product&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
[[EAWebKit]]&lt;br /&gt;
&lt;br /&gt;
== Notes and References ==&lt;/div&gt;</summary>
		<author><name>Kraaabs</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=EAWebKit&amp;diff=974</id>
		<title>EAWebKit</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=EAWebKit&amp;diff=974"/>
		<updated>2023-01-29T22:31:32Z</updated>

		<summary type="html">&lt;p&gt;Kraaabs: create initial eawebkit page (for build instructions/patching and stuff... we&amp;#039;ll need it) ~Sarah&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Projects]]&lt;br /&gt;
[[Category:Preservation and Documentation]]&lt;br /&gt;
EAWebKit is EA&#039;s WebKit fork for use in their games and software. It&#039;s technically open source as per LGPL requirements&amp;lt;ref&amp;gt;https://gpl.ea.com/eawebkit.html&amp;lt;/ref&amp;gt;, but getting it to build is another story...&lt;br /&gt;
&lt;br /&gt;
[[User:Kraaabs]] is currently trying to get a build of EAWebKit working.&lt;br /&gt;
&lt;br /&gt;
== Building EAWebKit ==&lt;br /&gt;
EAWebKit does away with the CMake build system of regular WebKit (see [[Notes on WebKit]]) in favour of a set of hacked up Visual Studio solutions and projects. Therefore, at the moment we&#039;re only trying to build for Windows (however, other platforms should still be supported).&lt;br /&gt;
&lt;br /&gt;
Unfortunately, the versions of EASTL and EABase (support libraries) bundled with the GPL source release of EAWebKit 16.4.2.0.0 are either broken or misconfigured, and they will not build correctly in Visual Studio 2022. Things that are broken are:&lt;br /&gt;
&lt;br /&gt;
* MSVC floating point intrinsics (such as &amp;lt;code&amp;gt;_Nan&amp;lt;/code&amp;gt; etc.)&lt;br /&gt;
** This can be resolved by defining &amp;lt;code&amp;gt;EASTL_CUSTOM_FLOAT_CONSTANTS_REQUIRED 1&amp;lt;/code&amp;gt; in order to force EASTL to use EA&#039;s own implementations of these definitions&lt;br /&gt;
* Include paths... Like all of the include paths.&lt;br /&gt;
** No resolution yet... this will probably require manual fixing of every single vcxproj in the build system.&lt;br /&gt;
* Some source paths are wrong in the vcxproj files&lt;br /&gt;
** An example is &amp;lt;code&amp;gt;EAWebKitSupportPackages\JavaScriptCore\local\JavaScriptCore\DerivedSources\pc64\dev-debug\LowLevelInterpreterWin.asm&amp;lt;/code&amp;gt; in the JavaScriptCore vcxproj. This can be worked around by replacing that source path with an absolute path (is the working directory wrong?)&lt;br /&gt;
&lt;br /&gt;
=== What about other releases of EAWebKit? ===&lt;br /&gt;
Those are even more broken! Releases of EAWebKit before 16.4.2.0.0 are full of hardcoded paths in the project files that break the build completely unless you manually tweak all of them. Luckily, the least broken version seems to be the latest one anyway.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
[[Notes on WebKit]]&lt;br /&gt;
&lt;br /&gt;
== Notes and References ==&lt;/div&gt;</summary>
		<author><name>Kraaabs</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=Notes_on_WebKit&amp;diff=948</id>
		<title>Notes on WebKit</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=Notes_on_WebKit&amp;diff=948"/>
		<updated>2023-01-26T03:56:06Z</updated>

		<summary type="html">&lt;p&gt;Kraaabs: /* Other interesting WebKit platforms */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Preservation and Documentation]]&lt;br /&gt;
[[Category:Projects]]&lt;br /&gt;
WebKit is an open source Apple-led browser engine project that powers Safari and Epiphany, as well as being the original basis for Google&#039;s Blink engine. It is notably portable&amp;lt;ref&amp;gt;https://blogs.igalia.com/jaragunde/files/2015/10/igalia_building_browser_automotive.pdf&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://eu.access-company.com/netfront-html5-platforms-for-automotive.html&amp;lt;/ref&amp;gt;, powering platforms such as automotive displays, game consoles, and more.&lt;br /&gt;
&lt;br /&gt;
Unfortunately, WebKit documentation is fairly sparse -- especially when it comes to creating a &amp;quot;platform&amp;quot; that embeds WebKit directly. Therefore, most open source embedded WebKit projects (such as the headless browsers listed [https://github.com/dhamaniasad/HeadlessBrowsers here]) choose to use the existing GTK+ or Qt backends instead of using WebKit itself directly; this introduces additional dependencies, and makes it more difficult to port WebKit to platforms with fewer resources or library availability.&lt;br /&gt;
&lt;br /&gt;
Documenting the WebKit API will hopefully make it easier to port WebKit to weaker/vintage platforms, and also create a better understanding of what&#039;s going wrong when things inevitably go wrong...&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
&lt;br /&gt;
WebKit is actually not the browser engine itself&amp;lt;ref&amp;gt;https://trac.webkit.org/wiki/SourceDirectory&amp;lt;/ref&amp;gt;. Rather, WebKit is a frontend API that brings together WebCore (the rendering/layout engine) and JavaScriptCore (the JavaScript runtime) under one umbrella for browsers/platforms to use.&lt;br /&gt;
&lt;br /&gt;
As a note, there are actually two WebKit APIs. WebKit2&amp;lt;ref&amp;gt;https://trac.webkit.org/wiki/WebKit2&amp;lt;/ref&amp;gt; (now usually referred to as just &amp;quot;WebKit&amp;quot;) is the current, &amp;quot;modern&amp;quot; API, with features such as multi-process rendering, sandboxing support, and more. The old API, which used to just be called &amp;quot;WebKit&amp;quot;&amp;lt;ref&amp;gt;Yes. This will cause confusion.&amp;lt;/ref&amp;gt; is now called &amp;quot;WebKitLegacy&amp;quot;. This is a more &amp;quot;classical&amp;quot; browser engine that runs in a single process and has little to no support for modern browser sandboxing features. It&#039;s kept in the tree, but I believe it&#039;s deprecated.&lt;br /&gt;
&lt;br /&gt;
Modern ports (such as WPE or WebKit2GTK+) use the WebKit2/WebKit API. To avoid confusion over naming, this page will refer to the modern API as &amp;quot;WebKit2&amp;quot;, and the older API as &amp;quot;WebKitLegacy&amp;quot; to avoid ambiguity.&lt;br /&gt;
&lt;br /&gt;
=== Where does WPE factor in? ===&lt;br /&gt;
&lt;br /&gt;
Igalia&amp;lt;ref&amp;gt;https://www.igalia.com/&amp;lt;/ref&amp;gt; is an open source consultancy firm that is one of the primary non-Apple contributors to the WebKit codebase. Most notably, they maintain the WebKit2GTK+ port, as well as WPE.&lt;br /&gt;
&lt;br /&gt;
WPE can be considered a &amp;quot;meta&amp;quot; or &amp;quot;hybrid&amp;quot;&amp;lt;ref&amp;gt;https://wpewebkit.org/about/architecture.html&amp;lt;/ref&amp;gt; platform. Rather than targeting a specific UI toolkit or platform, it instead acts as a sort of shim on top of libWPE, which itself is a stripped back WebKit API. libWPE can target multiple backends, similarly to full-fat WebKit, and it&#039;s intended for use mostly in embedded applications, such as automotive displays or kiosks.&lt;br /&gt;
&lt;br /&gt;
WPE only has a few hard dependencies by design. The most notable and largest of these is EGL (meaning WPE does require a &amp;quot;real&amp;quot; GPU running on Linux or (maybe) BSD).&lt;br /&gt;
&lt;br /&gt;
== How do we add a new platform? ==&lt;br /&gt;
&lt;br /&gt;
With great difficulty. WebKit&#039;s build system is old and large. Most of the build system is CMake, but there are also various Perl, Python, and Ruby scripts thrown into the mix gluing various things together (most notably the Perl scripts that manage WebKit developer builds). This means that adding a new platform involves writing a total of about a dozen CMake scripts, modifying the Perl scripts, and figuring out which build system options and configuration &amp;lt;code&amp;gt;#define&amp;lt;/code&amp;gt;s are needed in order to get the platform working. There is some limited documentation&amp;lt;ref&amp;gt;https://trac.webkit.org/wiki/SuccessfulPortHowTo&amp;lt;/ref&amp;gt; on this on the WebKit wiki... but it&#039;s mostly undocumented. This is where the most work will have to be done. &lt;br /&gt;
&lt;br /&gt;
JSCOnly is a &amp;quot;platform&amp;quot; with a minimal setup that just builds JavaScriptCore and nothing else. This is often cited as an example to look at when creating a new platform. However, WPE is also likely something to look at, as it includes an actual renderer. This may help provide a better indication of what needs to get done.&lt;br /&gt;
&lt;br /&gt;
== Where are we right now? ==&lt;br /&gt;
&lt;br /&gt;
At the moment, [[User:Kraaabs]] has managed to build the WPE port, the libWPE Wayland/FDO backend, as well as cog&amp;lt;ref&amp;gt;https://github.com/Igalia/cog&amp;lt;/ref&amp;gt;, the &amp;quot;reference&amp;quot; WPE frontend. Next steps are:&lt;br /&gt;
&lt;br /&gt;
* Try to create an alternative backend for WPE. There is an x11 backend in the tree, but it&#039;s broken right now. Can a simple SDL2 backend be created so that we can use WPE on non-Wayland platforms?&lt;br /&gt;
* Decouple EGL from WPE. This could either be a lot of work, or fairly easy. Currently I think we can probably copy WPE, rip out the renderer, and replace it with the Cairo&amp;lt;ref&amp;gt;https://www.cairographics.org/&amp;lt;/ref&amp;gt; renderer that many of the other ports (including fellow Igalia port WebKit2GTK+) use already. This would provide us with a software rendering option we can use with libWPE... as it stands, I don&#039;t think creating a platform from scratch is feasible with a small team, so targeting WPE is smart.&lt;br /&gt;
* If decoupling EGL is not feasible, and we DO have to write our own backend, EA WebKit (see below) may be a good reference point (it uses a Cairo based renderer, etc).&lt;br /&gt;
&lt;br /&gt;
== Other interesting WebKit platforms ==&lt;br /&gt;
&lt;br /&gt;
[[User:Vmlemon]] has helpfully uncovered a few commercial WebKit backends from throughout history that may be useful resources to look at as far as creating our own platform:&lt;br /&gt;
&lt;br /&gt;
* [https://gpl.ea.com/eawebkit.html EA WebKit] - As used in various EA games for embedded UIs/login screens/what have you. A &#039;&#039;very&#039;&#039; clean Cairo-based backend, and a very small codebase. Could be a great resource.&lt;br /&gt;
* [https://doc.dl.playstation.net/doc/ps3-oss/webkit.html PS3 WebKit] - As used in the PS3 web browser.&lt;br /&gt;
* [https://github.com/blackberry/WebKit-Smartphone Blackberry WebKit] - As used on pre-BBOS 10 based Blackberry phones (Olympia platform). Could be interesting for future projects...&lt;br /&gt;
* [https://www.nintendo.co.jp/support/oss/index.html Nintendo WebKit (NetFront NX)] - A variant of Access Co. Ltd.&#039;s WebKit platform NetFront NX, as used on the Wii U, Switch, and 3DS. &#039;&#039;&#039;(update: doesn&#039;t actually contain any 3DS/Wii U/Switch modifications...?)&#039;&#039;&#039;&lt;br /&gt;
* [https://doc.dl.playstation.net/doc/psvita-oss/webkit.html PS Vita WebKit] - Another Sony WebKit variant, for the PlayStation Vita.&lt;br /&gt;
* [https://archive.org/details/web-core-08w-11-prod-08w-37 Nokia S40 WebKit] - As used in the browser for Nokia S40 phones. Previously lost, was recovered by [[User:Vmlemon|vmlemon]] from an old hard drive.&lt;br /&gt;
&lt;br /&gt;
The commonly held belief is that the Sony WebKit variants are also Access Co&#039;s NetFront. This appears to be false (at least for the PS3 and Vita variants). These variants contain &#039;&#039;Sony&#039;&#039; copyrights, not &#039;&#039;Access&#039;&#039; copyrights like the other NetFront NX-based stuff. (Not that that makes much difference. See below.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE THAT THESE WEBKIT VARIANTS ARE FREELY DISTRIBUTABLE/MODIFIABLE UNDER THE LGPL!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== What makes NetFront NX different from regular WebKit? ===&lt;br /&gt;
&lt;br /&gt;
Nothing at all! NetFront NX is literally just renamed WebKit. Nothing has changed except the branding. I&#039;m thinking it&#039;s more of a &amp;quot;service&amp;quot; than a &amp;quot;product&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Notes and References ==&lt;/div&gt;</summary>
		<author><name>Kraaabs</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=Notes_on_WebKit&amp;diff=947</id>
		<title>Notes on WebKit</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=Notes_on_WebKit&amp;diff=947"/>
		<updated>2023-01-26T03:54:29Z</updated>

		<summary type="html">&lt;p&gt;Kraaabs: /* Where are we right now? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Preservation and Documentation]]&lt;br /&gt;
[[Category:Projects]]&lt;br /&gt;
WebKit is an open source Apple-led browser engine project that powers Safari and Epiphany, as well as being the original basis for Google&#039;s Blink engine. It is notably portable&amp;lt;ref&amp;gt;https://blogs.igalia.com/jaragunde/files/2015/10/igalia_building_browser_automotive.pdf&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://eu.access-company.com/netfront-html5-platforms-for-automotive.html&amp;lt;/ref&amp;gt;, powering platforms such as automotive displays, game consoles, and more.&lt;br /&gt;
&lt;br /&gt;
Unfortunately, WebKit documentation is fairly sparse -- especially when it comes to creating a &amp;quot;platform&amp;quot; that embeds WebKit directly. Therefore, most open source embedded WebKit projects (such as the headless browsers listed [https://github.com/dhamaniasad/HeadlessBrowsers here]) choose to use the existing GTK+ or Qt backends instead of using WebKit itself directly; this introduces additional dependencies, and makes it more difficult to port WebKit to platforms with fewer resources or library availability.&lt;br /&gt;
&lt;br /&gt;
Documenting the WebKit API will hopefully make it easier to port WebKit to weaker/vintage platforms, and also create a better understanding of what&#039;s going wrong when things inevitably go wrong...&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
&lt;br /&gt;
WebKit is actually not the browser engine itself&amp;lt;ref&amp;gt;https://trac.webkit.org/wiki/SourceDirectory&amp;lt;/ref&amp;gt;. Rather, WebKit is a frontend API that brings together WebCore (the rendering/layout engine) and JavaScriptCore (the JavaScript runtime) under one umbrella for browsers/platforms to use.&lt;br /&gt;
&lt;br /&gt;
As a note, there are actually two WebKit APIs. WebKit2&amp;lt;ref&amp;gt;https://trac.webkit.org/wiki/WebKit2&amp;lt;/ref&amp;gt; (now usually referred to as just &amp;quot;WebKit&amp;quot;) is the current, &amp;quot;modern&amp;quot; API, with features such as multi-process rendering, sandboxing support, and more. The old API, which used to just be called &amp;quot;WebKit&amp;quot;&amp;lt;ref&amp;gt;Yes. This will cause confusion.&amp;lt;/ref&amp;gt; is now called &amp;quot;WebKitLegacy&amp;quot;. This is a more &amp;quot;classical&amp;quot; browser engine that runs in a single process and has little to no support for modern browser sandboxing features. It&#039;s kept in the tree, but I believe it&#039;s deprecated.&lt;br /&gt;
&lt;br /&gt;
Modern ports (such as WPE or WebKit2GTK+) use the WebKit2/WebKit API. To avoid confusion over naming, this page will refer to the modern API as &amp;quot;WebKit2&amp;quot;, and the older API as &amp;quot;WebKitLegacy&amp;quot; to avoid ambiguity.&lt;br /&gt;
&lt;br /&gt;
=== Where does WPE factor in? ===&lt;br /&gt;
&lt;br /&gt;
Igalia&amp;lt;ref&amp;gt;https://www.igalia.com/&amp;lt;/ref&amp;gt; is an open source consultancy firm that is one of the primary non-Apple contributors to the WebKit codebase. Most notably, they maintain the WebKit2GTK+ port, as well as WPE.&lt;br /&gt;
&lt;br /&gt;
WPE can be considered a &amp;quot;meta&amp;quot; or &amp;quot;hybrid&amp;quot;&amp;lt;ref&amp;gt;https://wpewebkit.org/about/architecture.html&amp;lt;/ref&amp;gt; platform. Rather than targeting a specific UI toolkit or platform, it instead acts as a sort of shim on top of libWPE, which itself is a stripped back WebKit API. libWPE can target multiple backends, similarly to full-fat WebKit, and it&#039;s intended for use mostly in embedded applications, such as automotive displays or kiosks.&lt;br /&gt;
&lt;br /&gt;
WPE only has a few hard dependencies by design. The most notable and largest of these is EGL (meaning WPE does require a &amp;quot;real&amp;quot; GPU running on Linux or (maybe) BSD).&lt;br /&gt;
&lt;br /&gt;
== How do we add a new platform? ==&lt;br /&gt;
&lt;br /&gt;
With great difficulty. WebKit&#039;s build system is old and large. Most of the build system is CMake, but there are also various Perl, Python, and Ruby scripts thrown into the mix gluing various things together (most notably the Perl scripts that manage WebKit developer builds). This means that adding a new platform involves writing a total of about a dozen CMake scripts, modifying the Perl scripts, and figuring out which build system options and configuration &amp;lt;code&amp;gt;#define&amp;lt;/code&amp;gt;s are needed in order to get the platform working. There is some limited documentation&amp;lt;ref&amp;gt;https://trac.webkit.org/wiki/SuccessfulPortHowTo&amp;lt;/ref&amp;gt; on this on the WebKit wiki... but it&#039;s mostly undocumented. This is where the most work will have to be done. &lt;br /&gt;
&lt;br /&gt;
JSCOnly is a &amp;quot;platform&amp;quot; with a minimal setup that just builds JavaScriptCore and nothing else. This is often cited as an example to look at when creating a new platform. However, WPE is also likely something to look at, as it includes an actual renderer. This may help provide a better indication of what needs to get done.&lt;br /&gt;
&lt;br /&gt;
== Where are we right now? ==&lt;br /&gt;
&lt;br /&gt;
At the moment, [[User:Kraaabs]] has managed to build the WPE port, the libWPE Wayland/FDO backend, as well as cog&amp;lt;ref&amp;gt;https://github.com/Igalia/cog&amp;lt;/ref&amp;gt;, the &amp;quot;reference&amp;quot; WPE frontend. Next steps are:&lt;br /&gt;
&lt;br /&gt;
* Try to create an alternative backend for WPE. There is an x11 backend in the tree, but it&#039;s broken right now. Can a simple SDL2 backend be created so that we can use WPE on non-Wayland platforms?&lt;br /&gt;
* Decouple EGL from WPE. This could either be a lot of work, or fairly easy. Currently I think we can probably copy WPE, rip out the renderer, and replace it with the Cairo&amp;lt;ref&amp;gt;https://www.cairographics.org/&amp;lt;/ref&amp;gt; renderer that many of the other ports (including fellow Igalia port WebKit2GTK+) use already. This would provide us with a software rendering option we can use with libWPE... as it stands, I don&#039;t think creating a platform from scratch is feasible with a small team, so targeting WPE is smart.&lt;br /&gt;
* If decoupling EGL is not feasible, and we DO have to write our own backend, EA WebKit (see below) may be a good reference point (it uses a Cairo based renderer, etc).&lt;br /&gt;
&lt;br /&gt;
== Other interesting WebKit platforms ==&lt;br /&gt;
&lt;br /&gt;
[[User:Vmlemon]] has helpfully uncovered a few commercial WebKit backends from throughout history that may be useful resources to look at as far as creating our own platform:&lt;br /&gt;
&lt;br /&gt;
* [https://gpl.ea.com/eawebkit.html EA WebKit] - As used in various EA games for embedded UIs/login screens/what have you. A &#039;&#039;very&#039;&#039; clean Cairo-based backend, and a very small codebase. Could be a great resource.&lt;br /&gt;
* [https://doc.dl.playstation.net/doc/ps3-oss/webkit.html PS3 WebKit] - As used in the PS3 web browser.&lt;br /&gt;
* [https://github.com/blackberry/WebKit-Smartphone Blackberry WebKit] - As used on pre-BBOS 10 based Blackberry phones (Olympia platform). Could be interesting for future projects...&lt;br /&gt;
* [https://www.3dbrew.org/w/index.php?title=Internet_Browser 3DS WebKit (NetFront)] - A variant of Access Co. Ltd.&#039;s WebKit platform NetFront. &#039;&#039;&#039;(update: doesn&#039;t actually contain any 3DS modifications...?)&#039;&#039;&#039;&lt;br /&gt;
* [https://doc.dl.playstation.net/doc/psvita-oss/webkit.html PS Vita WebKit] - Another Sony WebKit variant, for the PlayStation Vita.&lt;br /&gt;
* [https://archive.org/details/web-core-08w-11-prod-08w-37 Nokia S40 WebKit] - As used in the browser for Nokia S40 phones. Previously lost, was recovered by [[User:Vmlemon|vmlemon]] from an old hard drive.&lt;br /&gt;
&lt;br /&gt;
The commonly held belief is that the Sony WebKit variants are also Access Co&#039;s NetFront. This appears to be false (at least for the PS3 and Vita variants). These variants contain &#039;&#039;Sony&#039;&#039; copyrights, not &#039;&#039;Access&#039;&#039; copyrights like the other NetFront NX-based stuff. (Not that that makes much difference. See below.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE THAT THESE WEBKIT VARIANTS ARE FREELY DISTRIBUTABLE/MODIFIABLE UNDER THE LGPL!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== What makes NetFront NX different from regular WebKit? ===&lt;br /&gt;
&lt;br /&gt;
Nothing at all! NetFront NX is literally just renamed WebKit. Nothing has changed except the branding. I&#039;m thinking it&#039;s more of a &amp;quot;service&amp;quot; than a &amp;quot;product&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Notes and References ==&lt;/div&gt;</summary>
		<author><name>Kraaabs</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=Notes_on_WebKit&amp;diff=946</id>
		<title>Notes on WebKit</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=Notes_on_WebKit&amp;diff=946"/>
		<updated>2023-01-26T03:50:46Z</updated>

		<summary type="html">&lt;p&gt;Kraaabs: Sony WebKit is NOT NetFront NX ~Sarah&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Preservation and Documentation]]&lt;br /&gt;
[[Category:Projects]]&lt;br /&gt;
WebKit is an open source Apple-led browser engine project that powers Safari and Epiphany, as well as being the original basis for Google&#039;s Blink engine. It is notably portable&amp;lt;ref&amp;gt;https://blogs.igalia.com/jaragunde/files/2015/10/igalia_building_browser_automotive.pdf&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://eu.access-company.com/netfront-html5-platforms-for-automotive.html&amp;lt;/ref&amp;gt;, powering platforms such as automotive displays, game consoles, and more.&lt;br /&gt;
&lt;br /&gt;
Unfortunately, WebKit documentation is fairly sparse -- especially when it comes to creating a &amp;quot;platform&amp;quot; that embeds WebKit directly. Therefore, most open source embedded WebKit projects (such as the headless browsers listed [https://github.com/dhamaniasad/HeadlessBrowsers here]) choose to use the existing GTK+ or Qt backends instead of using WebKit itself directly; this introduces additional dependencies, and makes it more difficult to port WebKit to platforms with fewer resources or library availability.&lt;br /&gt;
&lt;br /&gt;
Documenting the WebKit API will hopefully make it easier to port WebKit to weaker/vintage platforms, and also create a better understanding of what&#039;s going wrong when things inevitably go wrong...&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
&lt;br /&gt;
WebKit is actually not the browser engine itself&amp;lt;ref&amp;gt;https://trac.webkit.org/wiki/SourceDirectory&amp;lt;/ref&amp;gt;. Rather, WebKit is a frontend API that brings together WebCore (the rendering/layout engine) and JavaScriptCore (the JavaScript runtime) under one umbrella for browsers/platforms to use.&lt;br /&gt;
&lt;br /&gt;
As a note, there are actually two WebKit APIs. WebKit2&amp;lt;ref&amp;gt;https://trac.webkit.org/wiki/WebKit2&amp;lt;/ref&amp;gt; (now usually referred to as just &amp;quot;WebKit&amp;quot;) is the current, &amp;quot;modern&amp;quot; API, with features such as multi-process rendering, sandboxing support, and more. The old API, which used to just be called &amp;quot;WebKit&amp;quot;&amp;lt;ref&amp;gt;Yes. This will cause confusion.&amp;lt;/ref&amp;gt; is now called &amp;quot;WebKitLegacy&amp;quot;. This is a more &amp;quot;classical&amp;quot; browser engine that runs in a single process and has little to no support for modern browser sandboxing features. It&#039;s kept in the tree, but I believe it&#039;s deprecated.&lt;br /&gt;
&lt;br /&gt;
Modern ports (such as WPE or WebKit2GTK+) use the WebKit2/WebKit API. To avoid confusion over naming, this page will refer to the modern API as &amp;quot;WebKit2&amp;quot;, and the older API as &amp;quot;WebKitLegacy&amp;quot; to avoid ambiguity.&lt;br /&gt;
&lt;br /&gt;
=== Where does WPE factor in? ===&lt;br /&gt;
&lt;br /&gt;
Igalia&amp;lt;ref&amp;gt;https://www.igalia.com/&amp;lt;/ref&amp;gt; is an open source consultancy firm that is one of the primary non-Apple contributors to the WebKit codebase. Most notably, they maintain the WebKit2GTK+ port, as well as WPE.&lt;br /&gt;
&lt;br /&gt;
WPE can be considered a &amp;quot;meta&amp;quot; or &amp;quot;hybrid&amp;quot;&amp;lt;ref&amp;gt;https://wpewebkit.org/about/architecture.html&amp;lt;/ref&amp;gt; platform. Rather than targeting a specific UI toolkit or platform, it instead acts as a sort of shim on top of libWPE, which itself is a stripped back WebKit API. libWPE can target multiple backends, similarly to full-fat WebKit, and it&#039;s intended for use mostly in embedded applications, such as automotive displays or kiosks.&lt;br /&gt;
&lt;br /&gt;
WPE only has a few hard dependencies by design. The most notable and largest of these is EGL (meaning WPE does require a &amp;quot;real&amp;quot; GPU running on Linux or (maybe) BSD).&lt;br /&gt;
&lt;br /&gt;
== How do we add a new platform? ==&lt;br /&gt;
&lt;br /&gt;
With great difficulty. WebKit&#039;s build system is old and large. Most of the build system is CMake, but there are also various Perl, Python, and Ruby scripts thrown into the mix gluing various things together (most notably the Perl scripts that manage WebKit developer builds). This means that adding a new platform involves writing a total of about a dozen CMake scripts, modifying the Perl scripts, and figuring out which build system options and configuration &amp;lt;code&amp;gt;#define&amp;lt;/code&amp;gt;s are needed in order to get the platform working. There is some limited documentation&amp;lt;ref&amp;gt;https://trac.webkit.org/wiki/SuccessfulPortHowTo&amp;lt;/ref&amp;gt; on this on the WebKit wiki... but it&#039;s mostly undocumented. This is where the most work will have to be done. &lt;br /&gt;
&lt;br /&gt;
JSCOnly is a &amp;quot;platform&amp;quot; with a minimal setup that just builds JavaScriptCore and nothing else. This is often cited as an example to look at when creating a new platform. However, WPE is also likely something to look at, as it includes an actual renderer. This may help provide a better indication of what needs to get done.&lt;br /&gt;
&lt;br /&gt;
== Where are we right now? ==&lt;br /&gt;
&lt;br /&gt;
At the moment, [[User:Kraaabs]] has managed to build the WPE port, the libWPE Wayland/FDO backend, as well as cog&amp;lt;ref&amp;gt;https://github.com/Igalia/cog&amp;lt;/ref&amp;gt;, the &amp;quot;reference&amp;quot; WPE frontend. Next steps are:&lt;br /&gt;
&lt;br /&gt;
* Try to create an alternative backend for WPE. There is an x11 backend in the tree, but it&#039;s broken right now. Can a simple SDL2 backend be created so that we can use WPE on non-Wayland platforms?&lt;br /&gt;
* Decouple EGL from WPE. This could either be a lot of work, or fairly easy. Currently I think we can probably copy WPE, rip out the renderer, and replace it with the Cairo&amp;lt;ref&amp;gt;https://www.cairographics.org/&amp;lt;/ref&amp;gt; renderer that many of the other ports (including fellow Igalia port WebKit2GTK+) use already. This would provide us with a software rendering option we can use with libWPE... as it stands, I don&#039;t think creating a platform from scratch is feasible with a small team, so targeting WPE is smart.&lt;br /&gt;
&lt;br /&gt;
== Other interesting WebKit platforms ==&lt;br /&gt;
&lt;br /&gt;
[[User:Vmlemon]] has helpfully uncovered a few commercial WebKit backends from throughout history that may be useful resources to look at as far as creating our own platform:&lt;br /&gt;
&lt;br /&gt;
* [https://gpl.ea.com/eawebkit.html EA WebKit] - As used in various EA games for embedded UIs/login screens/what have you. A &#039;&#039;very&#039;&#039; clean Cairo-based backend, and a very small codebase. Could be a great resource.&lt;br /&gt;
* [https://doc.dl.playstation.net/doc/ps3-oss/webkit.html PS3 WebKit] - As used in the PS3 web browser.&lt;br /&gt;
* [https://github.com/blackberry/WebKit-Smartphone Blackberry WebKit] - As used on pre-BBOS 10 based Blackberry phones (Olympia platform). Could be interesting for future projects...&lt;br /&gt;
* [https://www.3dbrew.org/w/index.php?title=Internet_Browser 3DS WebKit (NetFront)] - A variant of Access Co. Ltd.&#039;s WebKit platform NetFront. &#039;&#039;&#039;(update: doesn&#039;t actually contain any 3DS modifications...?)&#039;&#039;&#039;&lt;br /&gt;
* [https://doc.dl.playstation.net/doc/psvita-oss/webkit.html PS Vita WebKit] - Another Sony WebKit variant, for the PlayStation Vita.&lt;br /&gt;
* [https://archive.org/details/web-core-08w-11-prod-08w-37 Nokia S40 WebKit] - As used in the browser for Nokia S40 phones. Previously lost, was recovered by [[User:Vmlemon|vmlemon]] from an old hard drive.&lt;br /&gt;
&lt;br /&gt;
The commonly held belief is that the Sony WebKit variants are also Access Co&#039;s NetFront. This appears to be false (at least for the PS3 and Vita variants). These variants contain &#039;&#039;Sony&#039;&#039; copyrights, not &#039;&#039;Access&#039;&#039; copyrights like the other NetFront NX-based stuff. (Not that that makes much difference. See below.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE THAT THESE WEBKIT VARIANTS ARE FREELY DISTRIBUTABLE/MODIFIABLE UNDER THE LGPL!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== What makes NetFront NX different from regular WebKit? ===&lt;br /&gt;
&lt;br /&gt;
Nothing at all! NetFront NX is literally just renamed WebKit. Nothing has changed except the branding. I&#039;m thinking it&#039;s more of a &amp;quot;service&amp;quot; than a &amp;quot;product&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Notes and References ==&lt;/div&gt;</summary>
		<author><name>Kraaabs</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=Notes_on_WebKit&amp;diff=945</id>
		<title>Notes on WebKit</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=Notes_on_WebKit&amp;diff=945"/>
		<updated>2023-01-26T03:49:04Z</updated>

		<summary type="html">&lt;p&gt;Kraaabs: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Preservation and Documentation]]&lt;br /&gt;
[[Category:Projects]]&lt;br /&gt;
WebKit is an open source Apple-led browser engine project that powers Safari and Epiphany, as well as being the original basis for Google&#039;s Blink engine. It is notably portable&amp;lt;ref&amp;gt;https://blogs.igalia.com/jaragunde/files/2015/10/igalia_building_browser_automotive.pdf&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://eu.access-company.com/netfront-html5-platforms-for-automotive.html&amp;lt;/ref&amp;gt;, powering platforms such as automotive displays, game consoles, and more.&lt;br /&gt;
&lt;br /&gt;
Unfortunately, WebKit documentation is fairly sparse -- especially when it comes to creating a &amp;quot;platform&amp;quot; that embeds WebKit directly. Therefore, most open source embedded WebKit projects (such as the headless browsers listed [https://github.com/dhamaniasad/HeadlessBrowsers here]) choose to use the existing GTK+ or Qt backends instead of using WebKit itself directly; this introduces additional dependencies, and makes it more difficult to port WebKit to platforms with fewer resources or library availability.&lt;br /&gt;
&lt;br /&gt;
Documenting the WebKit API will hopefully make it easier to port WebKit to weaker/vintage platforms, and also create a better understanding of what&#039;s going wrong when things inevitably go wrong...&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
&lt;br /&gt;
WebKit is actually not the browser engine itself&amp;lt;ref&amp;gt;https://trac.webkit.org/wiki/SourceDirectory&amp;lt;/ref&amp;gt;. Rather, WebKit is a frontend API that brings together WebCore (the rendering/layout engine) and JavaScriptCore (the JavaScript runtime) under one umbrella for browsers/platforms to use.&lt;br /&gt;
&lt;br /&gt;
As a note, there are actually two WebKit APIs. WebKit2&amp;lt;ref&amp;gt;https://trac.webkit.org/wiki/WebKit2&amp;lt;/ref&amp;gt; (now usually referred to as just &amp;quot;WebKit&amp;quot;) is the current, &amp;quot;modern&amp;quot; API, with features such as multi-process rendering, sandboxing support, and more. The old API, which used to just be called &amp;quot;WebKit&amp;quot;&amp;lt;ref&amp;gt;Yes. This will cause confusion.&amp;lt;/ref&amp;gt; is now called &amp;quot;WebKitLegacy&amp;quot;. This is a more &amp;quot;classical&amp;quot; browser engine that runs in a single process and has little to no support for modern browser sandboxing features. It&#039;s kept in the tree, but I believe it&#039;s deprecated.&lt;br /&gt;
&lt;br /&gt;
Modern ports (such as WPE or WebKit2GTK+) use the WebKit2/WebKit API. To avoid confusion over naming, this page will refer to the modern API as &amp;quot;WebKit2&amp;quot;, and the older API as &amp;quot;WebKitLegacy&amp;quot; to avoid ambiguity.&lt;br /&gt;
&lt;br /&gt;
=== Where does WPE factor in? ===&lt;br /&gt;
&lt;br /&gt;
Igalia&amp;lt;ref&amp;gt;https://www.igalia.com/&amp;lt;/ref&amp;gt; is an open source consultancy firm that is one of the primary non-Apple contributors to the WebKit codebase. Most notably, they maintain the WebKit2GTK+ port, as well as WPE.&lt;br /&gt;
&lt;br /&gt;
WPE can be considered a &amp;quot;meta&amp;quot; or &amp;quot;hybrid&amp;quot;&amp;lt;ref&amp;gt;https://wpewebkit.org/about/architecture.html&amp;lt;/ref&amp;gt; platform. Rather than targeting a specific UI toolkit or platform, it instead acts as a sort of shim on top of libWPE, which itself is a stripped back WebKit API. libWPE can target multiple backends, similarly to full-fat WebKit, and it&#039;s intended for use mostly in embedded applications, such as automotive displays or kiosks.&lt;br /&gt;
&lt;br /&gt;
WPE only has a few hard dependencies by design. The most notable and largest of these is EGL (meaning WPE does require a &amp;quot;real&amp;quot; GPU running on Linux or (maybe) BSD).&lt;br /&gt;
&lt;br /&gt;
== How do we add a new platform? ==&lt;br /&gt;
&lt;br /&gt;
With great difficulty. WebKit&#039;s build system is old and large. Most of the build system is CMake, but there are also various Perl, Python, and Ruby scripts thrown into the mix gluing various things together (most notably the Perl scripts that manage WebKit developer builds). This means that adding a new platform involves writing a total of about a dozen CMake scripts, modifying the Perl scripts, and figuring out which build system options and configuration &amp;lt;code&amp;gt;#define&amp;lt;/code&amp;gt;s are needed in order to get the platform working. There is some limited documentation&amp;lt;ref&amp;gt;https://trac.webkit.org/wiki/SuccessfulPortHowTo&amp;lt;/ref&amp;gt; on this on the WebKit wiki... but it&#039;s mostly undocumented. This is where the most work will have to be done. &lt;br /&gt;
&lt;br /&gt;
JSCOnly is a &amp;quot;platform&amp;quot; with a minimal setup that just builds JavaScriptCore and nothing else. This is often cited as an example to look at when creating a new platform. However, WPE is also likely something to look at, as it includes an actual renderer. This may help provide a better indication of what needs to get done.&lt;br /&gt;
&lt;br /&gt;
== Where are we right now? ==&lt;br /&gt;
&lt;br /&gt;
At the moment, [[User:Kraaabs]] has managed to build the WPE port, the libWPE Wayland/FDO backend, as well as cog&amp;lt;ref&amp;gt;https://github.com/Igalia/cog&amp;lt;/ref&amp;gt;, the &amp;quot;reference&amp;quot; WPE frontend. Next steps are:&lt;br /&gt;
&lt;br /&gt;
* Try to create an alternative backend for WPE. There is an x11 backend in the tree, but it&#039;s broken right now. Can a simple SDL2 backend be created so that we can use WPE on non-Wayland platforms?&lt;br /&gt;
* Decouple EGL from WPE. This could either be a lot of work, or fairly easy. Currently I think we can probably copy WPE, rip out the renderer, and replace it with the Cairo&amp;lt;ref&amp;gt;https://www.cairographics.org/&amp;lt;/ref&amp;gt; renderer that many of the other ports (including fellow Igalia port WebKit2GTK+) use already. This would provide us with a software rendering option we can use with libWPE... as it stands, I don&#039;t think creating a platform from scratch is feasible with a small team, so targeting WPE is smart.&lt;br /&gt;
&lt;br /&gt;
== Other interesting WebKit platforms ==&lt;br /&gt;
&lt;br /&gt;
[[User:Vmlemon]] has helpfully uncovered a few commercial WebKit backends from throughout history that may be useful resources to look at as far as creating our own platform:&lt;br /&gt;
&lt;br /&gt;
* [https://gpl.ea.com/eawebkit.html EA WebKit] - As used in various EA games for embedded UIs/login screens/what have you. A &#039;&#039;very&#039;&#039; clean Cairo-based backend, and a very small codebase. Could be a great resource.&lt;br /&gt;
* [https://doc.dl.playstation.net/doc/ps3-oss/webkit.html PS3 WebKit] - As used in the PS3 web browser.&lt;br /&gt;
* [https://github.com/blackberry/WebKit-Smartphone Blackberry WebKit] - As used on pre-BBOS 10 based Blackberry phones (Olympia platform). Could be interesting for future projects...&lt;br /&gt;
* [https://www.3dbrew.org/w/index.php?title=Internet_Browser 3DS WebKit (NetFront)] - A variant of Access Co. Ltd.&#039;s WebKit platform NetFront. &#039;&#039;&#039;(update: doesn&#039;t actually contain any 3DS modifications...?)&#039;&#039;&#039;&lt;br /&gt;
* [https://doc.dl.playstation.net/doc/psvita-oss/webkit.html PS Vita WebKit] - Another Sony WebKit variant, for the PlayStation Vita.&lt;br /&gt;
* [https://archive.org/details/web-core-08w-11-prod-08w-37 Nokia S40 WebKit] - As used in the browser for Nokia S40 phones. Previously lost, was recovered by [[User:Vmlemon|vmlemon]] from an old hard drive.&lt;br /&gt;
&lt;br /&gt;
The commonly held belief is that the Sony WebKit variants are also Access Co&#039;s NetFront. However, contributions to the mainline WebKit tree have some Sony copyrights attached. Further investigation is needed to determine which is which.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE THAT THESE WEBKIT VARIANTS ARE FREELY DISTRIBUTABLE/MODIFIABLE UNDER THE LGPL!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== What makes NetFront NX different from regular WebKit? ===&lt;br /&gt;
&lt;br /&gt;
Nothing at all! NetFront NX is literally just renamed WebKit. Nothing has changed except the branding. I&#039;m thinking it&#039;s more of a &amp;quot;service&amp;quot; than a &amp;quot;product&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Notes and References ==&lt;/div&gt;</summary>
		<author><name>Kraaabs</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=Notes_on_WebKit&amp;diff=943</id>
		<title>Notes on WebKit</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=Notes_on_WebKit&amp;diff=943"/>
		<updated>2023-01-26T02:49:22Z</updated>

		<summary type="html">&lt;p&gt;Kraaabs: Add section for existing third-party out-of-tree WebKit platforms (commercial stuff) ~Sarah&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Preservation and Documentation]]&lt;br /&gt;
[[Category:Projects]]&lt;br /&gt;
WebKit is an open source Apple-led browser engine project that powers Safari and Epiphany, as well as being the original basis for Google&#039;s Blink engine. It is notably portable&amp;lt;ref&amp;gt;https://blogs.igalia.com/jaragunde/files/2015/10/igalia_building_browser_automotive.pdf&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://eu.access-company.com/netfront-html5-platforms-for-automotive.html&amp;lt;/ref&amp;gt;, powering platforms such as automotive displays, game consoles, and more.&lt;br /&gt;
&lt;br /&gt;
Unfortunately, WebKit documentation is fairly sparse -- especially when it comes to creating a &amp;quot;platform&amp;quot; that embeds WebKit directly. Therefore, most open source embedded WebKit projects (such as the headless browsers listed [https://github.com/dhamaniasad/HeadlessBrowsers here]) choose to use the existing GTK+ or Qt backends instead of using WebKit itself directly; this introduces additional dependencies, and makes it more difficult to port WebKit to platforms with fewer resources or library availability.&lt;br /&gt;
&lt;br /&gt;
Documenting the WebKit API will hopefully make it easier to port WebKit to weaker/vintage platforms, and also create a better understanding of what&#039;s going wrong when things inevitably go wrong...&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
&lt;br /&gt;
WebKit is actually not the browser engine itself&amp;lt;ref&amp;gt;https://trac.webkit.org/wiki/SourceDirectory&amp;lt;/ref&amp;gt;. Rather, WebKit is a frontend API that brings together WebCore (the rendering/layout engine) and JavaScriptCore (the JavaScript runtime) under one umbrella for browsers/platforms to use.&lt;br /&gt;
&lt;br /&gt;
As a note, there are actually two WebKit APIs. WebKit2&amp;lt;ref&amp;gt;https://trac.webkit.org/wiki/WebKit2&amp;lt;/ref&amp;gt; (now usually referred to as just &amp;quot;WebKit&amp;quot;) is the current, &amp;quot;modern&amp;quot; API, with features such as multi-process rendering, sandboxing support, and more. The old API, which used to just be called &amp;quot;WebKit&amp;quot;&amp;lt;ref&amp;gt;Yes. This will cause confusion.&amp;lt;/ref&amp;gt; is now called &amp;quot;WebKitLegacy&amp;quot;. This is a more &amp;quot;classical&amp;quot; browser engine that runs in a single process and has little to no support for modern browser sandboxing features. It&#039;s kept in the tree, but I believe it&#039;s deprecated.&lt;br /&gt;
&lt;br /&gt;
Modern ports (such as WPE or WebKit2GTK+) use the WebKit2/WebKit API. To avoid confusion over naming, this page will refer to the modern API as &amp;quot;WebKit2&amp;quot;, and the older API as &amp;quot;WebKitLegacy&amp;quot; to avoid ambiguity.&lt;br /&gt;
&lt;br /&gt;
=== Where does WPE factor in? ===&lt;br /&gt;
&lt;br /&gt;
Igalia&amp;lt;ref&amp;gt;https://www.igalia.com/&amp;lt;/ref&amp;gt; is an open source consultancy firm that is one of the primary non-Apple contributors to the WebKit codebase. Most notably, they maintain the WebKit2GTK+ port, as well as WPE.&lt;br /&gt;
&lt;br /&gt;
WPE can be considered a &amp;quot;meta&amp;quot; or &amp;quot;hybrid&amp;quot;&amp;lt;ref&amp;gt;https://wpewebkit.org/about/architecture.html&amp;lt;/ref&amp;gt; platform. Rather than targeting a specific UI toolkit or platform, it instead acts as a sort of shim on top of libWPE, which itself is a stripped back WebKit API. libWPE can target multiple backends, similarly to full-fat WebKit, and it&#039;s intended for use mostly in embedded applications, such as automotive displays or kiosks.&lt;br /&gt;
&lt;br /&gt;
WPE only has a few hard dependencies by design. The most notable and largest of these is EGL (meaning WPE does require a &amp;quot;real&amp;quot; GPU running on Linux or (maybe) BSD).&lt;br /&gt;
&lt;br /&gt;
== How do we add a new platform? ==&lt;br /&gt;
&lt;br /&gt;
With great difficulty. WebKit&#039;s build system is old and large. Most of the build system is CMake, but there are also various Perl, Python, and Ruby scripts thrown into the mix gluing various things together (most notably the Perl scripts that manage WebKit developer builds). This means that adding a new platform involves writing a total of about a dozen CMake scripts, modifying the Perl scripts, and figuring out which build system options and configuration &amp;lt;code&amp;gt;#define&amp;lt;/code&amp;gt;s are needed in order to get the platform working. There is some limited documentation&amp;lt;ref&amp;gt;https://trac.webkit.org/wiki/SuccessfulPortHowTo&amp;lt;/ref&amp;gt; on this on the WebKit wiki... but it&#039;s mostly undocumented. This is where the most work will have to be done. &lt;br /&gt;
&lt;br /&gt;
JSCOnly is a &amp;quot;platform&amp;quot; with a minimal setup that just builds JavaScriptCore and nothing else. This is often cited as an example to look at when creating a new platform. However, WPE is also likely something to look at, as it includes an actual renderer. This may help provide a better indication of what needs to get done.&lt;br /&gt;
&lt;br /&gt;
== Where are we right now? ==&lt;br /&gt;
&lt;br /&gt;
At the moment, [[User:Kraaabs]] has managed to build the WPE port, the libWPE Wayland/FDO backend, as well as cog&amp;lt;ref&amp;gt;https://github.com/Igalia/cog&amp;lt;/ref&amp;gt;, the &amp;quot;reference&amp;quot; WPE frontend. Next steps are:&lt;br /&gt;
&lt;br /&gt;
* Try to create an alternative backend for WPE. There is an x11 backend in the tree, but it&#039;s broken right now. Can a simple SDL2 backend be created so that we can use WPE on non-Wayland platforms?&lt;br /&gt;
* Decouple EGL from WPE. This could either be a lot of work, or fairly easy. Currently I think we can probably copy WPE, rip out the renderer, and replace it with the Cairo&amp;lt;ref&amp;gt;https://www.cairographics.org/&amp;lt;/ref&amp;gt; renderer that many of the other ports (including fellow Igalia port WebKit2GTK+) use already. This would provide us with a software rendering option we can use with libWPE... as it stands, I don&#039;t think creating a platform from scratch is feasible with a small team, so targeting WPE is smart.&lt;br /&gt;
&lt;br /&gt;
== Other interesting WebKit platforms ==&lt;br /&gt;
&lt;br /&gt;
[[User:Vmlemon]] has helpfully uncovered a few commercial WebKit backends from throughout history that may be useful resources to look at as far as creating our own platform:&lt;br /&gt;
&lt;br /&gt;
* [https://gpl.ea.com/eawebkit.html EA WebKit] - As used in various EA games for embedded UIs/login screens/what have you. A &#039;&#039;very&#039;&#039; clean Cairo-based backend, and a very small codebase. Could be a great resource.&lt;br /&gt;
* [https://doc.dl.playstation.net/doc/ps3-oss/webkit.html PS3 WebKit] - As used in the PS3 web browser.&lt;br /&gt;
* [https://github.com/blackberry/WebKit-Smartphone Blackberry WebKit] - As used on pre-BBOS 10 based Blackberry phones (Olympia platform). Could be interesting for future projects...&lt;br /&gt;
* [https://www.3dbrew.org/w/index.php?title=Internet_Browser 3DS WebKit (NetFront)] - A variant of Access Co. Ltd.&#039;s WebKit platform NetFront.&lt;br /&gt;
* [https://doc.dl.playstation.net/doc/psvita-oss/webkit.html PS Vita WebKit] - Another Sony WebKit variant, for the PlayStation Vita.&lt;br /&gt;
* [https://archive.org/details/web-core-08w-11-prod-08w-37 Nokia S40 WebKit] - As used in the browser for Nokia S40 phones. Previously lost, was recovered by [[User:Vmlemon|vmlemon]] from an old hard drive.&lt;br /&gt;
&lt;br /&gt;
The commonly held belief is that the Sony WebKit variants are also Access Co&#039;s NetFront. However, contributions to the mainline WebKit tree have some Sony copyrights attached. Further investigation is needed to determine which is which.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE THAT THESE WEBKIT VARIANTS ARE FREELY DISTRIBUTABLE/MODIFIABLE UNDER THE LGPL!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Notes and References ==&lt;/div&gt;</summary>
		<author><name>Kraaabs</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=Project:Permissions&amp;diff=942</id>
		<title>Project:Permissions</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=Project:Permissions&amp;diff=942"/>
		<updated>2023-01-26T02:35:49Z</updated>

		<summary type="html">&lt;p&gt;Kraaabs: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article is dedicated to helping new users understand how to set up a user account and how the different permissions work in this wiki. &lt;br /&gt;
&lt;br /&gt;
== Setting up a new user account ==&lt;br /&gt;
Currently, this wiki requires users to create or login to their account to create or edit pages, which is why most users would want to make an account here.&lt;br /&gt;
&lt;br /&gt;
=== Creating the account ===&lt;br /&gt;
# Go to the underlined text that says &amp;quot;Create account&amp;quot; or the text that says &amp;quot;Log in&amp;quot;.&lt;br /&gt;
# If you clicked &amp;quot;Create account&amp;quot;, simply fill out the required boxes with the relevant information, and fill out the optional boxes if you wish. If you clicked &amp;quot;Log in&amp;quot;, click &amp;quot;Join DisNCord community wiki&amp;quot; and then fill out the steps above. &lt;br /&gt;
# After this, fill out the bot protection at the bottom, and click &amp;quot;Create account&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
You now have an account, and should automatically be logged into it.&lt;br /&gt;
&lt;br /&gt;
=== Verifying your email address ===&lt;br /&gt;
Note: You only need to do this step if you have specified an email when you were creating your account.&lt;br /&gt;
&lt;br /&gt;
# Check the inbox of the email address you specififed.&lt;br /&gt;
# You should have an email from &#039;noreply@restless.systems&#039; asking if it was you who added your email to the account you made.&lt;br /&gt;
# Click the first link on the page, as it will tell the server that it was you who added your email to that account.&lt;br /&gt;
&lt;br /&gt;
Your account should now be fully activated and ready for use.&lt;br /&gt;
&lt;br /&gt;
== User permissions ==&lt;br /&gt;
&lt;br /&gt;
There are several different &amp;quot;groups&amp;quot; that are in this server that give you various permissions in the wiki.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Administrators&#039;&#039;&#039;:&lt;br /&gt;
These are users which are in charge of moderation and general upkeep of the wiki. Some bots are also in this group as they need admin features to do their task(s).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bots&#039;&#039;&#039;:&lt;br /&gt;
These are robots that are designed for automatic monitoring of the wiki, among other things. Currently, there are only 2 bots: &#039;Abuse filter&#039; and &#039;⧼abusefilter-blocker⧽&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bureaucrats&#039;&#039;&#039;:&lt;br /&gt;
These are users that can set permissions for other users. Administrators will usually have this.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Check user&#039;&#039;&#039;:&lt;br /&gt;
These users have the ability to see the IP logs on the wiki. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interface administrator&#039;&#039;&#039;:&lt;br /&gt;
Interface administrators can change the CSS and JS of the wiki. These users are considered administrators. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Suppressors&#039;&#039;&#039;:&lt;br /&gt;
These users have the ability to hide or delete unwanted log entries.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;uploadaccess&#039;&#039;&#039;:&lt;br /&gt;
These are users which have the ability to upload images to this wiki using [[Special:Upload|this link]]. You can request this permission by opening a ticket on Discord.&lt;br /&gt;
&lt;br /&gt;
You can find a list of users that have a specified group [[Special:ListUsers|here]].&lt;/div&gt;</summary>
		<author><name>Kraaabs</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=Notes_on_WebKit&amp;diff=939</id>
		<title>Notes on WebKit</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=Notes_on_WebKit&amp;diff=939"/>
		<updated>2023-01-25T20:37:41Z</updated>

		<summary type="html">&lt;p&gt;Kraaabs: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Preservation and Documentation]]&lt;br /&gt;
[[Category:Projects]]&lt;br /&gt;
WebKit is an open source Apple-led browser engine project that powers Safari and Epiphany, as well as being the original basis for Google&#039;s Blink engine. It is notably portable&amp;lt;ref&amp;gt;https://blogs.igalia.com/jaragunde/files/2015/10/igalia_building_browser_automotive.pdf&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://eu.access-company.com/netfront-html5-platforms-for-automotive.html&amp;lt;/ref&amp;gt;, powering platforms such as automotive displays, game consoles, and more.&lt;br /&gt;
&lt;br /&gt;
Unfortunately, WebKit documentation is fairly sparse -- especially when it comes to creating a &amp;quot;platform&amp;quot; that embeds WebKit directly. Therefore, most open source embedded WebKit projects (such as the headless browsers listed [https://github.com/dhamaniasad/HeadlessBrowsers here]) choose to use the existing GTK+ or Qt backends instead of using WebKit itself directly; this introduces additional dependencies, and makes it more difficult to port WebKit to platforms with fewer resources or library availability.&lt;br /&gt;
&lt;br /&gt;
Documenting the WebKit API will hopefully make it easier to port WebKit to weaker/vintage platforms, and also create a better understanding of what&#039;s going wrong when things inevitably go wrong...&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
&lt;br /&gt;
WebKit is actually not the browser engine itself&amp;lt;ref&amp;gt;https://trac.webkit.org/wiki/SourceDirectory&amp;lt;/ref&amp;gt;. Rather, WebKit is a frontend API that brings together WebCore (the rendering/layout engine) and JavaScriptCore (the JavaScript runtime) under one umbrella for browsers/platforms to use.&lt;br /&gt;
&lt;br /&gt;
As a note, there are actually two WebKit APIs. WebKit2&amp;lt;ref&amp;gt;https://trac.webkit.org/wiki/WebKit2&amp;lt;/ref&amp;gt; (now usually referred to as just &amp;quot;WebKit&amp;quot;) is the current, &amp;quot;modern&amp;quot; API, with features such as multi-process rendering, sandboxing support, and more. The old API, which used to just be called &amp;quot;WebKit&amp;quot;&amp;lt;ref&amp;gt;Yes. This will cause confusion.&amp;lt;/ref&amp;gt; is now called &amp;quot;WebKitLegacy&amp;quot;. This is a more &amp;quot;classical&amp;quot; browser engine that runs in a single process and has little to no support for modern browser sandboxing features. It&#039;s kept in the tree, but I believe it&#039;s deprecated.&lt;br /&gt;
&lt;br /&gt;
Modern ports (such as WPE or WebKit2GTK+) use the WebKit2/WebKit API. To avoid confusion over naming, this page will refer to the modern API as &amp;quot;WebKit2&amp;quot;, and the older API as &amp;quot;WebKitLegacy&amp;quot; to avoid ambiguity.&lt;br /&gt;
&lt;br /&gt;
=== Where does WPE factor in? ===&lt;br /&gt;
&lt;br /&gt;
Igalia&amp;lt;ref&amp;gt;https://www.igalia.com/&amp;lt;/ref&amp;gt; is an open source consultancy firm that is one of the primary non-Apple contributors to the WebKit codebase. Most notably, they maintain the WebKit2GTK+ port, as well as WPE.&lt;br /&gt;
&lt;br /&gt;
WPE can be considered a &amp;quot;meta&amp;quot; or &amp;quot;hybrid&amp;quot;&amp;lt;ref&amp;gt;https://wpewebkit.org/about/architecture.html&amp;lt;/ref&amp;gt; platform. Rather than targeting a specific UI toolkit or platform, it instead acts as a sort of shim on top of libWPE, which itself is a stripped back WebKit API. libWPE can target multiple backends, similarly to full-fat WebKit, and it&#039;s intended for use mostly in embedded applications, such as automotive displays or kiosks.&lt;br /&gt;
&lt;br /&gt;
WPE only has a few hard dependencies by design. The most notable and largest of these is EGL (meaning WPE does require a &amp;quot;real&amp;quot; GPU running on Linux or (maybe) BSD).&lt;br /&gt;
&lt;br /&gt;
== How do we add a new platform? ==&lt;br /&gt;
&lt;br /&gt;
With great difficulty. WebKit&#039;s build system is old and large. Most of the build system is CMake, but there are also various Perl, Python, and Ruby scripts thrown into the mix gluing various things together (most notably the Perl scripts that manage WebKit developer builds). This means that adding a new platform involves writing a total of about a dozen CMake scripts, modifying the Perl scripts, and figuring out which build system options and configuration &amp;lt;code&amp;gt;#define&amp;lt;/code&amp;gt;s are needed in order to get the platform working. There is some limited documentation&amp;lt;ref&amp;gt;https://trac.webkit.org/wiki/SuccessfulPortHowTo&amp;lt;/ref&amp;gt; on this on the WebKit wiki... but it&#039;s mostly undocumented. This is where the most work will have to be done. &lt;br /&gt;
&lt;br /&gt;
JSCOnly is a &amp;quot;platform&amp;quot; with a minimal setup that just builds JavaScriptCore and nothing else. This is often cited as an example to look at when creating a new platform. However, WPE is also likely something to look at, as it includes an actual renderer. This may help provide a better indication of what needs to get done.&lt;br /&gt;
&lt;br /&gt;
== Where are we right now? ==&lt;br /&gt;
&lt;br /&gt;
At the moment, [[User:Kraaabs]] has managed to build the WPE port, the libWPE Wayland/FDO backend, as well as cog&amp;lt;ref&amp;gt;https://github.com/Igalia/cog&amp;lt;/ref&amp;gt;, the &amp;quot;reference&amp;quot; WPE frontend. Next steps are:&lt;br /&gt;
&lt;br /&gt;
* Try to create an alternative backend for WPE. There is an x11 backend in the tree, but it&#039;s broken right now. Can a simple SDL2 backend be created so that we can use WPE on non-Wayland platforms?&lt;br /&gt;
* Decouple EGL from WPE. This could either be a lot of work, or fairly easy. Currently I think we can probably copy WPE, rip out the renderer, and replace it with the Cairo&amp;lt;ref&amp;gt;https://www.cairographics.org/&amp;lt;/ref&amp;gt; renderer that many of the other ports (including fellow Igalia port WebKit2GTK+) use already. This would provide us with a software rendering option we can use with libWPE... as it stands, I don&#039;t think creating a platform from scratch is feasible with a small team, so targeting WPE is smart.&lt;br /&gt;
&lt;br /&gt;
== Notes and References ==&lt;/div&gt;</summary>
		<author><name>Kraaabs</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=Notes_on_WebKit&amp;diff=938</id>
		<title>Notes on WebKit</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=Notes_on_WebKit&amp;diff=938"/>
		<updated>2023-01-25T20:34:45Z</updated>

		<summary type="html">&lt;p&gt;Kraaabs: Initial WebKit page ~Sarah&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Preservation and Documentation]]&lt;br /&gt;
[[Category:Projects]]&lt;br /&gt;
&lt;br /&gt;
WebKit is an open source Apple-led browser engine project that powers Safari and Epiphany, as well as being the original basis for Google&#039;s Blink engine. It is notably portable&amp;lt;ref&amp;gt;https://blogs.igalia.com/jaragunde/files/2015/10/igalia_building_browser_automotive.pdf&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;https://eu.access-company.com/netfront-html5-platforms-for-automotive.html&amp;lt;/ref&amp;gt;, powering platforms such as automotive displays, game consoles, and more.&lt;br /&gt;
&lt;br /&gt;
Unfortunately, WebKit documentation is fairly sparse -- especially when it comes to creating a &amp;quot;platform&amp;quot; that embeds WebKit directly. Therefore, most open source embedded WebKit projects (such as the headless browsers listed [https://github.com/dhamaniasad/HeadlessBrowsers here]) choose to use the existing GTK+ or Qt backends instead of using WebKit itself directly; this introduces additional dependencies, and makes it more difficult to port WebKit to platforms with fewer resources or library availability.&lt;br /&gt;
&lt;br /&gt;
Documenting the WebKit API will hopefully make it easier to port WebKit to weaker/vintage platforms, and also create a better understanding of what&#039;s going wrong when things inevitably go wrong...&lt;br /&gt;
&lt;br /&gt;
== Architecture ==&lt;br /&gt;
&lt;br /&gt;
WebKit is actually not the browser engine itself&amp;lt;ref&amp;gt;https://trac.webkit.org/wiki/SourceDirectory&amp;lt;/ref&amp;gt;. Rather, WebKit is a frontend API that brings together WebCore (the rendering/layout engine) and JavaScriptCore (the JavaScript runtime) under one umbrella for browsers/platforms to use.&lt;br /&gt;
&lt;br /&gt;
As a note, there are actually two WebKit APIs. WebKit2&amp;lt;ref&amp;gt;https://trac.webkit.org/wiki/WebKit2&amp;lt;/ref&amp;gt; (now usually referred to as just &amp;quot;WebKit&amp;quot;) is the current, &amp;quot;modern&amp;quot; API, with features such as multi-process rendering, sandboxing support, and more. The old API, which used to just be called &amp;quot;WebKit&amp;quot;&amp;lt;ref&amp;gt;Yes. This will cause confusion.&amp;lt;/ref&amp;gt; is now called &amp;quot;WebKitLegacy&amp;quot;. This is a more &amp;quot;classical&amp;quot; browser engine that runs in a single process and has little to no support for modern browser sandboxing features. It&#039;s kept in the tree, but I believe it&#039;s deprecated.&lt;br /&gt;
&lt;br /&gt;
Modern ports (such as WPE or WebKit2GTK+) use the WebKit2/WebKit API. To avoid confusion over naming, this page will refer to the modern API as &amp;quot;WebKit2&amp;quot;, and the older API as &amp;quot;WebKitLegacy&amp;quot; to avoid ambiguity.&lt;br /&gt;
&lt;br /&gt;
=== Where does WPE factor in? ===&lt;br /&gt;
&lt;br /&gt;
Igalia&amp;lt;ref&amp;gt;https://www.igalia.com/&amp;lt;/ref&amp;gt; is an open source consultancy firm that is one of the primary non-Apple contributors to the WebKit codebase. Most notably, they maintain the WebKit2GTK+ port, as well as WPE.&lt;br /&gt;
&lt;br /&gt;
WPE can be considered a &amp;quot;meta&amp;quot; or &amp;quot;hybrid&amp;quot;&amp;lt;ref&amp;gt;https://wpewebkit.org/about/architecture.html&amp;lt;/ref&amp;gt; platform. Rather than targeting a specific UI toolkit or platform, it instead acts as a sort of shim on top of libWPE, which itself is a stripped back WebKit API. libWPE can target multiple backends, similarly to full-fat WebKit, and it&#039;s intended for use mostly in embedded applications, such as automotive displays or kiosks.&lt;br /&gt;
&lt;br /&gt;
WPE only has a few hard dependencies by design. The most notable and largest of these is EGL (meaning WPE does require a &amp;quot;real&amp;quot; GPU running on Linux or (maybe) BSD).&lt;br /&gt;
&lt;br /&gt;
== How do we add a new platform? ==&lt;br /&gt;
&lt;br /&gt;
With great difficulty. WebKit&#039;s build system is old and large. Most of the build system is CMake, but there are also various Perl, Python, and Ruby scripts thrown into the mix gluing various things together (most notably the Perl scripts that manage WebKit developer builds). This means that adding a new platform involves writing a total of about a dozen CMake scripts, modifying the Perl scripts, and figuring out which build system options and configuration &amp;lt;code&amp;gt;#define&amp;lt;/code&amp;gt;s are needed in order to get the platform working. There is some limited documentation&amp;lt;ref&amp;gt;https://trac.webkit.org/wiki/SuccessfulPortHowTo&amp;lt;/ref&amp;gt; on this on the WebKit wiki... but it&#039;s mostly undocumented. This is where the most work will have to be done. &lt;br /&gt;
&lt;br /&gt;
JSCOnly is a &amp;quot;platform&amp;quot; with a minimal setup that just builds JavaScriptCore and nothing else. This is often cited as an example to look at when creating a new platform. However, WPE is also likely something to look at, as it includes an actual renderer. This may help provide a better indication of what needs to get done.&lt;br /&gt;
&lt;br /&gt;
== Where are we right now? ==&lt;br /&gt;
&lt;br /&gt;
At the moment, [[User:Kraaabs]] has managed to build the WPE port, the libWPE Wayland/FDO backend, as well as cog&amp;lt;ref&amp;gt;https://github.com/Igalia/cog&amp;lt;/ref&amp;gt;, the &amp;quot;reference&amp;quot; WPE frontend. Next steps are:&lt;br /&gt;
&lt;br /&gt;
* Try to create an alternative backend for WPE. There is an x11 backend in the tree, but it&#039;s broken right now. Can a simple SDL2 backend be created so that we can use WPE on non-Wayland platforms?&lt;br /&gt;
* Decouple EGL from WPE. This could either be a lot of work, or fairly easy. Currently I think we can probably copy WPE, rip out the renderer, and replace it with the Cairo&amp;lt;ref&amp;gt;https://www.cairographics.org/&amp;lt;/ref&amp;gt; renderer that many of the other ports (including fellow Igalia port WebKit2GTK+) use already. This would provide us with a software rendering option we can use with libWPE... as it stands, I don&#039;t think creating a platform from scratch is feasible with a small team, so targeting WPE is smart.&lt;br /&gt;
&lt;br /&gt;
== Notes and References ==&lt;/div&gt;</summary>
		<author><name>Kraaabs</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=Slow_Computing_Speedrunning&amp;diff=912</id>
		<title>Slow Computing Speedrunning</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=Slow_Computing_Speedrunning&amp;diff=912"/>
		<updated>2023-01-24T22:51:40Z</updated>

		<summary type="html">&lt;p&gt;Kraaabs: /* Windows 98/ME on the Cursed 486 (NCommander) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Competition]]&lt;br /&gt;
Welcome to the Slow Computing any% Speedrunning Contest; also known as watching digital paint dry.&lt;br /&gt;
&lt;br /&gt;
The goal of this contest is simple. To celebrate the long code [https://xkcd.com/303/] times, we&#039;re running an informal contest to celebrate this era of batch processing.&lt;br /&gt;
&lt;br /&gt;
== Objective and Rules ==&lt;br /&gt;
&lt;br /&gt;
It&#039;s pretty simple:&lt;br /&gt;
* Using any vintage computer of your choice, perform a long-running task of some sort&lt;br /&gt;
* Livestream, or otherwise provide regular status updates that show how far you have gotten.&lt;br /&gt;
* Emulators and the like are A-OK; just let us know what it&#039;s doing.&lt;br /&gt;
&lt;br /&gt;
After each run, success or failure, our judges (which is mostly just the regulars in #paint-drying on [https://discord.gg/V8esNah Discord]) will deem what, if any titles such run has earned, and an entirely subjective place on the Wall of Pain. There are absolutely no prizes besides the knowledge that you might be immortalized here for the life of the wiki.&lt;br /&gt;
&lt;br /&gt;
Do you dare step up?&lt;br /&gt;
&lt;br /&gt;
=== Examples of projects ===&lt;br /&gt;
For example, upgrading through every version of OS/2, building GCC, or the like. Livestream or otherwise regularly update the panting drying competition community. For NCommander&#039;s entries, VoDs on YouTube were provided. Europa livestreamed the terminal on Discord throughout the duration. Any sorta long running log with regular updates is acceptable.&lt;br /&gt;
&lt;br /&gt;
= The Wall of Pain =&lt;br /&gt;
New categories will be added as needed&lt;br /&gt;
&lt;br /&gt;
== Idle Pain ==&lt;br /&gt;
Idle Pain refers to tasks where they&#039;re started, and mostly left untouched until they finish (excluding minor tweaks, build failures, etc.)&lt;br /&gt;
&lt;br /&gt;
=== GCC 8 on an Ultra 5 running OpenBSD/sparc64 (Europa) ===&lt;br /&gt;
* &#039;&#039;&#039;Status:&#039;&#039;&#039; Complete!&lt;br /&gt;
* &#039;&#039;&#039;Duration:&#039;&#039;&#039; Approximately 5.375 days (4.5 days GCC, 0.875 days CDE)&lt;br /&gt;
* &#039;&#039;&#039;Proof:&#039;&#039;&#039; Livestreamed on Discord, updates periodically provided via Discord, [https://twitter.com/europa6502/status/1587304622749876224 Twitter], and Mastodon&lt;br /&gt;
* &#039;&#039;&#039;Comments:&#039;&#039;&#039;&lt;br /&gt;
** The build that started it all, Europa&#039;s attempt to install CDE which required upgrading GCC, and starting a multiday build process that lead to the creation of the paint drying community ... I&#039;m still wondering how we got here - [[User:NCommander|NCommander]] ([[User talk:NCommander|talk]]) 14:54, 4 November 2022 (UTC)&lt;br /&gt;
** It finished! She managed to build CDE with her new GCC after some help from NCommander, and is now working on configuring her newly built CDE! - [[User:Kraaabs|Kraaabs]] (([[User talk:Kraaabs|talk]]) 01:56, 7 November 2022 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Forcing Windows 7 onto a 66MHz CPU (Griffin) ===&lt;br /&gt;
* &#039;&#039;&#039;Status:&#039;&#039;&#039; Complete!&lt;br /&gt;
* &#039;&#039;&#039;Duration:&#039;&#039;&#039; About 14 hours&lt;br /&gt;
* &#039;&#039;&#039;Proof:&#039;&#039;&#039; Livestreamed on Discord, and live-updated in a Discord thread&lt;br /&gt;
* &#039;&#039;&#039;Comments:&#039;&#039;&#039;&lt;br /&gt;
** The first entry to finish, I believe! They used 86box emulating a VIA Samuel, and a lot of trial and error to get the thing to boot at all. Was a fun one to watch. Nice and painful. [https://twitter.com/FOSSfirefighter/status/1588999569593208832 N tweeted about this one, too.] - [[User:Kraaabs|Kraaabs]] ([[User talk:Kraaabs|talk]]) 03:02, 7 November 2022 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Installing Gentoo in DOSBochs in QEMU on Void Linux on a PowerBook G4 (Krabs) ===&lt;br /&gt;
* &#039;&#039;&#039;Status:&#039;&#039;&#039; &amp;lt;del&amp;gt;Ongoing&amp;lt;/del&amp;gt; Failed :(&lt;br /&gt;
* &#039;&#039;&#039;Duration:&#039;&#039;&#039; About 52 hours so far.&lt;br /&gt;
* &#039;&#039;&#039;Proof:&#039;&#039;&#039; Livestreamed on Discord, and live-updated in a Discord thread&lt;br /&gt;
* &#039;&#039;&#039;Comments:&#039;&#039;&#039;&lt;br /&gt;
** Yep, still going. It&#039;s been about 52 hours (~24-ish of which was prep work), and we&#039;re still decompressing the kernel on the Gentoo install CD. In for the long haul, this one. Being that I have to babysit this, is it active pain? There&#039;s a lot of waiting. Hybrid pain, maybe. :^) - [[User:Kraaabs|Kraaabs]] ([[User talk:Kraaabs|talk]]) 03:06, 7 November 2022 (UTC)&lt;br /&gt;
** It failed a while ago, I&#039;m just lazy. Eventually it hit a timeout :&#039;(. Oh well, it was fun. - [[User:Kraaabs|Kraaabs]] ([[User talk:Kraaabs|talk]]) 22:46, 24 January 2023 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Compiling every major release of NetBSD on a SparcStation 2 (Daghdha) ===&lt;br /&gt;
* &#039;&#039;&#039;Status:&#039;&#039;&#039; Ongoing&lt;br /&gt;
* &#039;&#039;&#039;Duration:&#039;&#039;&#039; 54 days (as of 2 Jan 2023)&lt;br /&gt;
* &#039;&#039;&#039;Expected to Complete:&#039;&#039;&#039; 15 March 2023 (~73 days)&lt;br /&gt;
* &#039;&#039;&#039;Proof:&#039;&#039;&#039; Livestreamed on Discord, and live-updated in a Discord thread. Each release takes a week to build.&lt;br /&gt;
&lt;br /&gt;
=== Installing Windows 98 inside of Windows XP inside of Windows Vista inside of Windows 8 inside of Windows 10 (Autumn) ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Status:&#039;&#039;&#039; Ongoing&lt;br /&gt;
* &#039;&#039;&#039;Duration:&#039;&#039;&#039; 13 days (as of 1/12/23)&lt;br /&gt;
* &#039;&#039;&#039;Proof:&#039;&#039;&#039; Discord live stream + milestones in the corresponding channel&lt;br /&gt;
* &#039;&#039;&#039;Comments:&#039;&#039;&#039; &lt;br /&gt;
** FFS the XP installer took 11 straight days to boot &#039;&#039;&#039;&#039;&#039;TEXT MODE&#039;&#039;&#039;&#039;&#039;... I am going to be in for a long wait on this one... - [[User:Autumnbreeze|Autumn]] ([[User talk:Autumnbreeze|talk]]) 12:13, 12 January 2023 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Compiling Rust on a Mac OS X 10.7 VM (Bridget) ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Status&#039;&#039;&#039;: Ongoing&lt;br /&gt;
* &#039;&#039;&#039;Duration&#039;&#039;&#039;: 3 hours (as of 2022-01-24 02:37 PM)&lt;br /&gt;
* &#039;&#039;&#039;Proof&#039;&#039;&#039;: Discord live stream + occasional milestones&lt;br /&gt;
* &#039;&#039;&#039;Comments&#039;&#039;&#039;:&lt;br /&gt;
** Crap, I didn&#039;t tell Macports to download the source versions of the packages. :/ Still took an hour to install the binaries, so we&#039;re in for a wild ride here, huh? :P As of writing, it&#039;s installing the &amp;lt;code&amp;gt;ncurses&amp;lt;/code&amp;gt; dependency. - [[User:Bridgetr|Bridget]] ([[User talk:Bridgetr|talk]]) 14:32, 24 January 2023 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Active Pain ==&lt;br /&gt;
Active Pain entries are livestreams or single projects that are actively worked on over the period of the competition. They can be over multiple sessions, with time being tallied up.&lt;br /&gt;
&lt;br /&gt;
=== Windows 98/ME on the Cursed 486 (NCommander) ===&lt;br /&gt;
* &#039;&#039;&#039;Status:&#039;&#039;&#039; On Hiatus/Ongoing&lt;br /&gt;
* &#039;&#039;&#039;Proof:&#039;&#039;&#039; https://www.youtube.com/watch?v=0uaINJAktLA (and messages in #content + Fedi)&lt;br /&gt;
* &#039;&#039;&#039;Duration:&#039;&#039;&#039; Multiple attempts over multiple days, one 9 hour&lt;br /&gt;
* &#039;&#039;&#039;Comments:&#039;&#039;&#039;&lt;br /&gt;
** You can&#039;t install ME on 32 MiB of memory. Upgrades ordered. So far, Windows 98 First Edition was installed from floppies, second edition from Netware, and ME from NetWare and local install, with each attempt taking literal hours. - [[User:NCommander|NCommander]] ([[User talk:NCommander|talk]]) 13:44, 2 January 2023 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Upgrading Through Every Version of OS/2 (NCommander) ===&lt;br /&gt;
* &#039;&#039;&#039;Status:&#039;&#039;&#039; Complete/Historical&lt;br /&gt;
*&#039;&#039;&#039;Proof:&#039;&#039;&#039; VoDs: https://www.youtube.com/watch?v=xeaRlhz96mI and https://www.youtube.com/watch?v=8uwGTHZzzF4&lt;br /&gt;
* &#039;&#039;&#039;Duration:&#039;&#039;&#039; Approximately 22 Hours&lt;br /&gt;
* &#039;&#039;&#039;Comments:&#039;&#039;&#039; &lt;br /&gt;
** ow [[User:NCommander|- NCommander]] ([[User talk:NCommander|talk]]) 14:54, 4 November 2022 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Windows 10 in QEMU on a PowerBook G4 (Krabs) ===&lt;br /&gt;
* &#039;&#039;&#039;Status:&#039;&#039;&#039; Complete/Historical&lt;br /&gt;
*&#039;&#039;&#039;Proof:&#039;&#039;&#039; Was live-updated on Discord, and also in the [https://picsofbread.com/potato-bread writeup here]&lt;br /&gt;
* &#039;&#039;&#039;Duration:&#039;&#039;&#039; About 10 active hours, and about 18 more waiting for it to boot&lt;br /&gt;
* &#039;&#039;&#039;Comments:&#039;&#039;&#039; &lt;br /&gt;
** This was painful. Good way to spend a few days with COVID though. [[User:Kraaabs|- Kraaabs]] ([[User talk:Kraaabs|talk]]) 02:00, 7 November 2022 (UTC)&lt;/div&gt;</summary>
		<author><name>Kraaabs</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=Slow_Computing_Speedrunning&amp;diff=911</id>
		<title>Slow Computing Speedrunning</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=Slow_Computing_Speedrunning&amp;diff=911"/>
		<updated>2023-01-24T22:51:09Z</updated>

		<summary type="html">&lt;p&gt;Kraaabs: oops&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Competition]]&lt;br /&gt;
Welcome to the Slow Computing any% Speedrunning Contest; also known as watching digital paint dry.&lt;br /&gt;
&lt;br /&gt;
The goal of this contest is simple. To celebrate the long code [https://xkcd.com/303/] times, we&#039;re running an informal contest to celebrate this era of batch processing.&lt;br /&gt;
&lt;br /&gt;
== Objective and Rules ==&lt;br /&gt;
&lt;br /&gt;
It&#039;s pretty simple:&lt;br /&gt;
* Using any vintage computer of your choice, perform a long-running task of some sort&lt;br /&gt;
* Livestream, or otherwise provide regular status updates that show how far you have gotten.&lt;br /&gt;
* Emulators and the like are A-OK; just let us know what it&#039;s doing.&lt;br /&gt;
&lt;br /&gt;
After each run, success or failure, our judges (which is mostly just the regulars in #paint-drying on [https://discord.gg/V8esNah Discord]) will deem what, if any titles such run has earned, and an entirely subjective place on the Wall of Pain. There are absolutely no prizes besides the knowledge that you might be immortalized here for the life of the wiki.&lt;br /&gt;
&lt;br /&gt;
Do you dare step up?&lt;br /&gt;
&lt;br /&gt;
=== Examples of projects ===&lt;br /&gt;
For example, upgrading through every version of OS/2, building GCC, or the like. Livestream or otherwise regularly update the panting drying competition community. For NCommander&#039;s entries, VoDs on YouTube were provided. Europa livestreamed the terminal on Discord throughout the duration. Any sorta long running log with regular updates is acceptable.&lt;br /&gt;
&lt;br /&gt;
= The Wall of Pain =&lt;br /&gt;
New categories will be added as needed&lt;br /&gt;
&lt;br /&gt;
== Idle Pain ==&lt;br /&gt;
Idle Pain refers to tasks where they&#039;re started, and mostly left untouched until they finish (excluding minor tweaks, build failures, etc.)&lt;br /&gt;
&lt;br /&gt;
=== GCC 8 on an Ultra 5 running OpenBSD/sparc64 (Europa) ===&lt;br /&gt;
* &#039;&#039;&#039;Status:&#039;&#039;&#039; Complete!&lt;br /&gt;
* &#039;&#039;&#039;Duration:&#039;&#039;&#039; Approximately 5.375 days (4.5 days GCC, 0.875 days CDE)&lt;br /&gt;
* &#039;&#039;&#039;Proof:&#039;&#039;&#039; Livestreamed on Discord, updates periodically provided via Discord, [https://twitter.com/europa6502/status/1587304622749876224 Twitter], and Mastodon&lt;br /&gt;
* &#039;&#039;&#039;Comments:&#039;&#039;&#039;&lt;br /&gt;
** The build that started it all, Europa&#039;s attempt to install CDE which required upgrading GCC, and starting a multiday build process that lead to the creation of the paint drying community ... I&#039;m still wondering how we got here - [[User:NCommander|NCommander]] ([[User talk:NCommander|talk]]) 14:54, 4 November 2022 (UTC)&lt;br /&gt;
** It finished! She managed to build CDE with her new GCC after some help from NCommander, and is now working on configuring her newly built CDE! - [[User:Kraaabs|Kraaabs]] (([[User talk:Kraaabs|talk]]) 01:56, 7 November 2022 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Forcing Windows 7 onto a 66MHz CPU (Griffin) ===&lt;br /&gt;
* &#039;&#039;&#039;Status:&#039;&#039;&#039; Complete!&lt;br /&gt;
* &#039;&#039;&#039;Duration:&#039;&#039;&#039; About 14 hours&lt;br /&gt;
* &#039;&#039;&#039;Proof:&#039;&#039;&#039; Livestreamed on Discord, and live-updated in a Discord thread&lt;br /&gt;
* &#039;&#039;&#039;Comments:&#039;&#039;&#039;&lt;br /&gt;
** The first entry to finish, I believe! They used 86box emulating a VIA Samuel, and a lot of trial and error to get the thing to boot at all. Was a fun one to watch. Nice and painful. [https://twitter.com/FOSSfirefighter/status/1588999569593208832 N tweeted about this one, too.] - [[User:Kraaabs|Kraaabs]] ([[User talk:Kraaabs|talk]]) 03:02, 7 November 2022 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Installing Gentoo in DOSBochs in QEMU on Void Linux on a PowerBook G4 (Krabs) ===&lt;br /&gt;
* &#039;&#039;&#039;Status:&#039;&#039;&#039; &amp;lt;del&amp;gt;Ongoing&amp;lt;/del&amp;gt; Failed :(&lt;br /&gt;
* &#039;&#039;&#039;Duration:&#039;&#039;&#039; About 52 hours so far.&lt;br /&gt;
* &#039;&#039;&#039;Proof:&#039;&#039;&#039; Livestreamed on Discord, and live-updated in a Discord thread&lt;br /&gt;
* &#039;&#039;&#039;Comments:&#039;&#039;&#039;&lt;br /&gt;
** Yep, still going. It&#039;s been about 52 hours (~24-ish of which was prep work), and we&#039;re still decompressing the kernel on the Gentoo install CD. In for the long haul, this one. Being that I have to babysit this, is it active pain? There&#039;s a lot of waiting. Hybrid pain, maybe. :^) - [[User:Kraaabs|Kraaabs]] ([[User talk:Kraaabs|talk]]) 03:06, 7 November 2022 (UTC)&lt;br /&gt;
** It failed a while ago, I&#039;m just lazy. Eventually it hit a timeout :&#039;(. Oh well, it was fun. - [[User:Kraaabs|Kraaabs]] ([[User talk:Kraaabs|talk]]) 22:46, 24 January 2023 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Compiling every major release of NetBSD on a SparcStation 2 (Daghdha) ===&lt;br /&gt;
* &#039;&#039;&#039;Status:&#039;&#039;&#039; Ongoing&lt;br /&gt;
* &#039;&#039;&#039;Duration:&#039;&#039;&#039; 54 days (as of 2 Jan 2023)&lt;br /&gt;
* &#039;&#039;&#039;Expected to Complete:&#039;&#039;&#039; 15 March 2023 (~73 days)&lt;br /&gt;
* &#039;&#039;&#039;Proof:&#039;&#039;&#039; Livestreamed on Discord, and live-updated in a Discord thread. Each release takes a week to build.&lt;br /&gt;
&lt;br /&gt;
=== Installing Windows 98 inside of Windows XP inside of Windows Vista inside of Windows 8 inside of Windows 10 (Autumn) ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Status:&#039;&#039;&#039; Ongoing&lt;br /&gt;
* &#039;&#039;&#039;Duration:&#039;&#039;&#039; 13 days (as of 1/12/23)&lt;br /&gt;
* &#039;&#039;&#039;Proof:&#039;&#039;&#039; Discord live stream + milestones in the corresponding channel&lt;br /&gt;
* &#039;&#039;&#039;Comments:&#039;&#039;&#039; &lt;br /&gt;
** FFS the XP installer took 11 straight days to boot &#039;&#039;&#039;&#039;&#039;TEXT MODE&#039;&#039;&#039;&#039;&#039;... I am going to be in for a long wait on this one... - [[User:Autumnbreeze|Autumn]] ([[User talk:Autumnbreeze|talk]]) 12:13, 12 January 2023 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Compiling Rust on a Mac OS X 10.7 VM (Bridget) ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Status&#039;&#039;&#039;: Ongoing&lt;br /&gt;
* &#039;&#039;&#039;Duration&#039;&#039;&#039;: 3 hours (as of 2022-01-24 02:37 PM)&lt;br /&gt;
* &#039;&#039;&#039;Proof&#039;&#039;&#039;: Discord live stream + occasional milestones&lt;br /&gt;
* &#039;&#039;&#039;Comments&#039;&#039;&#039;:&lt;br /&gt;
** Crap, I didn&#039;t tell Macports to download the source versions of the packages. :/ Still took an hour to install the binaries, so we&#039;re in for a wild ride here, huh? :P As of writing, it&#039;s installing the &amp;lt;code&amp;gt;ncurses&amp;lt;/code&amp;gt; dependency. - [[User:Bridgetr|Bridget]] ([[User talk:Bridgetr|talk]]) 14:32, 24 January 2023 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Active Pain ==&lt;br /&gt;
Active Pain entries are livestreams or single projects that are actively worked on over the period of the competition. They can be over multiple sessions, with time being tallied up.&lt;br /&gt;
&lt;br /&gt;
=== Windows 98/ME on the Cursed 486 (NCommander) ===&lt;br /&gt;
* &#039;&#039;&#039;Status:&#039;&#039;&#039; On Hiatus/Ongoing&lt;br /&gt;
* &#039;&#039;&#039;Proof:&#039;&#039;&#039; https://www.youtube.com/watch?v=0uaINJAktLA (and messages in #content + Fedi)&lt;br /&gt;
* &#039;&#039;&#039;Duration:&#039;&#039;&#039; Multiple attempts over multiple days, one 9 hour&lt;br /&gt;
* &#039;&#039;&#039;Comments:&#039;&#039;&#039;&lt;br /&gt;
** You can&#039;t install ME on 32 MiB of memory. Upgrades ordered. So far, Windows 98 First Edition was installed from floppies, second edition from Netware, and ME from NetWare and local install, with each attempt taking literal hours. [[User:NCommander|NCommander]] ([[User talk:NCommander|talk]]) 13:44, 2 January 2023 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Upgrading Through Every Version of OS/2 (NCommander) ===&lt;br /&gt;
* &#039;&#039;&#039;Status:&#039;&#039;&#039; Complete/Historical&lt;br /&gt;
*&#039;&#039;&#039;Proof:&#039;&#039;&#039; VoDs: https://www.youtube.com/watch?v=xeaRlhz96mI and https://www.youtube.com/watch?v=8uwGTHZzzF4&lt;br /&gt;
* &#039;&#039;&#039;Duration:&#039;&#039;&#039; Approximately 22 Hours&lt;br /&gt;
* &#039;&#039;&#039;Comments:&#039;&#039;&#039; &lt;br /&gt;
** ow [[User:NCommander|- NCommander]] ([[User talk:NCommander|talk]]) 14:54, 4 November 2022 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Windows 10 in QEMU on a PowerBook G4 (Krabs) ===&lt;br /&gt;
* &#039;&#039;&#039;Status:&#039;&#039;&#039; Complete/Historical&lt;br /&gt;
*&#039;&#039;&#039;Proof:&#039;&#039;&#039; Was live-updated on Discord, and also in the [https://picsofbread.com/potato-bread writeup here]&lt;br /&gt;
* &#039;&#039;&#039;Duration:&#039;&#039;&#039; About 10 active hours, and about 18 more waiting for it to boot&lt;br /&gt;
* &#039;&#039;&#039;Comments:&#039;&#039;&#039; &lt;br /&gt;
** This was painful. Good way to spend a few days with COVID though. [[User:Kraaabs|- Kraaabs]] ([[User talk:Kraaabs|talk]]) 02:00, 7 November 2022 (UTC)&lt;/div&gt;</summary>
		<author><name>Kraaabs</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=Slow_Computing_Speedrunning&amp;diff=909</id>
		<title>Slow Computing Speedrunning</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=Slow_Computing_Speedrunning&amp;diff=909"/>
		<updated>2023-01-24T22:50:14Z</updated>

		<summary type="html">&lt;p&gt;Kraaabs: fix signatures&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Competition]]&lt;br /&gt;
Welcome to the Slow Computing any% Speedrunning Contest; also known as watching digital paint dry.&lt;br /&gt;
&lt;br /&gt;
The goal of this contest is simple. To celebrate the long code [https://xkcd.com/303/] times, we&#039;re running an informal contest to celebrate this era of batch processing.&lt;br /&gt;
&lt;br /&gt;
== Objective and Rules ==&lt;br /&gt;
&lt;br /&gt;
It&#039;s pretty simple:&lt;br /&gt;
* Using any vintage computer of your choice, perform a long-running task of some sort&lt;br /&gt;
* Livestream, or otherwise provide regular status updates that show how far you have gotten.&lt;br /&gt;
* Emulators and the like are A-OK; just let us know what it&#039;s doing.&lt;br /&gt;
&lt;br /&gt;
After each run, success or failure, our judges (which is mostly just the regulars in #paint-drying on [https://discord.gg/V8esNah Discord]) will deem what, if any titles such run has earned, and an entirely subjective place on the Wall of Pain. There are absolutely no prizes besides the knowledge that you might be immortalized here for the life of the wiki.&lt;br /&gt;
&lt;br /&gt;
Do you dare step up?&lt;br /&gt;
&lt;br /&gt;
=== Examples of projects ===&lt;br /&gt;
For example, upgrading through every version of OS/2, building GCC, or the like. Livestream or otherwise regularly update the panting drying competition community. For NCommander&#039;s entries, VoDs on YouTube were provided. Europa livestreamed the terminal on Discord throughout the duration. Any sorta long running log with regular updates is acceptable.&lt;br /&gt;
&lt;br /&gt;
= The Wall of Pain =&lt;br /&gt;
New categories will be added as needed&lt;br /&gt;
&lt;br /&gt;
== Idle Pain ==&lt;br /&gt;
Idle Pain refers to tasks where they&#039;re started, and mostly left untouched until they finish (excluding minor tweaks, build failures, etc.)&lt;br /&gt;
&lt;br /&gt;
=== GCC 8 on an Ultra 5 running OpenBSD/sparc64 (Europa) ===&lt;br /&gt;
* &#039;&#039;&#039;Status:&#039;&#039;&#039; Complete!&lt;br /&gt;
* &#039;&#039;&#039;Duration:&#039;&#039;&#039; Approximately 5.375 days (4.5 days GCC, 0.875 days CDE)&lt;br /&gt;
* &#039;&#039;&#039;Proof:&#039;&#039;&#039; Livestreamed on Discord, updates periodically provided via Discord, [https://twitter.com/europa6502/status/1587304622749876224 Twitter], and Mastodon&lt;br /&gt;
* &#039;&#039;&#039;Comments:&#039;&#039;&#039;&lt;br /&gt;
** The build that started it all, Europa&#039;s attempt to install CDE which required upgrading GCC, and starting a multiday build process that lead to the creation of the paint drying community ... I&#039;m still wondering how we got here - [[User:NCommander|NCommander]] ([[User talk:NCommander|talk]]) 14:54, 4 November 2022 (UTC)&lt;br /&gt;
** It finished! She managed to build CDE with her new GCC after some help from NCommander, and is now working on configuring her newly built CDE! - [[User:Kraaabs|Kraaabs]] (([[User talk:Kraaabs|talk]]) 01:56, 7 November 2022 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Forcing Windows 7 onto a 66MHz CPU (Griffin) ===&lt;br /&gt;
* &#039;&#039;&#039;Status:&#039;&#039;&#039; Complete!&lt;br /&gt;
* &#039;&#039;&#039;Duration:&#039;&#039;&#039; About 14 hours&lt;br /&gt;
* &#039;&#039;&#039;Proof:&#039;&#039;&#039; Livestreamed on Discord, and live-updated in a Discord thread&lt;br /&gt;
* &#039;&#039;&#039;Comments:&#039;&#039;&#039;&lt;br /&gt;
** The first entry to finish, I believe! They used 86box emulating a VIA Samuel, and a lot of trial and error to get the thing to boot at all. Was a fun one to watch. Nice and painful. [https://twitter.com/FOSSfirefighter/status/1588999569593208832 N tweeted about this one, too.] - [[User:Kraaabs|Kraaabs]] ([[User talk:Kraaabs|talk]]) 03:02, 7 November 2022 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Installing Gentoo in DOSBochs in QEMU on Void Linux on a PowerBook G4 (Krabs) ===&lt;br /&gt;
* &#039;&#039;&#039;Status:&#039;&#039;&#039; &amp;lt;del&amp;gt;Ongoing&amp;lt;/del&amp;gt; Failed :(&lt;br /&gt;
* &#039;&#039;&#039;Duration:&#039;&#039;&#039; About 52 hours so far.&lt;br /&gt;
* &#039;&#039;&#039;Proof:&#039;&#039;&#039; Livestreamed on Discord, and live-updated in a Discord thread&lt;br /&gt;
* &#039;&#039;&#039;Comments:&#039;&#039;&#039;&lt;br /&gt;
** Yep, still going. It&#039;s been about 52 hours (~24-ish of which was prep work), and we&#039;re still decompressing the kernel on the Gentoo install CD. In for the long haul, this one. Being that I have to babysit this, is it active pain? There&#039;s a lot of waiting. Hybrid pain, maybe. :^) - [[User:Kraaabs|Kraaabs]] ([[User talk:Kraaabs|talk]]) 03:06, 7 November 2022 (UTC)&lt;br /&gt;
** It failed a while ago, I&#039;m just lazy. Eventually it hit a timeout :&#039;(. Oh well, it was fun. - [[User:Kraaabs|Kraaabs]] ([[User talk:Kraaabs|talk]]) 22:46, 24 January 2023 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Compiling every major release of NetBSD on a SparcStation 2 (Daghdha) ===&lt;br /&gt;
* &#039;&#039;&#039;Status:&#039;&#039;&#039; Ongoing&lt;br /&gt;
* &#039;&#039;&#039;Duration:&#039;&#039;&#039; 54 days (as of 2 Jan 2023)&lt;br /&gt;
* &#039;&#039;&#039;Expected to Complete:&#039;&#039;&#039; 15 March 2023 (~73 days)&lt;br /&gt;
* &#039;&#039;&#039;Proof:&#039;&#039;&#039; Livestreamed on Discord, and live-updated in a Discord thread. Each release takes a week to build.&lt;br /&gt;
&lt;br /&gt;
=== Installing Windows 98 inside of Windows XP inside of Windows Vista inside of Windows 8 inside of Windows 10 (Autumn) ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Status:&#039;&#039;&#039; Ongoing&lt;br /&gt;
* &#039;&#039;&#039;Duration:&#039;&#039;&#039; 13 days (as of 1/12/23)&lt;br /&gt;
* &#039;&#039;&#039;Proof:&#039;&#039;&#039; Discord live stream + milestones in the corresponding channel&lt;br /&gt;
* &#039;&#039;&#039;Comments:&#039;&#039;&#039; &lt;br /&gt;
** FFS the XP installer took 11 straight days to boot &#039;&#039;&#039;&#039;&#039;TEXT MODE&#039;&#039;&#039;&#039;&#039;... I am going to be in for a long wait on this one... - [[User:Autumnbreeze|Autumn]] (([[User talk:Autumnbreeze|talk]]) 12:13, 12 January 2023 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Compiling Rust on a Mac OS X 10.7 VM (Bridget) ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Status&#039;&#039;&#039;: Ongoing&lt;br /&gt;
* &#039;&#039;&#039;Duration&#039;&#039;&#039;: 3 hours (as of 2022-01-24 02:37 PM)&lt;br /&gt;
* &#039;&#039;&#039;Proof&#039;&#039;&#039;: Discord live stream + occasional milestones&lt;br /&gt;
* &#039;&#039;&#039;Comments&#039;&#039;&#039;:&lt;br /&gt;
** Crap, I didn&#039;t tell Macports to download the source versions of the packages. :/ Still took an hour to install the binaries, so we&#039;re in for a wild ride here, huh? :P As of writing, it&#039;s installing the &amp;lt;code&amp;gt;ncurses&amp;lt;/code&amp;gt; dependency. - [[User:Bridgetr|Bridget]] (([[User talk:Bridgetr|talk]]) 14:32, 24 January 2023 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Active Pain ==&lt;br /&gt;
Active Pain entries are livestreams or single projects that are actively worked on over the period of the competition. They can be over multiple sessions, with time being tallied up.&lt;br /&gt;
&lt;br /&gt;
=== Windows 98/ME on the Cursed 486 (NCommander) ===&lt;br /&gt;
* &#039;&#039;&#039;Status:&#039;&#039;&#039; On Hiatus/Ongoing&lt;br /&gt;
* &#039;&#039;&#039;Proof:&#039;&#039;&#039; https://www.youtube.com/watch?v=0uaINJAktLA (and messages in #content + Fedi)&lt;br /&gt;
* &#039;&#039;&#039;Duration:&#039;&#039;&#039; Multiple attempts over multiple days, one 9 hour&lt;br /&gt;
* &#039;&#039;&#039;Comments:&#039;&#039;&#039;&lt;br /&gt;
** You can&#039;t install ME on 32 MiB of memory. Upgrades ordered. So far, Windows 98 First Edition was installed from floppies, second edition from Netware, and ME from NetWare and local install, with each attempt taking literal hours. [[User:NCommander|NCommander]] ([[User talk:NCommander|talk]]) 13:44, 2 January 2023 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Upgrading Through Every Version of OS/2 (NCommander) ===&lt;br /&gt;
* &#039;&#039;&#039;Status:&#039;&#039;&#039; Complete/Historical&lt;br /&gt;
*&#039;&#039;&#039;Proof:&#039;&#039;&#039; VoDs: https://www.youtube.com/watch?v=xeaRlhz96mI and https://www.youtube.com/watch?v=8uwGTHZzzF4&lt;br /&gt;
* &#039;&#039;&#039;Duration:&#039;&#039;&#039; Approximately 22 Hours&lt;br /&gt;
* &#039;&#039;&#039;Comments:&#039;&#039;&#039; &lt;br /&gt;
** ow [[User:NCommander|- NCommander]] ([[User talk:NCommander|talk]]) 14:54, 4 November 2022 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Windows 10 in QEMU on a PowerBook G4 (Krabs) ===&lt;br /&gt;
* &#039;&#039;&#039;Status:&#039;&#039;&#039; Complete/Historical&lt;br /&gt;
*&#039;&#039;&#039;Proof:&#039;&#039;&#039; Was live-updated on Discord, and also in the [https://picsofbread.com/potato-bread writeup here]&lt;br /&gt;
* &#039;&#039;&#039;Duration:&#039;&#039;&#039; About 10 active hours, and about 18 more waiting for it to boot&lt;br /&gt;
* &#039;&#039;&#039;Comments:&#039;&#039;&#039; &lt;br /&gt;
** This was painful. Good way to spend a few days with COVID though. [[User:Kraaabs|- Kraaabs]] ([[User talk:Kraaabs|talk]]) 02:00, 7 November 2022 (UTC)&lt;/div&gt;</summary>
		<author><name>Kraaabs</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=Slow_Computing_Speedrunning&amp;diff=908</id>
		<title>Slow Computing Speedrunning</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=Slow_Computing_Speedrunning&amp;diff=908"/>
		<updated>2023-01-24T22:46:57Z</updated>

		<summary type="html">&lt;p&gt;Kraaabs: /* Installing Gentoo in DOSBochs in QEMU on Void Linux on a PowerBook G4 (Krabs) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Competition]]&lt;br /&gt;
Welcome to the Slow Computing any% Speedrunning Contest; also known as watching digital paint dry.&lt;br /&gt;
&lt;br /&gt;
The goal of this contest is simple. To celebrate the long code [https://xkcd.com/303/] times, we&#039;re running an informal contest to celebrate this era of batch processing.&lt;br /&gt;
&lt;br /&gt;
== Objective and Rules ==&lt;br /&gt;
&lt;br /&gt;
It&#039;s pretty simple:&lt;br /&gt;
* Using any vintage computer of your choice, perform a long-running task of some sort&lt;br /&gt;
* Livestream, or otherwise provide regular status updates that show how far you have gotten.&lt;br /&gt;
* Emulators and the like are A-OK; just let us know what it&#039;s doing.&lt;br /&gt;
&lt;br /&gt;
After each run, success or failure, our judges (which is mostly just the regulars in #paint-drying on [https://discord.gg/V8esNah Discord]) will deem what, if any titles such run has earned, and an entirely subjective place on the Wall of Pain. There are absolutely no prizes besides the knowledge that you might be immortalized here for the life of the wiki.&lt;br /&gt;
&lt;br /&gt;
Do you dare step up?&lt;br /&gt;
&lt;br /&gt;
=== Examples of projects ===&lt;br /&gt;
For example, upgrading through every version of OS/2, building GCC, or the like. Livestream or otherwise regularly update the panting drying competition community. For NCommander&#039;s entries, VoDs on YouTube were provided. Europa livestreamed the terminal on Discord throughout the duration. Any sorta long running log with regular updates is acceptable.&lt;br /&gt;
&lt;br /&gt;
= The Wall of Pain =&lt;br /&gt;
New categories will be added as needed&lt;br /&gt;
&lt;br /&gt;
== Idle Pain ==&lt;br /&gt;
Idle Pain refers to tasks where they&#039;re started, and mostly left untouched until they finish (excluding minor tweaks, build failures, etc.)&lt;br /&gt;
&lt;br /&gt;
=== GCC 8 on an Ultra 5 running OpenBSD/sparc64 (Europa) ===&lt;br /&gt;
* &#039;&#039;&#039;Status:&#039;&#039;&#039; Complete!&lt;br /&gt;
* &#039;&#039;&#039;Duration:&#039;&#039;&#039; Approximately 5.375 days (4.5 days GCC, 0.875 days CDE)&lt;br /&gt;
* &#039;&#039;&#039;Proof:&#039;&#039;&#039; Livestreamed on Discord, updates periodically provided via Discord, [https://twitter.com/europa6502/status/1587304622749876224 Twitter], and Mastodon&lt;br /&gt;
* &#039;&#039;&#039;Comments:&#039;&#039;&#039;&lt;br /&gt;
** The build that started it all, Europa&#039;s attempt to install CDE which required upgrading GCC, and starting a multiday build process that lead to the creation of the paint drying community ... I&#039;m still wondering how we got here - [[User:NCommander|NCommander]] ([[User talk:NCommander|talk]]) 14:54, 4 November 2022 (UTC)&lt;br /&gt;
** It finished! She managed to build CDE with her new GCC after some help from NCommander, and is now working on configuring her newly built CDE! - [[User:Kraaabs|Kraaabs]] (([[User talk:Kraaabs|talk]]) 01:56, 7 November 2022 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Forcing Windows 7 onto a 66MHz CPU (Griffin) ===&lt;br /&gt;
* &#039;&#039;&#039;Status:&#039;&#039;&#039; Complete!&lt;br /&gt;
* &#039;&#039;&#039;Duration:&#039;&#039;&#039; About 14 hours&lt;br /&gt;
* &#039;&#039;&#039;Proof:&#039;&#039;&#039; Livestreamed on Discord, and live-updated in a Discord thread&lt;br /&gt;
* &#039;&#039;&#039;Comments:&#039;&#039;&#039;&lt;br /&gt;
** The first entry to finish, I believe! They used 86box emulating a VIA Samuel, and a lot of trial and error to get the thing to boot at all. Was a fun one to watch. Nice and painful. [https://twitter.com/FOSSfirefighter/status/1588999569593208832 N tweeted about this one, too.] - [[User:Kraaabs|Kraaabs]] ([[User talk:Kraaabs|talk]]) 03:02, 7 November 2022 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Installing Gentoo in DOSBochs in QEMU on Void Linux on a PowerBook G4 (Krabs) ===&lt;br /&gt;
* &#039;&#039;&#039;Status:&#039;&#039;&#039; &amp;lt;del&amp;gt;Ongoing&amp;lt;/del&amp;gt; Failed :(&lt;br /&gt;
* &#039;&#039;&#039;Duration:&#039;&#039;&#039; About 52 hours so far.&lt;br /&gt;
* &#039;&#039;&#039;Proof:&#039;&#039;&#039; Livestreamed on Discord, and live-updated in a Discord thread&lt;br /&gt;
* &#039;&#039;&#039;Comments:&#039;&#039;&#039;&lt;br /&gt;
** Yep, still going. It&#039;s been about 52 hours (~24-ish of which was prep work), and we&#039;re still decompressing the kernel on the Gentoo install CD. In for the long haul, this one. Being that I have to babysit this, is it active pain? There&#039;s a lot of waiting. Hybrid pain, maybe. :^) - [[User:Kraaabs|Kraaabs]] ([[User talk:Kraaabs|talk]]) 03:06, 7 November 2022 (UTC)&lt;br /&gt;
** It failed a while ago, I&#039;m just lazy. Eventually it hit a timeout :&#039;(. Oh well, it was fun. - [[User:Kraaabs|Kraaabs]] ([[User talk:Kraaabs|talk]]) 22:46, 24 January 2023 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Compiling every major release of NetBSD on a SparcStation 2 (Daghdha) ===&lt;br /&gt;
* &#039;&#039;&#039;Status:&#039;&#039;&#039; Ongoing&lt;br /&gt;
* &#039;&#039;&#039;Duration:&#039;&#039;&#039; 54 days (as of 2 Jan 2023)&lt;br /&gt;
* &#039;&#039;&#039;Expected to Complete:&#039;&#039;&#039; 15 March 2023 (~73 days)&lt;br /&gt;
* &#039;&#039;&#039;Proof:&#039;&#039;&#039; Livestreamed on Discord, and live-updated in a Discord thread. Each release takes a week to build.&lt;br /&gt;
&lt;br /&gt;
=== Installing Windows 98 inside of Windows XP inside of Windows Vista inside of Windows 8 inside of Windows 10 (Autumn) ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Status:&#039;&#039;&#039; Ongoing&lt;br /&gt;
* &#039;&#039;&#039;Duration:&#039;&#039;&#039; 13 days (as of 1/12/23)&lt;br /&gt;
* &#039;&#039;&#039;Proof:&#039;&#039;&#039; Discord live stream + milestones in the corresponding channel&lt;br /&gt;
* &#039;&#039;&#039;Comments:&#039;&#039;&#039; &lt;br /&gt;
** [[Autumnbreeze|Autumn]] (12:13 1/12/23) FFS the XP installer took 11 straight days to boot &#039;&#039;&#039;&#039;&#039;TEXT MODE&#039;&#039;&#039;&#039;&#039;... I am going to be in for a long wait on this one...&lt;br /&gt;
&lt;br /&gt;
=== Compiling Rust on a Mac OS X 10.7 VM (Bridget) ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Status&#039;&#039;&#039;: Ongoing&lt;br /&gt;
* &#039;&#039;&#039;Duration&#039;&#039;&#039;: 3 hours (as of 2022-01-24 02:37 PM)&lt;br /&gt;
* &#039;&#039;&#039;Proof&#039;&#039;&#039;: Discord live stream + occasional milestones&lt;br /&gt;
* &#039;&#039;&#039;Comments&#039;&#039;&#039;:&lt;br /&gt;
** Bridget (2:32 PM on 2022-01-24): Crap, I didn&#039;t tell Macports to download the source versions of the packages. :/ Still took an hour to install the binaries, so we&#039;re in for a wild ride here, huh? :P As of writing, it&#039;s installing the &amp;lt;code&amp;gt;ncurses&amp;lt;/code&amp;gt; dependency.&lt;br /&gt;
&lt;br /&gt;
== Active Pain ==&lt;br /&gt;
Active Pain entries are livestreams or single projects that are actively worked on over the period of the competition. They can be over multiple sessions, with time being tallied up.&lt;br /&gt;
&lt;br /&gt;
=== Windows 98/ME on the Cursed 486 (NCommander) ===&lt;br /&gt;
* &#039;&#039;&#039;Status:&#039;&#039;&#039; On Hiatus/Ongoing&lt;br /&gt;
* &#039;&#039;&#039;Proof:&#039;&#039;&#039; https://www.youtube.com/watch?v=0uaINJAktLA (and messages in #content + Fedi)&lt;br /&gt;
* &#039;&#039;&#039;Duration:&#039;&#039;&#039; Multiple attempts over multiple days, one 9 hour&lt;br /&gt;
* &#039;&#039;&#039;Comments:&#039;&#039;&#039;&lt;br /&gt;
** You can&#039;t install ME on 32 MiB of memory. Upgrades ordered. So far, Windows 98 First Edition was installed from floppies, second edition from Netware, and ME from NetWare and local install, with each attempt taking literal hours. [[User:NCommander|NCommander]] ([[User talk:NCommander|talk]]) 13:44, 2 January 2023 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Upgrading Through Every Version of OS/2 (NCommander) ===&lt;br /&gt;
* &#039;&#039;&#039;Status:&#039;&#039;&#039; Complete/Historical&lt;br /&gt;
*&#039;&#039;&#039;Proof:&#039;&#039;&#039; VoDs: https://www.youtube.com/watch?v=xeaRlhz96mI and https://www.youtube.com/watch?v=8uwGTHZzzF4&lt;br /&gt;
* &#039;&#039;&#039;Duration:&#039;&#039;&#039; Approximately 22 Hours&lt;br /&gt;
* &#039;&#039;&#039;Comments:&#039;&#039;&#039; &lt;br /&gt;
** ow [[User:NCommander|- NCommander]] ([[User talk:NCommander|talk]]) 14:54, 4 November 2022 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Windows 10 in QEMU on a PowerBook G4 (Krabs) ===&lt;br /&gt;
* &#039;&#039;&#039;Status:&#039;&#039;&#039; Complete/Historical&lt;br /&gt;
*&#039;&#039;&#039;Proof:&#039;&#039;&#039; Was live-updated on Discord, and also in the [https://picsofbread.com/potato-bread writeup here]&lt;br /&gt;
* &#039;&#039;&#039;Duration:&#039;&#039;&#039; About 10 active hours, and about 18 more waiting for it to boot&lt;br /&gt;
* &#039;&#039;&#039;Comments:&#039;&#039;&#039; &lt;br /&gt;
** This was painful. Good way to spend a few days with COVID though. [[User:Kraaabs|- Kraaabs]] ([[User talk:Kraaabs|talk]]) 02:00, 7 November 2022 (UTC)&lt;/div&gt;</summary>
		<author><name>Kraaabs</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=Useful_Tools&amp;diff=901</id>
		<title>Useful Tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=Useful_Tools&amp;diff=901"/>
		<updated>2023-01-23T18:47:17Z</updated>

		<summary type="html">&lt;p&gt;Kraaabs: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== File System Manipulation ==&lt;br /&gt;
* [https://github.com/aaru-dps/Aaru Aaru] supports a fairly comprehensive collection of disk image, partition table, and file system formats, and is built with the Microsoft .NET Framework - builds exist, for several operating systems.&lt;br /&gt;
* [https://linux.die.net/man/8/kpartx kpartx] is a fairly standard command to automatically create loop devices for whole disk images (assuming regular partition table types Linux can understand)&lt;br /&gt;
* [https://osxfuse.github.io/ macFUSE] allows you to use FUSE filesystems on macOS&lt;br /&gt;
&lt;br /&gt;
== Archive Manipulation == &lt;br /&gt;
* 7-Zip supports the Windows Imaging format (&amp;lt;code&amp;gt;.WIM&amp;lt;/code&amp;gt;) disk images, with LZX compression, as used by Windows 8.1&lt;br /&gt;
* [https://github.com/MacPaw/XADMaster XADMaster] supports a fairly comprehensive collection of compression, and archival formats, and can also expand some disk image formats - this seems to be the basis of the &amp;quot;unar&amp;quot; utility, provided for Ubuntu, and some other Linux distributions.&lt;br /&gt;
* [https://github.com/twogood/unshield unshield] is a CLI tool, for unpacking various flavours of InstallShield archive&lt;br /&gt;
&lt;br /&gt;
== Firmware Image Extraction ==&lt;br /&gt;
* The [http://marksmods.com/Hack-the-L7/zip/random.zip RandomSHX] utility, for Windows will extract the contents of some Motorola P2K (e.g. A835) &amp;quot;UNIX Generated SuperFile&amp;quot; firmware archives - this requires Windows, and does not work with UNC paths&lt;br /&gt;
* The &amp;lt;code&amp;gt;srecord&amp;lt;/code&amp;gt; package, under Ubuntu contains a utility, that can convert Motorola S-Record files, into plain binaries: (for example &amp;lt;code&amp;gt;srec_cat C139_V1.0.03.E.m0 -Output C139_V1.0.03.E.bin -Binary&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* BinWalk is extremely useful, for extracting files, and resources out of firmware images, executables, and file system structures&lt;br /&gt;
&lt;br /&gt;
== Binary reverse engineering ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.dependencywalker.com/ Dependency Walker] for understanding Windows program dependencies and what&#039;s used by the program, helpful for software archaeology.&lt;br /&gt;
* [https://ghidra-sre.org/ Ghidra] is an open-source set of RE tools, including a set of decompilers and disassemblers for most binary formats.&lt;br /&gt;
&lt;br /&gt;
== Development tools ==&lt;br /&gt;
* [https://github.com/davidgiven/ack The Amsterdam Compiler Kit] is one of the few (mostly) C99 compilers around that can still target a PDP-11 Unix v7 target.&lt;br /&gt;
* [https://github.com/JuliaHubOSS/llvm-cbe llvm-cbe] is the C backend for LLVM -- it can convert LLVM bytecode into C (useful for compiling modern C++ targeting systems that don&#039;t have a functional modern C++ compiler, for example)&lt;br /&gt;
&lt;br /&gt;
[[Category:Preservation and Documentation]]&lt;/div&gt;</summary>
		<author><name>Kraaabs</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=Useful_Tools&amp;diff=900</id>
		<title>Useful Tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=Useful_Tools&amp;diff=900"/>
		<updated>2023-01-23T18:43:05Z</updated>

		<summary type="html">&lt;p&gt;Kraaabs: /* Binary reverse engineering */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== File System Manipulation ==&lt;br /&gt;
* [https://github.com/aaru-dps/Aaru Aaru] supports a fairly comprehensive collection of disk image, partition table, and file system formats, and is built with the Microsoft .NET Framework - builds exist, for several operating systems.&lt;br /&gt;
* [https://linux.die.net/man/8/kpartx kpartx] is a fairly standard command to automatically create loop devices for whole disk images (assuming regular partition table types Linux can understand)&lt;br /&gt;
* [https://osxfuse.github.io/ macFUSE] allows you to use FUSE filesystems on macOS&lt;br /&gt;
&lt;br /&gt;
== Archive Manipulation == &lt;br /&gt;
* 7-Zip supports the Windows Imaging format (&amp;lt;code&amp;gt;.WIM&amp;lt;/code&amp;gt;) disk images, with LZX compression, as used by Windows 8.1&lt;br /&gt;
* [https://github.com/MacPaw/XADMaster XADMaster] supports a fairly comprehensive collection of compression, and archival formats, and can also expand some disk image formats - this seems to be the basis of the &amp;quot;unar&amp;quot; utility, provided for Ubuntu, and some other Linux distributions.&lt;br /&gt;
* [https://github.com/twogood/unshield unshield] is a CLI tool, for unpacking various flavours of InstallShield archive&lt;br /&gt;
&lt;br /&gt;
== Firmware Image Extraction ==&lt;br /&gt;
* The [http://marksmods.com/Hack-the-L7/zip/random.zip RandomSHX] utility, for Windows will extract the contents of some Motorola P2K (e.g. A835) &amp;quot;UNIX Generated SuperFile&amp;quot; firmware archives - this requires Windows, and does not work with UNC paths&lt;br /&gt;
* The &amp;lt;code&amp;gt;srecord&amp;lt;/code&amp;gt; package, under Ubuntu contains a utility, that can convert Motorola S-Record files, into plain binaries: (for example &amp;lt;code&amp;gt;srec_cat C139_V1.0.03.E.m0 -Output C139_V1.0.03.E.bin -Binary&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* BinWalk is extremely useful, for extracting files, and resources out of firmware images, executables, and file system structures&lt;br /&gt;
&lt;br /&gt;
== Binary reverse engineering ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.dependencywalker.com/ Dependency Walker] for understanding Windows program dependencies and what&#039;s used by the program, helpful for software archaeology.&lt;br /&gt;
* [https://ghidra-sre.org/ Ghidra] is an open-source set of RE tools, including a set of decompilers and disassemblers for most binary formats.&lt;br /&gt;
&lt;br /&gt;
[[Category:Preservation and Documentation]]&lt;/div&gt;</summary>
		<author><name>Kraaabs</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=Useful_Tools&amp;diff=899</id>
		<title>Useful Tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=Useful_Tools&amp;diff=899"/>
		<updated>2023-01-23T18:41:17Z</updated>

		<summary type="html">&lt;p&gt;Kraaabs: macFUSE&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== File System Manipulation ==&lt;br /&gt;
* [https://github.com/aaru-dps/Aaru Aaru] supports a fairly comprehensive collection of disk image, partition table, and file system formats, and is built with the Microsoft .NET Framework - builds exist, for several operating systems.&lt;br /&gt;
* [https://linux.die.net/man/8/kpartx kpartx] is a fairly standard command to automatically create loop devices for whole disk images (assuming regular partition table types Linux can understand)&lt;br /&gt;
* [https://osxfuse.github.io/ macFUSE] allows you to use FUSE filesystems on macOS&lt;br /&gt;
&lt;br /&gt;
== Archive Manipulation == &lt;br /&gt;
* 7-Zip supports the Windows Imaging format (&amp;lt;code&amp;gt;.WIM&amp;lt;/code&amp;gt;) disk images, with LZX compression, as used by Windows 8.1&lt;br /&gt;
* [https://github.com/MacPaw/XADMaster XADMaster] supports a fairly comprehensive collection of compression, and archival formats, and can also expand some disk image formats - this seems to be the basis of the &amp;quot;unar&amp;quot; utility, provided for Ubuntu, and some other Linux distributions.&lt;br /&gt;
* [https://github.com/twogood/unshield unshield] is a CLI tool, for unpacking various flavours of InstallShield archive&lt;br /&gt;
&lt;br /&gt;
== Firmware Image Extraction ==&lt;br /&gt;
* The [http://marksmods.com/Hack-the-L7/zip/random.zip RandomSHX] utility, for Windows will extract the contents of some Motorola P2K (e.g. A835) &amp;quot;UNIX Generated SuperFile&amp;quot; firmware archives - this requires Windows, and does not work with UNC paths&lt;br /&gt;
* The &amp;lt;code&amp;gt;srecord&amp;lt;/code&amp;gt; package, under Ubuntu contains a utility, that can convert Motorola S-Record files, into plain binaries: (for example &amp;lt;code&amp;gt;srec_cat C139_V1.0.03.E.m0 -Output C139_V1.0.03.E.bin -Binary&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* BinWalk is extremely useful, for extracting files, and resources out of firmware images, executables, and file system structures&lt;br /&gt;
&lt;br /&gt;
== Binary reverse engineering ==&lt;br /&gt;
&lt;br /&gt;
* Dependency Walker for understanding Windows program dependencies and what&#039;s used by the program, helpful for software archaeology.&lt;br /&gt;
&lt;br /&gt;
[[Category:Preservation and Documentation]]&lt;/div&gt;</summary>
		<author><name>Kraaabs</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=Useful_Tools&amp;diff=898</id>
		<title>Useful Tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=Useful_Tools&amp;diff=898"/>
		<updated>2023-01-23T18:39:22Z</updated>

		<summary type="html">&lt;p&gt;Kraaabs: add kpartx ~Sarah&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== File System Manipulation ==&lt;br /&gt;
* [https://github.com/aaru-dps/Aaru Aaru] supports a fairly comprehensive collection of disk image, partition table, and file system formats, and is built with the Microsoft .NET Framework - builds exist, for several operating systems.&lt;br /&gt;
* [https://linux.die.net/man/8/kpartx kpartx] is a fairly standard command to automatically create loop devices for whole disk images (assuming regular partition table types Linux can understand)&lt;br /&gt;
&lt;br /&gt;
== Archive Manipulation == &lt;br /&gt;
* 7-Zip supports the Windows Imaging format (&amp;lt;code&amp;gt;.WIM&amp;lt;/code&amp;gt;) disk images, with LZX compression, as used by Windows 8.1&lt;br /&gt;
* [https://github.com/MacPaw/XADMaster XADMaster] supports a fairly comprehensive collection of compression, and archival formats, and can also expand some disk image formats - this seems to be the basis of the &amp;quot;unar&amp;quot; utility, provided for Ubuntu, and some other Linux distributions.&lt;br /&gt;
* [https://github.com/twogood/unshield unshield] is a CLI tool, for unpacking various flavours of InstallShield archive&lt;br /&gt;
&lt;br /&gt;
== Firmware Image Extraction ==&lt;br /&gt;
* The [http://marksmods.com/Hack-the-L7/zip/random.zip RandomSHX] utility, for Windows will extract the contents of some Motorola P2K (e.g. A835) &amp;quot;UNIX Generated SuperFile&amp;quot; firmware archives - this requires Windows, and does not work with UNC paths&lt;br /&gt;
* The &amp;lt;code&amp;gt;srecord&amp;lt;/code&amp;gt; package, under Ubuntu contains a utility, that can convert Motorola S-Record files, into plain binaries: (for example &amp;lt;code&amp;gt;srec_cat C139_V1.0.03.E.m0 -Output C139_V1.0.03.E.bin -Binary&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* BinWalk is extremely useful, for extracting files, and resources out of firmware images, executables, and file system structures&lt;br /&gt;
&lt;br /&gt;
== Binary reverse engineering ==&lt;br /&gt;
&lt;br /&gt;
* Dependency Walker for understanding Windows program dependencies and what&#039;s used by the program, helpful for software archaeology.&lt;br /&gt;
&lt;br /&gt;
[[Category:Preservation and Documentation]]&lt;/div&gt;</summary>
		<author><name>Kraaabs</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=Project:Discord_Bot_Improvements&amp;diff=864</id>
		<title>Project:Discord Bot Improvements</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=Project:Discord_Bot_Improvements&amp;diff=864"/>
		<updated>2023-01-17T19:51:58Z</updated>

		<summary type="html">&lt;p&gt;Kraaabs: /* Raconteur TODO */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a general TODO area for improvements to the bot situation on DisNCord. Contact [[User:Kraaabs]] (Krabs#0571 on Discord) with comments/concerns/suggestions!&lt;br /&gt;
&lt;br /&gt;
== Better Discord logging ==&lt;br /&gt;
&lt;br /&gt;
Status: &#039;&#039;&#039;The bot is currently in development, and a prototype is nearing completion.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
As it stands, the wiki discussion logs (such as [[Lotus Notes and Taligent Shenanigans Log]] or [[SoylentNews History Log]]) are manually copied and pasted before being either [https://gitlab.com/sarahcrowle/raccoon.rb run through a script] to convert them to WikiText, or manually formatted by hand. This approach has a few drawbacks:&lt;br /&gt;
&lt;br /&gt;
# Things are easily missed&lt;br /&gt;
## Discord is... inconsistent when copy pasting large amounts of messages. The infinite scroll implementation in the client is fairly aggressive, and it leads to messages getting booted from the selection buffer sometimes, without anyone noticing.&lt;br /&gt;
# Manual labour&lt;br /&gt;
## The process right now is mostly manual. This gets tedious when there are large logs to be converted, or more than one log at once.&lt;br /&gt;
## Logs with images (such as [[Lotus Notes and Taligent Shenanigans Log]]) need to have their images manually downloaded, uploaded to the wiki, and embedded. That&#039;s a pain.&lt;br /&gt;
# Formatting&lt;br /&gt;
## Copy pasting logs isn&#039;t perfect. There isn&#039;t enough metadata to properly automate formatting of things like link embeds.&lt;br /&gt;
&lt;br /&gt;
[[User:Kraaabs]] has written (most of) a Discord bot that can record messages to a few formats, including WikiText. After some cleanup and feature additions, it should be well suited to the task.&lt;br /&gt;
&lt;br /&gt;
[https://gitlab.com/sarahcrowle/raconteur Raconteur repository on GitLab]&lt;br /&gt;
&lt;br /&gt;
=== Raconteur TODO ===&lt;br /&gt;
&lt;br /&gt;
# &amp;lt;del&amp;gt;Better document the code, and open the repository up to the public&amp;lt;/del&amp;gt; &#039;&#039;&#039;DONE! (sorta. docs aren&#039;t there yet)&#039;&#039;&#039;&lt;br /&gt;
# &amp;lt;del&amp;gt;See about using user permissions for the bot, rather than any moderator permissions&amp;lt;/del&amp;gt; &#039;&#039;&#039;DONE! (actually, the retroactive logging shouldn&#039;t require any special permissions. proactive logging needs some permissions to set up, but not to archive/create archival threads)&#039;&#039;&#039;&lt;br /&gt;
# &amp;lt;del&amp;gt;Flesh out retroactive logging (in addition to the proactive logging already implemented)&amp;lt;/del&amp;gt; &#039;&#039;&#039;DONE! (at least to the level of the proactive logging)&#039;&#039;&#039;&lt;br /&gt;
# &amp;lt;del&amp;gt;Grab embeds for messages as well (maybe embed them in the JSON log format as base64?)&amp;lt;/del&amp;gt; &#039;&#039;&#039;DONE! (although I&#039;m on the fence about including them in the JSON output. Boy howdy, base64 can get LARGE)&#039;&#039;&#039;&lt;br /&gt;
# Containerize it! (see below)&lt;br /&gt;
# MediaWiki companion bot to upload images/automatically create pages ([https://doc.wikimedia.org/pywikibot/stable/index.html it seems there are mature Python bindings for the MediaWiki API]) &#039;&#039;&#039;DONE! (I had to write my own MediaWiki API bindings. The bot can now create pages, and image uploads aren&#039;t far off.)&#039;&#039;&#039;&lt;br /&gt;
# Whatever else I forgot (I&#039;m sure I&#039;ll add more as I go)&lt;br /&gt;
&lt;br /&gt;
== Modmail/Ticketing ==&lt;br /&gt;
&lt;br /&gt;
Status: &#039;&#039;&#039;Tickets is currently being trialled on the main DisNCord server (good success so far)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Currently, DisNCord doesn&#039;t have any formal modmail or ticketing for moderator concerns. Specific concerns are handled by direct messaging moderators, and communicating in the #mod-discussion channel, with [[User:NCommander]] having the final say. This may not scale well as the server continues to grow, so a proper modmail or ticketing system would be beneficial. If you have other suggestions for ticketing bots, or experience using any of these, contact [[User:Kraaabs]] (Krabs#0571 on Discord) with your thoughts!&lt;br /&gt;
&lt;br /&gt;
Current proposed candidates:&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/ihaveamac/discord-mod-mail discord-mod-mail] ===&lt;br /&gt;
==== Pros ====&lt;br /&gt;
* &#039;&#039;Extremely&#039;&#039; simple codebase&lt;br /&gt;
* Sirocyl has experience with it&lt;br /&gt;
* Already dockerized&lt;br /&gt;
* Looks easily hackable if needed&lt;br /&gt;
==== Cons ====&lt;br /&gt;
* Uses old-style prefixed bot commands (not &#039;&#039;necessarily&#039;&#039; a con per-se)&lt;br /&gt;
* No formal role-locking -- relies on channel visibility&lt;br /&gt;
&lt;br /&gt;
=== [https://tickettool.xyz Ticket Tool] ===&lt;br /&gt;
==== Pros ====&lt;br /&gt;
* Appears very robust feature-wise&lt;br /&gt;
* Comes with a handy dashboard -- but it&#039;s discord integrated&lt;br /&gt;
* Seemingly scales well&lt;br /&gt;
==== Cons ====&lt;br /&gt;
* The free version is rate-limited (although I don&#039;t think we&#039;ll hit the limit)&lt;br /&gt;
* Features such as DM support are locked behind a paywall&lt;br /&gt;
* UX is somewhat inconsistent and awkward&lt;br /&gt;
* Piles up closed tickets as channels with no real archival&lt;br /&gt;
* GDPR clause just says &amp;quot;contact us&amp;quot; with no other info&lt;br /&gt;
&lt;br /&gt;
=== [https://ticketsbot.net Tickets] ===&lt;br /&gt;
==== Pros ====&lt;br /&gt;
* Similar feature set to Ticket Tool&lt;br /&gt;
* Allows multiple support teams&lt;br /&gt;
* Similar to Ticket Tool, used on many many servers already&lt;br /&gt;
* Very polished interface&lt;br /&gt;
* Deletes ticket channels when tickets are closed, but archives them in a thread for later viewing&lt;br /&gt;
* Allows for the creation of custom forms and panels for ticket creation!&lt;br /&gt;
==== Cons ====&lt;br /&gt;
* Again, some features are paywalled (but nothing super essential...)&lt;br /&gt;
* GDPR is handled through a discord server, which is... odd&lt;br /&gt;
&lt;br /&gt;
== Bot Infrastructure == &lt;br /&gt;
&lt;br /&gt;
Status: &#039;&#039;&#039;The Wiki and Fediverse servers are currently being moved. Afterwards, further discussion of bot hosting will be done.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The thing about Discord bots is that you need to host them, of course. Ideally, for ease of management, all bots would be hosted on Restless Systems infrastructure, using Docker containers.&lt;br /&gt;
&lt;br /&gt;
=== TODO ===&lt;br /&gt;
&lt;br /&gt;
# Do we need a separate VPS for bots? Or will we host on the wiki infra?&lt;br /&gt;
# Are all the bots we want to host Dockerized already? Or do we need to make our own containers?&lt;br /&gt;
# How will we manage the containers? Manually, or with something like K8s?&lt;br /&gt;
## Actually, podman could work too, and it&#039;s a bit simpler... &lt;br /&gt;
# If we want to do auto-updates (we probably do) how will we accomplish this? &lt;br /&gt;
## [[User:NCommander]] had suggested to me that we could use GitHub/GitLab actions. If we go this route, we would likely have to mirror any bots we&#039;re using in our own GitHub/GitLab project. This could pose a problem with the proprietary bots though...&lt;br /&gt;
### Although, we don&#039;t actually need to self host those. In fact, I don&#039;t think we &#039;&#039;can&#039;&#039; (duh. coffee finally kicked in I guess) &lt;br /&gt;
### Also: to get this working we&#039;d need to set up that Git{Lab|Hub} project in the first place&lt;br /&gt;
# For consistency&#039;s sake, are we going to re-containerize everything to use the same OS inside the containers, if they aren&#039;t already? (I doubt all of the bot authors involved are using the same OS)&lt;br /&gt;
## Despite all of the bots probably being written in different languages using different API wrappers, as much consistency as possible would be nice... Although that&#039;s mostly just OCD Sarah talking&lt;br /&gt;
# Finally, what DO we want to host? Should we take this opportunity to self host things like YAGPDB or PK alongside Raconteur and any potential ticketing bot (if we go with a self hosted one)?&lt;/div&gt;</summary>
		<author><name>Kraaabs</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=Project:Discord_Bot_Improvements&amp;diff=863</id>
		<title>Project:Discord Bot Improvements</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=Project:Discord_Bot_Improvements&amp;diff=863"/>
		<updated>2023-01-17T19:51:41Z</updated>

		<summary type="html">&lt;p&gt;Kraaabs: Update status of bot stuff ~Sarah&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a general TODO area for improvements to the bot situation on DisNCord. Contact [[User:Kraaabs]] (Krabs#0571 on Discord) with comments/concerns/suggestions!&lt;br /&gt;
&lt;br /&gt;
== Better Discord logging ==&lt;br /&gt;
&lt;br /&gt;
Status: &#039;&#039;&#039;The bot is currently in development, and a prototype is nearing completion.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
As it stands, the wiki discussion logs (such as [[Lotus Notes and Taligent Shenanigans Log]] or [[SoylentNews History Log]]) are manually copied and pasted before being either [https://gitlab.com/sarahcrowle/raccoon.rb run through a script] to convert them to WikiText, or manually formatted by hand. This approach has a few drawbacks:&lt;br /&gt;
&lt;br /&gt;
# Things are easily missed&lt;br /&gt;
## Discord is... inconsistent when copy pasting large amounts of messages. The infinite scroll implementation in the client is fairly aggressive, and it leads to messages getting booted from the selection buffer sometimes, without anyone noticing.&lt;br /&gt;
# Manual labour&lt;br /&gt;
## The process right now is mostly manual. This gets tedious when there are large logs to be converted, or more than one log at once.&lt;br /&gt;
## Logs with images (such as [[Lotus Notes and Taligent Shenanigans Log]]) need to have their images manually downloaded, uploaded to the wiki, and embedded. That&#039;s a pain.&lt;br /&gt;
# Formatting&lt;br /&gt;
## Copy pasting logs isn&#039;t perfect. There isn&#039;t enough metadata to properly automate formatting of things like link embeds.&lt;br /&gt;
&lt;br /&gt;
[[User:Kraaabs]] has written (most of) a Discord bot that can record messages to a few formats, including WikiText. After some cleanup and feature additions, it should be well suited to the task.&lt;br /&gt;
&lt;br /&gt;
[https://gitlab.com/sarahcrowle/raconteur Raconteur repository on GitLab]&lt;br /&gt;
&lt;br /&gt;
=== Raconteur TODO ===&lt;br /&gt;
&lt;br /&gt;
# &amp;lt;del&amp;gt;Better document the code, and open the repository up to the public&amp;lt;/del&amp;gt; &#039;&#039;&#039;DONE! (sorta. docs aren&#039;t there yet)&#039;&#039;&#039;&lt;br /&gt;
# &amp;lt;del&amp;gt;See about using user permissions for the bot, rather than any moderator permissions&amp;lt;/del&amp;gt; &#039;&#039;&#039;DONE! (actually, the retroactive logging shouldn&#039;t require any special permissions. proactive logging needs some permissions to set up, but not to archive/create archival threads)&#039;&#039;&#039;&lt;br /&gt;
# &amp;lt;del&amp;gt;Flesh out retroactive logging (in addition to the proactive logging already implemented)&amp;lt;/del&amp;gt; &#039;&#039;&#039;DONE! (at least to the level of the proactive logging)&#039;&#039;&#039;&lt;br /&gt;
# &amp;lt;del&amp;gt;Grab embeds for messages as well (maybe embed them in the JSON log format as base64?)&amp;lt;/del&amp;gt; &#039;&#039;&#039;DONE! (although I&#039;m on the fence about including them in the JSON output. Boy howdy, base64 can get LARGE)&#039;&#039;&#039;&lt;br /&gt;
# Containerize it! (see below)&lt;br /&gt;
# MediaWiki companion bot to upload images/automatically create pages ([https://doc.wikimedia.org/pywikibot/stable/index.html it seems there are mature Python bindings for the MediaWiki API]) &#039;&#039;&#039;DONE! (I had to write my own MediaWiki API bindings. The bot can now create pages, and image uploads aren&#039;t far off.&#039;&#039;&#039;&lt;br /&gt;
# Whatever else I forgot (I&#039;m sure I&#039;ll add more as I go)&lt;br /&gt;
&lt;br /&gt;
== Modmail/Ticketing ==&lt;br /&gt;
&lt;br /&gt;
Status: &#039;&#039;&#039;Tickets is currently being trialled on the main DisNCord server (good success so far)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Currently, DisNCord doesn&#039;t have any formal modmail or ticketing for moderator concerns. Specific concerns are handled by direct messaging moderators, and communicating in the #mod-discussion channel, with [[User:NCommander]] having the final say. This may not scale well as the server continues to grow, so a proper modmail or ticketing system would be beneficial. If you have other suggestions for ticketing bots, or experience using any of these, contact [[User:Kraaabs]] (Krabs#0571 on Discord) with your thoughts!&lt;br /&gt;
&lt;br /&gt;
Current proposed candidates:&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/ihaveamac/discord-mod-mail discord-mod-mail] ===&lt;br /&gt;
==== Pros ====&lt;br /&gt;
* &#039;&#039;Extremely&#039;&#039; simple codebase&lt;br /&gt;
* Sirocyl has experience with it&lt;br /&gt;
* Already dockerized&lt;br /&gt;
* Looks easily hackable if needed&lt;br /&gt;
==== Cons ====&lt;br /&gt;
* Uses old-style prefixed bot commands (not &#039;&#039;necessarily&#039;&#039; a con per-se)&lt;br /&gt;
* No formal role-locking -- relies on channel visibility&lt;br /&gt;
&lt;br /&gt;
=== [https://tickettool.xyz Ticket Tool] ===&lt;br /&gt;
==== Pros ====&lt;br /&gt;
* Appears very robust feature-wise&lt;br /&gt;
* Comes with a handy dashboard -- but it&#039;s discord integrated&lt;br /&gt;
* Seemingly scales well&lt;br /&gt;
==== Cons ====&lt;br /&gt;
* The free version is rate-limited (although I don&#039;t think we&#039;ll hit the limit)&lt;br /&gt;
* Features such as DM support are locked behind a paywall&lt;br /&gt;
* UX is somewhat inconsistent and awkward&lt;br /&gt;
* Piles up closed tickets as channels with no real archival&lt;br /&gt;
* GDPR clause just says &amp;quot;contact us&amp;quot; with no other info&lt;br /&gt;
&lt;br /&gt;
=== [https://ticketsbot.net Tickets] ===&lt;br /&gt;
==== Pros ====&lt;br /&gt;
* Similar feature set to Ticket Tool&lt;br /&gt;
* Allows multiple support teams&lt;br /&gt;
* Similar to Ticket Tool, used on many many servers already&lt;br /&gt;
* Very polished interface&lt;br /&gt;
* Deletes ticket channels when tickets are closed, but archives them in a thread for later viewing&lt;br /&gt;
* Allows for the creation of custom forms and panels for ticket creation!&lt;br /&gt;
==== Cons ====&lt;br /&gt;
* Again, some features are paywalled (but nothing super essential...)&lt;br /&gt;
* GDPR is handled through a discord server, which is... odd&lt;br /&gt;
&lt;br /&gt;
== Bot Infrastructure == &lt;br /&gt;
&lt;br /&gt;
Status: &#039;&#039;&#039;The Wiki and Fediverse servers are currently being moved. Afterwards, further discussion of bot hosting will be done.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The thing about Discord bots is that you need to host them, of course. Ideally, for ease of management, all bots would be hosted on Restless Systems infrastructure, using Docker containers.&lt;br /&gt;
&lt;br /&gt;
=== TODO ===&lt;br /&gt;
&lt;br /&gt;
# Do we need a separate VPS for bots? Or will we host on the wiki infra?&lt;br /&gt;
# Are all the bots we want to host Dockerized already? Or do we need to make our own containers?&lt;br /&gt;
# How will we manage the containers? Manually, or with something like K8s?&lt;br /&gt;
## Actually, podman could work too, and it&#039;s a bit simpler... &lt;br /&gt;
# If we want to do auto-updates (we probably do) how will we accomplish this? &lt;br /&gt;
## [[User:NCommander]] had suggested to me that we could use GitHub/GitLab actions. If we go this route, we would likely have to mirror any bots we&#039;re using in our own GitHub/GitLab project. This could pose a problem with the proprietary bots though...&lt;br /&gt;
### Although, we don&#039;t actually need to self host those. In fact, I don&#039;t think we &#039;&#039;can&#039;&#039; (duh. coffee finally kicked in I guess) &lt;br /&gt;
### Also: to get this working we&#039;d need to set up that Git{Lab|Hub} project in the first place&lt;br /&gt;
# For consistency&#039;s sake, are we going to re-containerize everything to use the same OS inside the containers, if they aren&#039;t already? (I doubt all of the bot authors involved are using the same OS)&lt;br /&gt;
## Despite all of the bots probably being written in different languages using different API wrappers, as much consistency as possible would be nice... Although that&#039;s mostly just OCD Sarah talking&lt;br /&gt;
# Finally, what DO we want to host? Should we take this opportunity to self host things like YAGPDB or PK alongside Raconteur and any potential ticketing bot (if we go with a self hosted one)?&lt;/div&gt;</summary>
		<author><name>Kraaabs</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=Project:Wiki_Contribution_Guide&amp;diff=854</id>
		<title>Project:Wiki Contribution Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=Project:Wiki_Contribution_Guide&amp;diff=854"/>
		<updated>2023-01-17T00:54:29Z</updated>

		<summary type="html">&lt;p&gt;Kraaabs: /* How this wiki is used (licensing) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Wiki Docs]]&lt;br /&gt;
&lt;br /&gt;
This page aims to serve as a guide for contributing to the DisNCord Community Wiki. There are some important things to know and guidelines to keep in mind when writing or editing wiki pages that&#039;ll help make everyone&#039;s lives easier, and keep the wiki clean and organized (and most importantly, consistent!)&lt;br /&gt;
&lt;br /&gt;
== Creating Pages ==&lt;br /&gt;
&lt;br /&gt;
The most important thing on any wiki is the pages. Good quality pages with clear topics are encouraged. If you have any questions, ask!&lt;br /&gt;
&lt;br /&gt;
=== What should be a page? ===&lt;br /&gt;
&lt;br /&gt;
Generally speaking, if there&#039;s something you know about that&#039;s mostly undocumented elsewhere and you want to take the steps to gather information about it and create a solid central source of information, do it! Anyone who&#039;s worked with older or more obscure technology knows that sometimes information is lost to time or hopelessly scattered about. Every little bit helps!&lt;br /&gt;
&lt;br /&gt;
If something is your own personal project, it can get a wiki page too. If you&#039;ve got something concrete and it&#039;s generally related to the type of preservation/exploration that DisNCord/Restless Systems tends to dabble in, it&#039;s certainly welcome. If you don&#039;t know if something of yours should get a wiki page, or if you have any doubts, feel free to ask a mod.&lt;br /&gt;
&lt;br /&gt;
== Categorization ==&lt;br /&gt;
&lt;br /&gt;
MediaWiki features two mostly unrelated category systems. If you&#039;re not used to working with MediaWiki-based wikis, it can be confusing to tell the difference between the two.&lt;br /&gt;
&lt;br /&gt;
=== Namespaces ===&lt;br /&gt;
&lt;br /&gt;
Namespaces are the first type of category that we use on this wiki. You&#039;ll know if a page is namespaced by looking for a prefix in the page title. For instance, this page is in the &amp;lt;code&amp;gt;Project:&amp;lt;/code&amp;gt; namespace.&lt;br /&gt;
&lt;br /&gt;
Namespaces are generally used here for specific purposes. Things in the &amp;lt;code&amp;gt;Project:&amp;lt;/code&amp;gt; namespace are generally related to the wiki, Mastodon, or Discord themselves, and can be seen as more &amp;quot;meta&amp;quot; articles. Pages in the &amp;lt;code&amp;gt;Category:&amp;lt;/code&amp;gt; namespace are... well, categories. There are other namespaces too, such as &amp;lt;code&amp;gt;Help:&amp;lt;/code&amp;gt;, but those aren&#039;t often used manually.&lt;br /&gt;
&lt;br /&gt;
An important thing to note is that &#039;&#039;&#039;namespaces are not to be used for ordinary pages!&#039;&#039;&#039; The way MediaWiki presents them is confusing, but they are not categories, and namespaced pages don&#039;t show up properly in searches, etc. Categories should be used for categorizing pages instead.&lt;br /&gt;
&lt;br /&gt;
=== Categories ===&lt;br /&gt;
&lt;br /&gt;
Categories are the primary type of category used for pages. These have no special prefixes or suffixes appended to page titles, and the categories a page uses can be viewed on the right hand side next to the page content (on desktop). Every category &#039;&#039;should&#039;&#039; have a landing page in the &amp;lt;code&amp;gt;Category:&amp;lt;/code&amp;gt; namespace that serves as an auto-generated directory of pages within the category. See [https://restless.systems/wiki/Category:Preservation_and_Documentation Category:Preservation and Documentation] &amp;lt;!-- note: we can&#039;t link to category pages normally because of the way category tagging works... --&amp;gt; as an example.&lt;br /&gt;
&lt;br /&gt;
To categorize a page, simply add a link to the category page in your WikiText source. For example, adding &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[Category:Preservation and Documentation]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; to your markup will place your page in the Preservation and Documentation category.&lt;br /&gt;
&lt;br /&gt;
==== Categories currently in use ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[Category:Wiki Docs]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - documentation relating to how to use the wiki&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[Category:Competition]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - competitions held on Discord or elsewhere&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[Category:Discord]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - pages related to the operation of the DisNCord server&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[Category:Discussion Logs]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - logs of conversations on DisNCord that may have valuable information&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[Category:Fluff]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - fun stuff&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[Category:History]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - history of specific machines, software, or events&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[Category:Preservation and Documentation]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - pages related to preservation efforts&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[Category:OS/2]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - pages related to the ongoing research into OS/2 being performed by [[User:NCommander]] and others&lt;br /&gt;
&lt;br /&gt;
Other categories may be added as needed. Please ask before adding your page to a brand new category -- a category with only one page is rarely useful, so ask yourself if your page can fit into one of the existing categories. If enough pages build up that they might need their own categorization, feel free to bring it up in the Discord #wiki-bootstrap channel. (This is why we have an OS/2 category, after all)&lt;br /&gt;
&lt;br /&gt;
== Page Etiquette == &lt;br /&gt;
&lt;br /&gt;
One key thing to keep in mind in order to keep the wiki organized is the tone and style of pages. &lt;br /&gt;
&lt;br /&gt;
=== Citation ===&lt;br /&gt;
&lt;br /&gt;
Remember to cite your sources! Primary knowledge is fine, but cited information is far better. [https://www.mediawiki.org/wiki/Help:Cite MediaWiki has a citation system] that is fairly easy to use, and it&#039;s easier to cite as you go, rather than go back and add citations.&lt;br /&gt;
&lt;br /&gt;
=== Should this be multiple pages? ===&lt;br /&gt;
&lt;br /&gt;
Consider if the topic you&#039;re writing about should be multiple pages. Some topics, such as [[Research Stream: OS/2 1.0 Explorations]] make more sense as a large monolithic page. Other topics, such as the OS/2 and MDOS executable formats ([[Linear Executable]], [[New Executable]]) make sense as separate articles from the main [[Multitasking DOS 4]] page.&lt;br /&gt;
&lt;br /&gt;
In general, individual topics or technologies should get their own page. This is better for discoverability, and it also makes it easier to reference this wiki properly. Think of it this way: if you&#039;re looking for information on an obscure executable format, would you rather look at the page titled [[New Executable]], or an entire textbook titled &amp;quot;OS/2 Internals&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
=== Style guide ===&lt;br /&gt;
&lt;br /&gt;
A formal style guide shouldn&#039;t be strictly necessary, as everyone has differing writing styles, and not everyone is a native English speaker. However, a few notes:&lt;br /&gt;
&lt;br /&gt;
* Use paragraphs! In general, paragraph breaks should be frequent, and each paragraph should be a separate topic, event, or idea. Look at how Wikipedia does things for a good example. This keeps things easy to read, and easy on the eyes.&lt;br /&gt;
* Use sections! Using sections (&amp;lt;code&amp;gt;== Primary Section ==&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;=== Secondary Section ===&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;==== Tertiary Section ====&amp;lt;/code&amp;gt;) does two things. Firstly, it breaks the page up visually, making it easy to find key information quickly. Secondly, it generates a nice table of contents at the start of the page. This aids in navigation, and makes it easy to link to different sections of the page!&lt;br /&gt;
* Write from as neutral of a tone as possible. Think of this as an encyclopedia of sorts. Opinions are welcome, and bias happens, but write objectively if at all possible. We want to present information most of all.&lt;br /&gt;
&lt;br /&gt;
== How this wiki is used (licensing) ==&lt;br /&gt;
&lt;br /&gt;
This wiki is tentatively licensed under [https://creativecommons.org/licenses/by-sa/4.0/ CC-BY-SA 4.0]. This is a similar license to the one that Wikipedia uses, and in general, usage falls under the same terms. Any content directly added to this wiki must be released either under the terms of the license, or under terms compatible with it. Essentially, CC-BY-SA states:&lt;br /&gt;
&lt;br /&gt;
* You are free to share content from this wiki as you wish, including derivative works.&lt;br /&gt;
* However, any derivative works MUST credit the original author of the work, and MUST be shared under the same license as the work.&lt;br /&gt;
&lt;br /&gt;
Essentially, this means that if you directly take anything from this wiki, the original author must be credited, and your work must also be CC-BY-SA 4.0.&lt;br /&gt;
&lt;br /&gt;
Currently, we&#039;re evaluating whether CC-BY-SA is the best choice for the wiki. The license may be subject to change. &lt;br /&gt;
&lt;br /&gt;
=== Use of this wiki by NCommander ===&lt;br /&gt;
&lt;br /&gt;
You can think of this wiki sort of like [[User:NCommander]]&#039;s project notebook of sorts. Anything written here has the potential to be used elsewhere in a video or a stream, and you&#039;re essentially giving permission for them or anyone who comes across the wiki to use the information as they please. Sharing is caring, and the spread of information is always a good thing!&lt;br /&gt;
&lt;br /&gt;
=== Copyrighted Materials ===&lt;br /&gt;
&lt;br /&gt;
Being a wiki that often delves into software and hardware preservation, the issue of copyrighted content is bound to come up. Generally speaking, &#039;&#039;&#039;ASK.&#039;&#039;&#039; We cannot host or link to any copyrighted materials in general. (Abandonware is still copyrighted!)&lt;br /&gt;
&lt;br /&gt;
The current understanding is that it&#039;s okay to make people aware that such things can be found. For example, saying &amp;quot;here&#039;s a link to X and Y on the Internet Archive&amp;quot; is NOT okay, but &amp;quot;you can find X and Y easily by searching on the Internet Archive&amp;quot; IS okay. &#039;&#039;Mentioning&#039;&#039; copyrighted content is fine, just don&#039;t give too many specifics on acquisition. This follows a similar policy to the Discord server.&lt;/div&gt;</summary>
		<author><name>Kraaabs</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=Project:Wiki_Contribution_Guide&amp;diff=853</id>
		<title>Project:Wiki Contribution Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=Project:Wiki_Contribution_Guide&amp;diff=853"/>
		<updated>2023-01-17T00:52:47Z</updated>

		<summary type="html">&lt;p&gt;Kraaabs: missing line break ~Sarah&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Wiki Docs]]&lt;br /&gt;
&lt;br /&gt;
This page aims to serve as a guide for contributing to the DisNCord Community Wiki. There are some important things to know and guidelines to keep in mind when writing or editing wiki pages that&#039;ll help make everyone&#039;s lives easier, and keep the wiki clean and organized (and most importantly, consistent!)&lt;br /&gt;
&lt;br /&gt;
== Creating Pages ==&lt;br /&gt;
&lt;br /&gt;
The most important thing on any wiki is the pages. Good quality pages with clear topics are encouraged. If you have any questions, ask!&lt;br /&gt;
&lt;br /&gt;
=== What should be a page? ===&lt;br /&gt;
&lt;br /&gt;
Generally speaking, if there&#039;s something you know about that&#039;s mostly undocumented elsewhere and you want to take the steps to gather information about it and create a solid central source of information, do it! Anyone who&#039;s worked with older or more obscure technology knows that sometimes information is lost to time or hopelessly scattered about. Every little bit helps!&lt;br /&gt;
&lt;br /&gt;
If something is your own personal project, it can get a wiki page too. If you&#039;ve got something concrete and it&#039;s generally related to the type of preservation/exploration that DisNCord/Restless Systems tends to dabble in, it&#039;s certainly welcome. If you don&#039;t know if something of yours should get a wiki page, or if you have any doubts, feel free to ask a mod.&lt;br /&gt;
&lt;br /&gt;
== Categorization ==&lt;br /&gt;
&lt;br /&gt;
MediaWiki features two mostly unrelated category systems. If you&#039;re not used to working with MediaWiki-based wikis, it can be confusing to tell the difference between the two.&lt;br /&gt;
&lt;br /&gt;
=== Namespaces ===&lt;br /&gt;
&lt;br /&gt;
Namespaces are the first type of category that we use on this wiki. You&#039;ll know if a page is namespaced by looking for a prefix in the page title. For instance, this page is in the &amp;lt;code&amp;gt;Project:&amp;lt;/code&amp;gt; namespace.&lt;br /&gt;
&lt;br /&gt;
Namespaces are generally used here for specific purposes. Things in the &amp;lt;code&amp;gt;Project:&amp;lt;/code&amp;gt; namespace are generally related to the wiki, Mastodon, or Discord themselves, and can be seen as more &amp;quot;meta&amp;quot; articles. Pages in the &amp;lt;code&amp;gt;Category:&amp;lt;/code&amp;gt; namespace are... well, categories. There are other namespaces too, such as &amp;lt;code&amp;gt;Help:&amp;lt;/code&amp;gt;, but those aren&#039;t often used manually.&lt;br /&gt;
&lt;br /&gt;
An important thing to note is that &#039;&#039;&#039;namespaces are not to be used for ordinary pages!&#039;&#039;&#039; The way MediaWiki presents them is confusing, but they are not categories, and namespaced pages don&#039;t show up properly in searches, etc. Categories should be used for categorizing pages instead.&lt;br /&gt;
&lt;br /&gt;
=== Categories ===&lt;br /&gt;
&lt;br /&gt;
Categories are the primary type of category used for pages. These have no special prefixes or suffixes appended to page titles, and the categories a page uses can be viewed on the right hand side next to the page content (on desktop). Every category &#039;&#039;should&#039;&#039; have a landing page in the &amp;lt;code&amp;gt;Category:&amp;lt;/code&amp;gt; namespace that serves as an auto-generated directory of pages within the category. See [https://restless.systems/wiki/Category:Preservation_and_Documentation Category:Preservation and Documentation] &amp;lt;!-- note: we can&#039;t link to category pages normally because of the way category tagging works... --&amp;gt; as an example.&lt;br /&gt;
&lt;br /&gt;
To categorize a page, simply add a link to the category page in your WikiText source. For example, adding &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[Category:Preservation and Documentation]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; to your markup will place your page in the Preservation and Documentation category.&lt;br /&gt;
&lt;br /&gt;
==== Categories currently in use ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[Category:Wiki Docs]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - documentation relating to how to use the wiki&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[Category:Competition]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - competitions held on Discord or elsewhere&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[Category:Discord]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - pages related to the operation of the DisNCord server&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[Category:Discussion Logs]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - logs of conversations on DisNCord that may have valuable information&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[Category:Fluff]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - fun stuff&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[Category:History]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - history of specific machines, software, or events&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[Category:Preservation and Documentation]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - pages related to preservation efforts&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[Category:OS/2]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - pages related to the ongoing research into OS/2 being performed by [[User:NCommander]] and others&lt;br /&gt;
&lt;br /&gt;
Other categories may be added as needed. Please ask before adding your page to a brand new category -- a category with only one page is rarely useful, so ask yourself if your page can fit into one of the existing categories. If enough pages build up that they might need their own categorization, feel free to bring it up in the Discord #wiki-bootstrap channel. (This is why we have an OS/2 category, after all)&lt;br /&gt;
&lt;br /&gt;
== Page Etiquette == &lt;br /&gt;
&lt;br /&gt;
One key thing to keep in mind in order to keep the wiki organized is the tone and style of pages. &lt;br /&gt;
&lt;br /&gt;
=== Citation ===&lt;br /&gt;
&lt;br /&gt;
Remember to cite your sources! Primary knowledge is fine, but cited information is far better. [https://www.mediawiki.org/wiki/Help:Cite MediaWiki has a citation system] that is fairly easy to use, and it&#039;s easier to cite as you go, rather than go back and add citations.&lt;br /&gt;
&lt;br /&gt;
=== Should this be multiple pages? ===&lt;br /&gt;
&lt;br /&gt;
Consider if the topic you&#039;re writing about should be multiple pages. Some topics, such as [[Research Stream: OS/2 1.0 Explorations]] make more sense as a large monolithic page. Other topics, such as the OS/2 and MDOS executable formats ([[Linear Executable]], [[New Executable]]) make sense as separate articles from the main [[Multitasking DOS 4]] page.&lt;br /&gt;
&lt;br /&gt;
In general, individual topics or technologies should get their own page. This is better for discoverability, and it also makes it easier to reference this wiki properly. Think of it this way: if you&#039;re looking for information on an obscure executable format, would you rather look at the page titled [[New Executable]], or an entire textbook titled &amp;quot;OS/2 Internals&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
=== Style guide ===&lt;br /&gt;
&lt;br /&gt;
A formal style guide shouldn&#039;t be strictly necessary, as everyone has differing writing styles, and not everyone is a native English speaker. However, a few notes:&lt;br /&gt;
&lt;br /&gt;
* Use paragraphs! In general, paragraph breaks should be frequent, and each paragraph should be a separate topic, event, or idea. Look at how Wikipedia does things for a good example. This keeps things easy to read, and easy on the eyes.&lt;br /&gt;
* Use sections! Using sections (&amp;lt;code&amp;gt;== Primary Section ==&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;=== Secondary Section ===&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;==== Tertiary Section ====&amp;lt;/code&amp;gt;) does two things. Firstly, it breaks the page up visually, making it easy to find key information quickly. Secondly, it generates a nice table of contents at the start of the page. This aids in navigation, and makes it easy to link to different sections of the page!&lt;br /&gt;
* Write from as neutral of a tone as possible. Think of this as an encyclopedia of sorts. Opinions are welcome, and bias happens, but write objectively if at all possible. We want to present information most of all.&lt;br /&gt;
&lt;br /&gt;
== How this wiki is used (licensing) ==&lt;br /&gt;
&lt;br /&gt;
This wiki is tentatively licensed under [https://creativecommons.org/licenses/by-sa/4.0/ CC-BY-SA 4.0]. This is a similar license to the one that Wikipedia uses, and in general, usage falls under the same terms. Any content directly added to this wiki must be released either under the terms of the license, or under terms compatible with it. Essentially, CC-BY-SA states:&lt;br /&gt;
&lt;br /&gt;
* You are free to share content from this wiki as you wish, including derivative works.&lt;br /&gt;
* However, any derivative works MUST credit the original author of the work, and MUST be shared under the same license as the work.&lt;br /&gt;
&lt;br /&gt;
Essentially, this means that if you directly take anything from this wiki, the original author must be credited, and your work must also be CC-BY-SA 4.0. &lt;br /&gt;
&lt;br /&gt;
=== Use of this wiki by NCommander ===&lt;br /&gt;
&lt;br /&gt;
You can think of this wiki sort of like [[User:NCommander]]&#039;s project notebook of sorts. Anything written here has the potential to be used elsewhere in a video or a stream, and you&#039;re essentially giving permission for them or anyone who comes across the wiki to use the information as they please. Sharing is caring, and the spread of information is always a good thing!&lt;br /&gt;
&lt;br /&gt;
=== Copyrighted Materials ===&lt;br /&gt;
&lt;br /&gt;
Being a wiki that often delves into software and hardware preservation, the issue of copyrighted content is bound to come up. Generally speaking, &#039;&#039;&#039;ASK.&#039;&#039;&#039; We cannot host or link to any copyrighted materials in general. (Abandonware is still copyrighted!)&lt;br /&gt;
&lt;br /&gt;
The current understanding is that it&#039;s okay to make people aware that such things can be found. For example, saying &amp;quot;here&#039;s a link to X and Y on the Internet Archive&amp;quot; is NOT okay, but &amp;quot;you can find X and Y easily by searching on the Internet Archive&amp;quot; IS okay. &#039;&#039;Mentioning&#039;&#039; copyrighted content is fine, just don&#039;t give too many specifics on acquisition. This follows a similar policy to the Discord server.&lt;/div&gt;</summary>
		<author><name>Kraaabs</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=Category:Wiki_Docs&amp;diff=852</id>
		<title>Category:Wiki Docs</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=Category:Wiki_Docs&amp;diff=852"/>
		<updated>2023-01-17T00:50:54Z</updated>

		<summary type="html">&lt;p&gt;Kraaabs: Add landing page for new Wiki Docs category ~Sarah&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This category contains pages documenting how to use and contribute to this wiki.&lt;/div&gt;</summary>
		<author><name>Kraaabs</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=Project:Wiki_Contribution_Guide&amp;diff=851</id>
		<title>Project:Wiki Contribution Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=Project:Wiki_Contribution_Guide&amp;diff=851"/>
		<updated>2023-01-17T00:50:24Z</updated>

		<summary type="html">&lt;p&gt;Kraaabs: Adding an initial draft of a set of guidelines for wiki contributions ~Sarah&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Wiki Docs]]&lt;br /&gt;
&lt;br /&gt;
This page aims to serve as a guide for contributing to the DisNCord Community Wiki. There are some important things to know and guidelines to keep in mind when writing or editing wiki pages that&#039;ll help make everyone&#039;s lives easier, and keep the wiki clean and organized (and most importantly, consistent!)&lt;br /&gt;
&lt;br /&gt;
== Creating Pages ==&lt;br /&gt;
&lt;br /&gt;
The most important thing on any wiki is the pages. Good quality pages with clear topics are encouraged. If you have any questions, ask!&lt;br /&gt;
&lt;br /&gt;
=== What should be a page? ===&lt;br /&gt;
&lt;br /&gt;
Generally speaking, if there&#039;s something you know about that&#039;s mostly undocumented elsewhere and you want to take the steps to gather information about it and create a solid central source of information, do it! Anyone who&#039;s worked with older or more obscure technology knows that sometimes information is lost to time or hopelessly scattered about. Every little bit helps!&lt;br /&gt;
&lt;br /&gt;
If something is your own personal project, it can get a wiki page too. If you&#039;ve got something concrete and it&#039;s generally related to the type of preservation/exploration that DisNCord/Restless Systems tends to dabble in, it&#039;s certainly welcome. If you don&#039;t know if something of yours should get a wiki page, or if you have any doubts, feel free to ask a mod.&lt;br /&gt;
&lt;br /&gt;
== Categorization ==&lt;br /&gt;
&lt;br /&gt;
MediaWiki features two mostly unrelated category systems. If you&#039;re not used to working with MediaWiki-based wikis, it can be confusing to tell the difference between the two.&lt;br /&gt;
&lt;br /&gt;
=== Namespaces ===&lt;br /&gt;
&lt;br /&gt;
Namespaces are the first type of category that we use on this wiki. You&#039;ll know if a page is namespaced by looking for a prefix in the page title. For instance, this page is in the &amp;lt;code&amp;gt;Project:&amp;lt;/code&amp;gt; namespace.&lt;br /&gt;
&lt;br /&gt;
Namespaces are generally used here for specific purposes. Things in the &amp;lt;code&amp;gt;Project:&amp;lt;/code&amp;gt; namespace are generally related to the wiki, Mastodon, or Discord themselves, and can be seen as more &amp;quot;meta&amp;quot; articles. Pages in the &amp;lt;code&amp;gt;Category:&amp;lt;/code&amp;gt; namespace are... well, categories. There are other namespaces too, such as &amp;lt;code&amp;gt;Help:&amp;lt;/code&amp;gt;, but those aren&#039;t often used manually.&lt;br /&gt;
&lt;br /&gt;
An important thing to note is that &#039;&#039;&#039;namespaces are not to be used for ordinary pages!&#039;&#039;&#039; The way MediaWiki presents them is confusing, but they are not categories, and namespaced pages don&#039;t show up properly in searches, etc. Categories should be used for categorizing pages instead.&lt;br /&gt;
&lt;br /&gt;
=== Categories ===&lt;br /&gt;
&lt;br /&gt;
Categories are the primary type of category used for pages. These have no special prefixes or suffixes appended to page titles, and the categories a page uses can be viewed on the right hand side next to the page content (on desktop). Every category &#039;&#039;should&#039;&#039; have a landing page in the &amp;lt;code&amp;gt;Category:&amp;lt;/code&amp;gt; namespace that serves as an auto-generated directory of pages within the category. See [https://restless.systems/wiki/Category:Preservation_and_Documentation Category:Preservation and Documentation] &amp;lt;!-- note: we can&#039;t link to category pages normally because of the way category tagging works... --&amp;gt; as an example.&lt;br /&gt;
&lt;br /&gt;
To categorize a page, simply add a link to the category page in your WikiText source. For example, adding &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[Category:Preservation and Documentation]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; to your markup will place your page in the Preservation and Documentation category.&lt;br /&gt;
&lt;br /&gt;
==== Categories currently in use ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[Category:Wiki Docs]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - documentation relating to how to use the wiki&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[Category:Competition]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - competitions held on Discord or elsewhere&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[Category:Discord]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - pages related to the operation of the DisNCord server&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[Category:Discussion Logs]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - logs of conversations on DisNCord that may have valuable information&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[Category:Fluff]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - fun stuff&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[Category:History]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - history of specific machines, software, or events&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[Category:Preservation and Documentation]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - pages related to preservation efforts&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[Category:OS/2]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; - pages related to the ongoing research into OS/2 being performed by [[User:NCommander]] and others&lt;br /&gt;
&lt;br /&gt;
Other categories may be added as needed. Please ask before adding your page to a brand new category -- a category with only one page is rarely useful, so ask yourself if your page can fit into one of the existing categories. If enough pages build up that they might need their own categorization, feel free to bring it up in the Discord #wiki-bootstrap channel. (This is why we have an OS/2 category, after all)&lt;br /&gt;
&lt;br /&gt;
== Page Etiquette == &lt;br /&gt;
&lt;br /&gt;
One key thing to keep in mind in order to keep the wiki organized is the tone and style of pages. &lt;br /&gt;
&lt;br /&gt;
=== Citation ===&lt;br /&gt;
&lt;br /&gt;
Remember to cite your sources! Primary knowledge is fine, but cited information is far better. [https://www.mediawiki.org/wiki/Help:Cite MediaWiki has a citation system] that is fairly easy to use, and it&#039;s easier to cite as you go, rather than go back and add citations.&lt;br /&gt;
&lt;br /&gt;
=== Should this be multiple pages? ===&lt;br /&gt;
&lt;br /&gt;
Consider if the topic you&#039;re writing about should be multiple pages. Some topics, such as [[Research Stream: OS/2 1.0 Explorations]] make more sense as a large monolithic page. Other topics, such as the OS/2 and MDOS executable formats ([[Linear Executable]], [[New Executable]]) make sense as separate articles from the main [[Multitasking DOS 4]] page.&lt;br /&gt;
&lt;br /&gt;
In general, individual topics or technologies should get their own page. This is better for discoverability, and it also makes it easier to reference this wiki properly. Think of it this way: if you&#039;re looking for information on an obscure executable format, would you rather look at the page titled [[New Executable]], or an entire textbook titled &amp;quot;OS/2 Internals&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
=== Style guide ===&lt;br /&gt;
&lt;br /&gt;
A formal style guide shouldn&#039;t be strictly necessary, as everyone has differing writing styles, and not everyone is a native English speaker. However, a few notes:&lt;br /&gt;
&lt;br /&gt;
* Use paragraphs! In general, paragraph breaks should be frequent, and each paragraph should be a separate topic, event, or idea. Look at how Wikipedia does things for a good example. This keeps things easy to read, and easy on the eyes.&lt;br /&gt;
* Use sections! Using sections (&amp;lt;code&amp;gt;== Primary Section ==&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;=== Secondary Section ===&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;==== Tertiary Section ====&amp;lt;/code&amp;gt;) does two things. Firstly, it breaks the page up visually, making it easy to find key information quickly. Secondly, it generates a nice table of contents at the start of the page. This aids in navigation, and makes it easy to link to different sections of the page!&lt;br /&gt;
* Write from as neutral of a tone as possible. Think of this as an encyclopedia of sorts. Opinions are welcome, and bias happens, but write objectively if at all possible. We want to present information most of all.&lt;br /&gt;
&lt;br /&gt;
== How this wiki is used (licensing) ==&lt;br /&gt;
&lt;br /&gt;
This wiki is tentatively licensed under [https://creativecommons.org/licenses/by-sa/4.0/ CC-BY-SA 4.0]. This is a similar license to the one that Wikipedia uses, and in general, usage falls under the same terms. Any content directly added to this wiki must be released either under the terms of the license, or under terms compatible with it. Essentially, CC-BY-SA states:&lt;br /&gt;
&lt;br /&gt;
* You are free to share content from this wiki as you wish, including derivative works.&lt;br /&gt;
* However, any derivative works MUST credit the original author of the work, and MUST be shared under the same license as the work.&lt;br /&gt;
&lt;br /&gt;
Essentially, this means that if you directly take anything from this wiki, the original author must be credited, and your work must also be CC-BY-SA 4.0. &lt;br /&gt;
&lt;br /&gt;
=== Use of this wiki by NCommander ===&lt;br /&gt;
&lt;br /&gt;
You can think of this wiki sort of like [[User:NCommander]]&#039;s project notebook of sorts. Anything written here has the potential to be used elsewhere in a video or a stream, and you&#039;re essentially giving permission for them or anyone who comes across the wiki to use the information as they please. Sharing is caring, and the spread of information is always a good thing!&lt;br /&gt;
&lt;br /&gt;
=== Copyrighted Materials ===&lt;br /&gt;
&lt;br /&gt;
Being a wiki that often delves into software and hardware preservation, the issue of copyrighted content is bound to come up. Generally speaking, &#039;&#039;&#039;ASK.&#039;&#039;&#039; We cannot host or link to any copyrighted materials in general. (Abandonware is still copyrighted!)&lt;br /&gt;
&lt;br /&gt;
The current understanding is that it&#039;s okay to make people aware that such things can be found. For example, saying &amp;quot;here&#039;s a link to X and Y on the Internet Archive&amp;quot; is NOT okay, but &amp;quot;you can find X and Y easily by searching on the Internet Archive&amp;quot; IS okay. &#039;&#039;Mentioning&#039;&#039; copyrighted content is fine, just don&#039;t give too many specifics on acquisition. This follows a similar policy to the Discord server.&lt;/div&gt;</summary>
		<author><name>Kraaabs</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=Slow_Computing_Speedruning&amp;diff=709</id>
		<title>Slow Computing Speedruning</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=Slow_Computing_Speedruning&amp;diff=709"/>
		<updated>2023-01-12T15:40:15Z</updated>

		<summary type="html">&lt;p&gt;Kraaabs: Kraaabs moved page Slow Computing Speedruning to Slow Computing Speedrunning: Cleaning page titles&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Slow Computing Speedrunning]]&lt;/div&gt;</summary>
		<author><name>Kraaabs</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=Slow_Computing_Speedrunning&amp;diff=708</id>
		<title>Slow Computing Speedrunning</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=Slow_Computing_Speedrunning&amp;diff=708"/>
		<updated>2023-01-12T15:40:15Z</updated>

		<summary type="html">&lt;p&gt;Kraaabs: Kraaabs moved page Slow Computing Speedruning to Slow Computing Speedrunning: Cleaning page titles&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Competition]]&lt;br /&gt;
Welcome to the Slow Computing any% Speedrunning Contest; also known as watching digital paint dry.&lt;br /&gt;
&lt;br /&gt;
The goal of this contest is simple. To celebrate the long code [https://xkcd.com/303/] times, we&#039;re running an informal contest to celebrate this era of batch processing.&lt;br /&gt;
&lt;br /&gt;
== Objective and Rules ==&lt;br /&gt;
&lt;br /&gt;
It&#039;s pretty simple:&lt;br /&gt;
* Using any vintage computer of your choice, perform a long-running task of some sort&lt;br /&gt;
* Livestream, or otherwise provide regular status updates that show how far you have gotten.&lt;br /&gt;
* Emulators and the like are A-OK; just let us know what it&#039;s doing.&lt;br /&gt;
&lt;br /&gt;
After each run, success or failure, our judges (which is mostly just the regulars in #paint-drying on [https://discord.gg/V8esNah Discord]) will deem what, if any titles such run has earned, and an entirely subjective place on the Wall of Pain. There are absolutely no prizes besides the knowledge that you might be immortalized here for the life of the wiki.&lt;br /&gt;
&lt;br /&gt;
Do you dare step up?&lt;br /&gt;
&lt;br /&gt;
=== Examples of projects ===&lt;br /&gt;
For example, upgrading through every version of OS/2, building GCC, or the like. Livestream or otherwise regularly update the panting drying competition community. For NCommander&#039;s entries, VoDs on YouTube were provided. Europa livestreamed the terminal on Discord throughout the duration. Any sorta long running log with regular updates is acceptable.&lt;br /&gt;
&lt;br /&gt;
= The Wall of Pain =&lt;br /&gt;
New categories will be added as needed&lt;br /&gt;
&lt;br /&gt;
== Idle Pain ==&lt;br /&gt;
Idle Pain refers to tasks where they&#039;re started, and mostly left untouched until they finish (excluding minor tweaks, build failures, etc.)&lt;br /&gt;
&lt;br /&gt;
=== GCC 8 on an Ultra 5 running OpenBSD/sparc64 (Europa) ===&lt;br /&gt;
* &#039;&#039;&#039;Status:&#039;&#039;&#039; Complete!&lt;br /&gt;
* &#039;&#039;&#039;Duration:&#039;&#039;&#039; Approximately 5.375 days (4.5 days GCC, 0.875 days CDE)&lt;br /&gt;
* &#039;&#039;&#039;Proof:&#039;&#039;&#039; Livestreamed on Discord, updates periodically provided via Discord, [https://twitter.com/europa6502/status/1587304622749876224 Twitter], and Mastodon&lt;br /&gt;
* &#039;&#039;&#039;Comments:&#039;&#039;&#039;&lt;br /&gt;
** The build that started it all, Europa&#039;s attempt to install CDE which required upgrading GCC, and starting a multiday build process that lead to the creation of the paint drying community ... I&#039;m still wondering how we got here - [[User:NCommander|NCommander]] ([[User talk:NCommander|talk]]) 14:54, 4 November 2022 (UTC)&lt;br /&gt;
** It finished! She managed to build CDE with her new GCC after some help from NCommander, and is now working on configuring her newly built CDE! - [[User:Kraaabs|Kraaabs]] (([[User talk:Kraaabs|talk]]) 01:56, 7 November 2022 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Forcing Windows 7 onto a 66MHz CPU (Griffin) ===&lt;br /&gt;
* &#039;&#039;&#039;Status:&#039;&#039;&#039; Complete!&lt;br /&gt;
* &#039;&#039;&#039;Duration:&#039;&#039;&#039; About 14 hours&lt;br /&gt;
* &#039;&#039;&#039;Proof:&#039;&#039;&#039; Livestreamed on Discord, and live-updated in a Discord thread&lt;br /&gt;
* &#039;&#039;&#039;Comments:&#039;&#039;&#039;&lt;br /&gt;
** The first entry to finish, I believe! They used 86box emulating a VIA Samuel, and a lot of trial and error to get the thing to boot at all. Was a fun one to watch. Nice and painful. [https://twitter.com/FOSSfirefighter/status/1588999569593208832 N tweeted about this one, too.] - [[User:Kraaabs|Kraaabs]] ([[User talk:Kraaabs|talk]]) 03:02, 7 November 2022 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Installing Gentoo in DOSBochs in QEMU on Void Linux on a PowerBook G4 (Krabs) ===&lt;br /&gt;
* &#039;&#039;&#039;Status:&#039;&#039;&#039; Ongoing&lt;br /&gt;
* &#039;&#039;&#039;Duration:&#039;&#039;&#039; About 52 hours so far.&lt;br /&gt;
* &#039;&#039;&#039;Proof:&#039;&#039;&#039; Livestreamed on Discord, and live-updated in a Discord thread&lt;br /&gt;
* &#039;&#039;&#039;Comments:&#039;&#039;&#039;&lt;br /&gt;
** Yep, still going. It&#039;s been about 52 hours (~24-ish of which was prep work), and we&#039;re still decompressing the kernel on the Gentoo install CD. In for the long haul, this one. Being that I have to babysit this, is it active pain? There&#039;s a lot of waiting. Hybrid pain, maybe. :^) - [[User:Kraaabs|Kraaabs]] ([[User talk:Kraaabs|talk]]) 03:06, 7 November 2022 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Compiling every major release of NetBSD on a SparcStation 2 (Daghdha) ===&lt;br /&gt;
* &#039;&#039;&#039;Status:&#039;&#039;&#039; Ongoing&lt;br /&gt;
* &#039;&#039;&#039;Duration:&#039;&#039;&#039; 54 days (as of 2 Jan 2023)&lt;br /&gt;
* &#039;&#039;&#039;Expected to Complete:&#039;&#039;&#039; 15 March 2023 (~73 days)&lt;br /&gt;
* &#039;&#039;&#039;Proof:&#039;&#039;&#039; Livestreamed on Discord, and live-updated in a Discord thread. Each release takes a week to build.&lt;br /&gt;
&lt;br /&gt;
=== Installing Windows 98 inside of Windows XP inside of Windows Vista inside of Windows 8 inside of Windows 10 (Autumn) ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Status:&#039;&#039;&#039; Ongoing&lt;br /&gt;
* &#039;&#039;&#039;Duration:&#039;&#039;&#039; 13 days (as of 1/12/23)&lt;br /&gt;
* &#039;&#039;&#039;Proof:&#039;&#039;&#039; Discord live stream + milestones in the corresponding channel&lt;br /&gt;
* &#039;&#039;&#039;Comments:&#039;&#039;&#039; &lt;br /&gt;
** [[Autumnbreeze|Autumn]] (12:13 1/12/23) FFS the XP installer took 11 straight days to boot &#039;&#039;&#039;&#039;&#039;TEXT MODE&#039;&#039;&#039;&#039;&#039;... I am going to be in for a long wait on this one...&lt;br /&gt;
&lt;br /&gt;
== Active Pain ==&lt;br /&gt;
Active Pain entries are livestreams or single projects that are actively worked on over the period of the competition. They can be over multiple sessions, with time being tallied up.&lt;br /&gt;
&lt;br /&gt;
=== Windows 98/ME on the Cursed 486 (NCommander) ===&lt;br /&gt;
* &#039;&#039;&#039;Status:&#039;&#039;&#039; On Hiatus/Ongoing&lt;br /&gt;
* &#039;&#039;&#039;Proof:&#039;&#039;&#039; https://www.youtube.com/watch?v=0uaINJAktLA (and messages in #content + Fedi)&lt;br /&gt;
* &#039;&#039;&#039;Duration:&#039;&#039;&#039; Multiple attempts over multiple days, one 9 hour&lt;br /&gt;
* &#039;&#039;&#039;Comments:&#039;&#039;&#039;&lt;br /&gt;
** You can&#039;t install ME on 32 MiB of memory. Upgrades ordered. So far, Windows 98 First Edition was installed from floppies, second edition from Netware, and ME from NetWare and local install, with each attempt taking literal hours. [[User:NCommander|NCommander]] ([[User talk:NCommander|talk]]) 13:44, 2 January 2023 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Upgrading Through Every Version of OS/2 (NCommander) ===&lt;br /&gt;
* &#039;&#039;&#039;Status:&#039;&#039;&#039; Complete/Historical&lt;br /&gt;
*&#039;&#039;&#039;Proof:&#039;&#039;&#039; VoDs: https://www.youtube.com/watch?v=xeaRlhz96mI and https://www.youtube.com/watch?v=8uwGTHZzzF4&lt;br /&gt;
* &#039;&#039;&#039;Duration:&#039;&#039;&#039; Approximately 22 Hours&lt;br /&gt;
* &#039;&#039;&#039;Comments:&#039;&#039;&#039; &lt;br /&gt;
** ow [[User:NCommander|- NCommander]] ([[User talk:NCommander|talk]]) 14:54, 4 November 2022 (UTC)&lt;br /&gt;
&lt;br /&gt;
=== Windows 10 in QEMU on a PowerBook G4 (Krabs) ===&lt;br /&gt;
* &#039;&#039;&#039;Status:&#039;&#039;&#039; Complete/Historical&lt;br /&gt;
*&#039;&#039;&#039;Proof:&#039;&#039;&#039; Was live-updated on Discord, and also in the [https://picsofbread.com/potato-bread writeup here]&lt;br /&gt;
* &#039;&#039;&#039;Duration:&#039;&#039;&#039; About 10 active hours, and about 18 more waiting for it to boot&lt;br /&gt;
* &#039;&#039;&#039;Comments:&#039;&#039;&#039; &lt;br /&gt;
** This was painful. Good way to spend a few days with COVID though. [[User:Kraaabs|- Kraaabs]] ([[User talk:Kraaabs|talk]]) 02:00, 7 November 2022 (UTC)&lt;/div&gt;</summary>
		<author><name>Kraaabs</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=Research_Stream_Summarys&amp;diff=707</id>
		<title>Research Stream Summarys</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=Research_Stream_Summarys&amp;diff=707"/>
		<updated>2023-01-12T15:39:58Z</updated>

		<summary type="html">&lt;p&gt;Kraaabs: Kraaabs moved page Research Stream Summarys to Research Stream Summaries: Cleaning page titles&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Research Stream Summaries]]&lt;/div&gt;</summary>
		<author><name>Kraaabs</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=Research_Stream_Summaries&amp;diff=706</id>
		<title>Research Stream Summaries</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=Research_Stream_Summaries&amp;diff=706"/>
		<updated>2023-01-12T15:39:58Z</updated>

		<summary type="html">&lt;p&gt;Kraaabs: Kraaabs moved page Research Stream Summarys to Research Stream Summaries: Cleaning page titles&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Projects]]&lt;br /&gt;
This documents the various research streams done, both past and present.&lt;br /&gt;
&lt;br /&gt;
== OS/2 Research Streams ==&lt;br /&gt;
These are the streams that specifically deal with documenting a specific part of OS/2&#039;s backstory, or in-depth review of a specific topic.&lt;br /&gt;
&lt;br /&gt;
=== What Was OS/2 Intended To Be ===&lt;br /&gt;
These streams will form the &amp;quot;What is OS/2&amp;quot; Realtime Video&lt;br /&gt;
&lt;br /&gt;
* Multiuser DOS 4 Exploration&lt;br /&gt;
* [[Early OS/2 Explorations|OS/2 1.0 Exploration]]&lt;br /&gt;
* Presentation Manager&lt;br /&gt;
&lt;br /&gt;
=== Researching Technical Aspects Of The System ===&lt;br /&gt;
* Did the 80286 Hamstring OS/2?&lt;br /&gt;
* OS/2 DOS Box Testing&lt;br /&gt;
* GDI vs. GPI&lt;br /&gt;
&lt;br /&gt;
== Old NCommander Streams ==&lt;br /&gt;
The following should probably be written up at some point&lt;br /&gt;
&lt;br /&gt;
* [[3D Movie Maker Compilation]]&lt;br /&gt;
* [[Amiga UNIX]]&lt;br /&gt;
* [[NT POSIX subsystem]]&lt;br /&gt;
* [[Network UNIX/ARPANET Research]]&lt;/div&gt;</summary>
		<author><name>Kraaabs</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=UsefulNeXTStepResearchNotes&amp;diff=705</id>
		<title>UsefulNeXTStepResearchNotes</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=UsefulNeXTStepResearchNotes&amp;diff=705"/>
		<updated>2023-01-12T15:39:38Z</updated>

		<summary type="html">&lt;p&gt;Kraaabs: Kraaabs moved page UsefulNeXTStepResearchNotes to Useful NeXTSTEP Research Notes: Cleaning page titles&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Useful NeXTSTEP Research Notes]]&lt;/div&gt;</summary>
		<author><name>Kraaabs</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=Useful_NeXTSTEP_Research_Notes&amp;diff=704</id>
		<title>Useful NeXTSTEP Research Notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=Useful_NeXTSTEP_Research_Notes&amp;diff=704"/>
		<updated>2023-01-12T15:39:38Z</updated>

		<summary type="html">&lt;p&gt;Kraaabs: Kraaabs moved page UsefulNeXTStepResearchNotes to Useful NeXTSTEP Research Notes: Cleaning page titles&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;vmlemon&#039;&#039;&#039; (&#039;&#039;Today at 7:33 PM&#039;&#039;)&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 2em; line-height: calc(100% * 1.25);&amp;quot;&amp;gt;&lt;br /&gt;
[[File:Screenshot 2022-12-29 at 3.33.34 AM.png|590px|none]]&lt;br /&gt;
&lt;br /&gt;
I never thought I&#039;d see that materialised&lt;br /&gt;
[[File:Screenshot 2022-12-29 at 3.34.18 AM.png|590px|none]]&lt;br /&gt;
&lt;br /&gt;
Would be cooler, if I could actually breathe life into this stuff, and see it work, though&lt;br /&gt;
&lt;br /&gt;
Feels kinda weird, seeing a GCC-based compiler, for Windows, engineered by NeXT, too&lt;br /&gt;
&lt;br /&gt;
And, for whatever reason, they&#039;ve nerfed the ability to get help for it, too&lt;br /&gt;
[[File:Screenshot 2022-12-29 at 3.39.06 AM.png|590px|none]]&lt;br /&gt;
&lt;br /&gt;
Interesting tuple, there&lt;br /&gt;
[[File:Screenshot 2022-12-29 at 3.39.29 AM.png|590px|none]]&lt;br /&gt;
&lt;br /&gt;
Feels really weird, seeing Windows-style paths, in a UNIX shell, and the tooling is pretty austere&lt;br /&gt;
[[File:Screenshot 2022-12-29 at 3.40.47 AM.png|590px|none]]&lt;br /&gt;
[[File:Screenshot 2022-12-29 at 3.41.07 AM.png|590px|none]]&lt;br /&gt;
[[File:Screenshot 2022-12-29 at 3.41.27 AM.png|590px|none]]&lt;br /&gt;
&lt;br /&gt;
CygWin&#039;s version of GDB? That&#039;s unexpected&lt;br /&gt;
[[File:Screenshot 2022-12-29 at 3.42.59 AM.png|590px|none]]&lt;br /&gt;
&lt;br /&gt;
That version of &amp;quot;df&amp;quot; seems kinda fucky, and cursed, too&lt;br /&gt;
[[File:Screenshot 2022-12-29 at 3.44.34 AM.png|627px|none]]&lt;br /&gt;
&lt;br /&gt;
Dunno why it reports negative values&lt;br /&gt;
&lt;br /&gt;
Seems to ship its own, private copies of PostScript fonts, too&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;suzuran&#039;&#039;&#039; (&#039;&#039;Today at 7:47 PM&#039;&#039;)&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 2em; line-height: calc(100% * 1.25);&amp;quot;&amp;gt;&lt;br /&gt;
Because you rolled over 2^31?&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;vmlemon&#039;&#039;&#039; (&#039;&#039;Today at 7:49 PM&#039;&#039;)&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 2em; line-height: calc(100% * 1.25);&amp;quot;&amp;gt;&lt;br /&gt;
Probably - it&#039;s a 3GB filesystem, though, so well under the limit, for this version of NT&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;suzuran&#039;&#039;&#039; (&#039;&#039;Today at 7:50 PM&#039;&#039;)&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 2em; line-height: calc(100% * 1.25);&amp;quot;&amp;gt;&lt;br /&gt;
Yeah, 2GB is the 2^31 line.&lt;br /&gt;
&lt;br /&gt;
but knowing gnu stuff, they just used &amp;quot;int&amp;quot; and not &amp;quot;unsigned int&amp;quot;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;vmlemon&#039;&#039;&#039; (&#039;&#039;Today at 7:50 PM&#039;&#039;)&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-left: 2em; line-height: calc(100% * 1.25);&amp;quot;&amp;gt;&lt;br /&gt;
That makes sense&lt;br /&gt;
&lt;br /&gt;
The whole thing feels kinda kitbashed together, from disparate parts, and not everything seems to have source available for it&lt;br /&gt;
&lt;br /&gt;
Managed to pull the &amp;quot;NeXT&amp;quot; directory out, from the Windows disk image, though, so I can have a better look at it&lt;br /&gt;
&lt;br /&gt;
Seems to have more GNU stuff in it, than BSD stuff, somehow&lt;br /&gt;
&lt;br /&gt;
And, the WindowServer seems to paint PostScript output onto GDI canvases/contexts&lt;br /&gt;
&lt;br /&gt;
The Mach emulation stuff superficially seems less complex, than I expected, too - mostly just threading, and NT MailSlot communication&lt;br /&gt;
&lt;br /&gt;
They don&#039;t seem to use that much actual Mach code, in the headers - there&#039;s only NeXT copyright headers, on that stuff, but they mention snippets being taken from CMU Mach&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kraaabs</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=Autumnbreeze&amp;diff=703</id>
		<title>Autumnbreeze</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=Autumnbreeze&amp;diff=703"/>
		<updated>2023-01-12T15:28:44Z</updated>

		<summary type="html">&lt;p&gt;Kraaabs: Kraaabs moved page Autumnbreeze to User:AutumnBreeze: incorrect namespace&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[User:AutumnBreeze]]&lt;/div&gt;</summary>
		<author><name>Kraaabs</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=User:AutumnBreeze&amp;diff=702</id>
		<title>User:AutumnBreeze</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=User:AutumnBreeze&amp;diff=702"/>
		<updated>2023-01-12T15:28:44Z</updated>

		<summary type="html">&lt;p&gt;Kraaabs: Kraaabs moved page Autumnbreeze to User:AutumnBreeze: incorrect namespace&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Kraaabs</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=Discord_Moderation_Guide&amp;diff=650</id>
		<title>Discord Moderation Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=Discord_Moderation_Guide&amp;diff=650"/>
		<updated>2023-01-08T21:26:30Z</updated>

		<summary type="html">&lt;p&gt;Kraaabs: /* Bans */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Discord]][[Category:Administration]]&lt;br /&gt;
DisNCord uses a large set of moderation tools, and guidelines to ease the burden of server administration. The intent is to make moderation quick and easy to review, while still being able to handle large scale raids and other server events are handled. At the moment, this document only covers the Discord server, but should probably be expanded in time to cover YouTube, Fediverse, and this wiki.&lt;br /&gt;
&lt;br /&gt;
== Workflow ==&lt;br /&gt;
&lt;br /&gt;
== Moderator Permissions ==&lt;br /&gt;
A quick rundown of who can do what is provided.&lt;br /&gt;
&lt;br /&gt;
=== Volunteers and Active Users ===&lt;br /&gt;
At the moment, volunteers are a click role in #role-select, and there&#039;s no tracking for activity on Discord. However, it&#039;s been considered allowing these roles access to the warning command due to how activity on the server continues to grow.&lt;br /&gt;
&lt;br /&gt;
=== Channel/Project Manager ===&lt;br /&gt;
&#039;&#039;&#039;Currently unused&#039;&#039;&#039;, but in the past DisNCord had Project Managers, which were single channel moderators or category moderators. As moderator demand grows, its expected that this will come back.&lt;br /&gt;
&lt;br /&gt;
=== Half-Ops ===&lt;br /&gt;
&#039;&#039;&#039;To Be Implemented:&#039;&#039;&#039; Half-ops are server moderators who have access to bot commands, but not the Discord built-in moderation commands.  &lt;br /&gt;
&lt;br /&gt;
=== Server Moderator (Resident Madfolks) ===&lt;br /&gt;
Server moderators hold up the rules and standards of DisNCord. They have access to the Discord moderation commands, and can pin and unpin messages as necessary, as well as access to all staff channels. Discord&#039;s built in moderation tools are not great for managing large servers, but are necessary for handling Raid Reporting, as handling message pins.&lt;br /&gt;
&lt;br /&gt;
Server Moderators may also delete individual messages from other users. Discord has a audit log, but in general, this should only done if a user refuses to, or after a disciplinary action is taken.&lt;br /&gt;
&lt;br /&gt;
=== Bot Wrangler ===&lt;br /&gt;
Due to bots have unique sets of permissions, a dedicated bot wrangler role exists. Due to how Discord handles permissions, the Bot Wrangler role has full access to the base moderator commands, but may not be a moderator in and of themselves. &#039;&#039;&#039;This role is currently unused.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Server Administrator ===&lt;br /&gt;
Server Administrators have the Manage Server permission and are the top rank in the Discord, meaning they can add and remove ranks from all others.&lt;br /&gt;
&lt;br /&gt;
=== Founder/Owner ===&lt;br /&gt;
This is NCommander, since they have the server crown.&lt;br /&gt;
&lt;br /&gt;
== Bots ==&lt;br /&gt;
To aid staff, and moderations, as well as improve the general user experience, multiple bots have been added to DisNCord; here&#039;s an overview, combined with how they interact with moderation.&lt;br /&gt;
&lt;br /&gt;
=== YAGPDB.yxz ===&lt;br /&gt;
&#039;&#039;&#039;Yet Another General Purpose Discord Bot&#039;&#039;&#039; or YAGPDB.yxz handles most of the basic moderation tasks on the server, as well as handling stream announcements, incident longing and more.&lt;br /&gt;
&lt;br /&gt;
At the moment, YAGPDB is responsible for the following&lt;br /&gt;
* Streaming Announcements&lt;br /&gt;
* Fun/Community items such as reputation, customs commands and more&lt;br /&gt;
* Warnings&lt;br /&gt;
* Flexible Timeouts/Mutes&lt;br /&gt;
* Kick/Ban logging, and Notification DMs&lt;br /&gt;
* Deleted Message logging&lt;br /&gt;
&lt;br /&gt;
While YAGPDB.yxz does offer a ticket system, its somewhat difficult to use, and requires bot commands, so we&#039;re not using it as such.&lt;br /&gt;
&lt;br /&gt;
=== Tickets ===&lt;br /&gt;
&lt;br /&gt;
=== SlashBot ===&lt;br /&gt;
SlashBot handles mostly role selection, and is used in #role-select. It will likely be used in the future for premium configuration options and more. It might be replaced in the future with a simpler bot, or with YAGPDB replacing it.&lt;br /&gt;
&lt;br /&gt;
=== PluralKit ===&lt;br /&gt;
&lt;br /&gt;
== Actions ==&lt;br /&gt;
Moderators on DisNCord can take various actions in regards to tickets and incidents. Actions, unless noted, should be done through either Tickets or YAGPDB as is necessary.&lt;br /&gt;
&lt;br /&gt;
=== Note ===&lt;br /&gt;
Sometimes a ticket comes in, or a borderline action is witnessed, that warrants an official comment from a moderator, but doesn&#039;t reach the point that an actual warning should be raised.&lt;br /&gt;
&lt;br /&gt;
In these cases, a ticket should be opened by the moderator, and pull in any relevant offending users. If a moderator is acting on another ticket, the reporter should not be pulled in. Exposing a reporter of an issue opens them up to retaliation; a moderator speaking in a ticket is speaking on behalf of the server. Any relevant conversation should be held, and then the moderator should close ticket should be closed with a comment explaining why no action was taken. The log will be saved.&lt;br /&gt;
&lt;br /&gt;
These actions represent &amp;quot;we talked to someone about X&amp;quot;, and will essentially be forgotten if the issue doesn&#039;t come up again. Moderators may request that a message be deleted in a note.&lt;br /&gt;
&lt;br /&gt;
=== Warnings ===&lt;br /&gt;
Warnings are when an infraction of the server rules, or a violation of general good conduct occurs such as disruptive behavior. Essentially, its telling a user to stop before a stronger moderator action is taken. Warnings may be given publicly or privately via YAGPDB. In either case, YAGPDB will notify the user by DM that the warning was given.&lt;br /&gt;
&lt;br /&gt;
Warnings are given with the YAGPDB warn command, which is a slash command.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/warn user:&amp;lt;user&amp;gt; reason:&amp;lt;the text that will show up in the warning log&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://docs.yagpdb.xyz/commands/all-commands Full syntax] is available on the YAGPDB documentation page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Warnings exist as an administrative function of the server, they do not have any penalty in and of themselves, but may influence further moderator decisions down the line. This is why warnings have to be documented. It&#039;s not uncommon that a user may need to have bad behavior corrected on more than one occasion. Documenting that warnings help the staff to understand where the rules need to be clarified, or be more stringent, as well as allowing for a way to handle disruptive behavior.&lt;br /&gt;
&lt;br /&gt;
Whomever files a warning must file a ticket that they have done so. In the ticket, they should include any relevant details on why they felt a warning was justified such as a chat link, YAGPDB.xyz log, or more. A warning may not necessarily cite a server rule. Citing the Discord TOS, or even a generalized reason such as inciting violence, are acceptable. In extreme cases, a warning may also be created if someone is considered at risk, and is requesting  intervention from a senior staff member, or NCommander themselves.&lt;br /&gt;
&lt;br /&gt;
If necessary, moderators can capture a log from the bot on behalf of another user.&lt;br /&gt;
&lt;br /&gt;
Warnings may be appealed by a user by submitting a ticket.&lt;br /&gt;
&lt;br /&gt;
=== Timeouts/Mutes ===&lt;br /&gt;
Muting a user means removing their ability to talk in all channels. Discord also offers a timeout feature, which does the same thing, but has very limited controls, and doesn&#039;t allow for exclusions. Once muted groups are properly setup, Discord&#039;s time-out feature should only be used if access to the ticket system needs to be silence (although then a ban may be warranted).&lt;br /&gt;
&lt;br /&gt;
Mutes are given with the YAGPDB warn command, which is a slash command.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Discord has a built-in /timeout command, make sure you use the right one!&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/timeout user:&amp;lt;user&amp;gt; reason:&amp;lt;the text that will show up in the warning log&amp;gt; duration:&amp;lt;how long&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://docs.yagpdb.xyz/commands/all-commands Full syntax] is available on the YAGPDB documentation page.&lt;br /&gt;
&lt;br /&gt;
Timeouts represent the lowest level of mod action available, and can be for a few minutes to a few days, and essentially allows for someone to break up a conversation, or to drive through that an action is unacceptable in chat. Short duration timeouts (as in a few minutes to an hour) do not need to be justified; moderators are assumed to be responsible enough to use these as is. However, a timeout reason must be given via bot which will be delivered by DM to the user who was timed out, and reported in the #enforcement-action log.&lt;br /&gt;
&lt;br /&gt;
Long duration timeouts (a few hours to a few days) must be documented via a ticket, and a warning should also be applied. As with warnings, the moderator should open a ticket, provide any relevant documentation, and have another mod look it and close it.&lt;br /&gt;
&lt;br /&gt;
Mutes may be appealed. The muted role can still open tickets, and they have visibility on a special channel that shows that they have been muted. Like with warnings, moderators should remember that their ticket with original reasons may be referenced or even forwarded.&lt;br /&gt;
&lt;br /&gt;
=== Kicks ===&lt;br /&gt;
DisNCord is a public server, so by its notion, kicking doesn&#039;t seem like it would accomplish much. However, a server kick removes all rules, and restores the mint &amp;quot;new user&amp;quot; icon that comes with it. It also requires the user go get the invite link again which represents efforts. In time, we may also add active and other ranks that are granted, which would cause a kick to reset.&lt;br /&gt;
&lt;br /&gt;
Kicks should be done YAGPDB kick command, which is a slash command.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Discord (and Slashbot) has a built-in /kick command, make sure you use the right one!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/Kick &amp;lt;User:Mention/ID&amp;gt; [Reason:Text]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kicking should be used as a last resort to bans. Like warnings and mutes, kicks should be done through the bot and documented the same.&lt;br /&gt;
&lt;br /&gt;
Kicks, by their nature, can&#039;t be appealed; you just need to rejoin the server, and any new user filtering such as rules review must be redone. It also resets the join date.&lt;br /&gt;
&lt;br /&gt;
A user may request to be re-added to any lost roles by filing a ticket, to be granted at the discretion of another moderator who wasn&#039;t involved with the original decision.&lt;br /&gt;
&lt;br /&gt;
=== Bans ===&lt;br /&gt;
Bans are the highest level of action a moderator can take, and can extend past Discord and include things like a wiki account, Patreon access or more, depending on severity. Bans are also used as a method to combat raids, and with combined with the Discord security level, provides key tools in keeping the server usable in times of strife and more.&lt;br /&gt;
&lt;br /&gt;
Bans are classified into anti-spam, and as a punishment for rules violations. Bans may be time limited, or may be permanent.&lt;br /&gt;
&lt;br /&gt;
Ban should be done YAGPDB ban command, which is a slash command.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Discord (and Slashbot) has a built-in /ban command, make sure you use the right one!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/ban &amp;lt;User:Mention/ID&amp;gt; &amp;lt;Reason:why was the ban needed&amp;gt; &amp;lt;duration&amp;gt; &amp;lt;ddays: how many messages to delete&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Server moderators may use the Discord ban function if message deletion is needed to combat spam attacks due to it being easier to use than YAGPDB.xyz slash commands. The audit log must be filled out, and a note must be left in enforcement action that it was used.&lt;br /&gt;
&lt;br /&gt;
=== A Note On Message Deletion ===&lt;/div&gt;</summary>
		<author><name>Kraaabs</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=Discord_Moderation_Guide&amp;diff=649</id>
		<title>Discord Moderation Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=Discord_Moderation_Guide&amp;diff=649"/>
		<updated>2023-01-08T21:26:04Z</updated>

		<summary type="html">&lt;p&gt;Kraaabs: /* Bans */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Discord]][[Category:Administration]]&lt;br /&gt;
DisNCord uses a large set of moderation tools, and guidelines to ease the burden of server administration. The intent is to make moderation quick and easy to review, while still being able to handle large scale raids and other server events are handled. At the moment, this document only covers the Discord server, but should probably be expanded in time to cover YouTube, Fediverse, and this wiki.&lt;br /&gt;
&lt;br /&gt;
== Workflow ==&lt;br /&gt;
&lt;br /&gt;
== Moderator Permissions ==&lt;br /&gt;
A quick rundown of who can do what is provided.&lt;br /&gt;
&lt;br /&gt;
=== Volunteers and Active Users ===&lt;br /&gt;
At the moment, volunteers are a click role in #role-select, and there&#039;s no tracking for activity on Discord. However, it&#039;s been considered allowing these roles access to the warning command due to how activity on the server continues to grow.&lt;br /&gt;
&lt;br /&gt;
=== Channel/Project Manager ===&lt;br /&gt;
&#039;&#039;&#039;Currently unused&#039;&#039;&#039;, but in the past DisNCord had Project Managers, which were single channel moderators or category moderators. As moderator demand grows, its expected that this will come back.&lt;br /&gt;
&lt;br /&gt;
=== Half-Ops ===&lt;br /&gt;
&#039;&#039;&#039;To Be Implemented:&#039;&#039;&#039; Half-ops are server moderators who have access to bot commands, but not the Discord built-in moderation commands.  &lt;br /&gt;
&lt;br /&gt;
=== Server Moderator (Resident Madfolks) ===&lt;br /&gt;
Server moderators hold up the rules and standards of DisNCord. They have access to the Discord moderation commands, and can pin and unpin messages as necessary, as well as access to all staff channels. Discord&#039;s built in moderation tools are not great for managing large servers, but are necessary for handling Raid Reporting, as handling message pins.&lt;br /&gt;
&lt;br /&gt;
Server Moderators may also delete individual messages from other users. Discord has a audit log, but in general, this should only done if a user refuses to, or after a disciplinary action is taken.&lt;br /&gt;
&lt;br /&gt;
=== Bot Wrangler ===&lt;br /&gt;
Due to bots have unique sets of permissions, a dedicated bot wrangler role exists. Due to how Discord handles permissions, the Bot Wrangler role has full access to the base moderator commands, but may not be a moderator in and of themselves. &#039;&#039;&#039;This role is currently unused.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Server Administrator ===&lt;br /&gt;
Server Administrators have the Manage Server permission and are the top rank in the Discord, meaning they can add and remove ranks from all others.&lt;br /&gt;
&lt;br /&gt;
=== Founder/Owner ===&lt;br /&gt;
This is NCommander, since they have the server crown.&lt;br /&gt;
&lt;br /&gt;
== Bots ==&lt;br /&gt;
To aid staff, and moderations, as well as improve the general user experience, multiple bots have been added to DisNCord; here&#039;s an overview, combined with how they interact with moderation.&lt;br /&gt;
&lt;br /&gt;
=== YAGPDB.yxz ===&lt;br /&gt;
&#039;&#039;&#039;Yet Another General Purpose Discord Bot&#039;&#039;&#039; or YAGPDB.yxz handles most of the basic moderation tasks on the server, as well as handling stream announcements, incident longing and more.&lt;br /&gt;
&lt;br /&gt;
At the moment, YAGPDB is responsible for the following&lt;br /&gt;
* Streaming Announcements&lt;br /&gt;
* Fun/Community items such as reputation, customs commands and more&lt;br /&gt;
* Warnings&lt;br /&gt;
* Flexible Timeouts/Mutes&lt;br /&gt;
* Kick/Ban logging, and Notification DMs&lt;br /&gt;
* Deleted Message logging&lt;br /&gt;
&lt;br /&gt;
While YAGPDB.yxz does offer a ticket system, its somewhat difficult to use, and requires bot commands, so we&#039;re not using it as such.&lt;br /&gt;
&lt;br /&gt;
=== Tickets ===&lt;br /&gt;
&lt;br /&gt;
=== SlashBot ===&lt;br /&gt;
SlashBot handles mostly role selection, and is used in #role-select. It will likely be used in the future for premium configuration options and more. It might be replaced in the future with a simpler bot, or with YAGPDB replacing it.&lt;br /&gt;
&lt;br /&gt;
=== PluralKit ===&lt;br /&gt;
&lt;br /&gt;
== Actions ==&lt;br /&gt;
Moderators on DisNCord can take various actions in regards to tickets and incidents. Actions, unless noted, should be done through either Tickets or YAGPDB as is necessary.&lt;br /&gt;
&lt;br /&gt;
=== Note ===&lt;br /&gt;
Sometimes a ticket comes in, or a borderline action is witnessed, that warrants an official comment from a moderator, but doesn&#039;t reach the point that an actual warning should be raised.&lt;br /&gt;
&lt;br /&gt;
In these cases, a ticket should be opened by the moderator, and pull in any relevant offending users. If a moderator is acting on another ticket, the reporter should not be pulled in. Exposing a reporter of an issue opens them up to retaliation; a moderator speaking in a ticket is speaking on behalf of the server. Any relevant conversation should be held, and then the moderator should close ticket should be closed with a comment explaining why no action was taken. The log will be saved.&lt;br /&gt;
&lt;br /&gt;
These actions represent &amp;quot;we talked to someone about X&amp;quot;, and will essentially be forgotten if the issue doesn&#039;t come up again. Moderators may request that a message be deleted in a note.&lt;br /&gt;
&lt;br /&gt;
=== Warnings ===&lt;br /&gt;
Warnings are when an infraction of the server rules, or a violation of general good conduct occurs such as disruptive behavior. Essentially, its telling a user to stop before a stronger moderator action is taken. Warnings may be given publicly or privately via YAGPDB. In either case, YAGPDB will notify the user by DM that the warning was given.&lt;br /&gt;
&lt;br /&gt;
Warnings are given with the YAGPDB warn command, which is a slash command.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/warn user:&amp;lt;user&amp;gt; reason:&amp;lt;the text that will show up in the warning log&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://docs.yagpdb.xyz/commands/all-commands Full syntax] is available on the YAGPDB documentation page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Warnings exist as an administrative function of the server, they do not have any penalty in and of themselves, but may influence further moderator decisions down the line. This is why warnings have to be documented. It&#039;s not uncommon that a user may need to have bad behavior corrected on more than one occasion. Documenting that warnings help the staff to understand where the rules need to be clarified, or be more stringent, as well as allowing for a way to handle disruptive behavior.&lt;br /&gt;
&lt;br /&gt;
Whomever files a warning must file a ticket that they have done so. In the ticket, they should include any relevant details on why they felt a warning was justified such as a chat link, YAGPDB.xyz log, or more. A warning may not necessarily cite a server rule. Citing the Discord TOS, or even a generalized reason such as inciting violence, are acceptable. In extreme cases, a warning may also be created if someone is considered at risk, and is requesting  intervention from a senior staff member, or NCommander themselves.&lt;br /&gt;
&lt;br /&gt;
If necessary, moderators can capture a log from the bot on behalf of another user.&lt;br /&gt;
&lt;br /&gt;
Warnings may be appealed by a user by submitting a ticket.&lt;br /&gt;
&lt;br /&gt;
=== Timeouts/Mutes ===&lt;br /&gt;
Muting a user means removing their ability to talk in all channels. Discord also offers a timeout feature, which does the same thing, but has very limited controls, and doesn&#039;t allow for exclusions. Once muted groups are properly setup, Discord&#039;s time-out feature should only be used if access to the ticket system needs to be silence (although then a ban may be warranted).&lt;br /&gt;
&lt;br /&gt;
Mutes are given with the YAGPDB warn command, which is a slash command.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Discord has a built-in /timeout command, make sure you use the right one!&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/timeout user:&amp;lt;user&amp;gt; reason:&amp;lt;the text that will show up in the warning log&amp;gt; duration:&amp;lt;how long&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://docs.yagpdb.xyz/commands/all-commands Full syntax] is available on the YAGPDB documentation page.&lt;br /&gt;
&lt;br /&gt;
Timeouts represent the lowest level of mod action available, and can be for a few minutes to a few days, and essentially allows for someone to break up a conversation, or to drive through that an action is unacceptable in chat. Short duration timeouts (as in a few minutes to an hour) do not need to be justified; moderators are assumed to be responsible enough to use these as is. However, a timeout reason must be given via bot which will be delivered by DM to the user who was timed out, and reported in the #enforcement-action log.&lt;br /&gt;
&lt;br /&gt;
Long duration timeouts (a few hours to a few days) must be documented via a ticket, and a warning should also be applied. As with warnings, the moderator should open a ticket, provide any relevant documentation, and have another mod look it and close it.&lt;br /&gt;
&lt;br /&gt;
Mutes may be appealed. The muted role can still open tickets, and they have visibility on a special channel that shows that they have been muted. Like with warnings, moderators should remember that their ticket with original reasons may be referenced or even forwarded.&lt;br /&gt;
&lt;br /&gt;
=== Kicks ===&lt;br /&gt;
DisNCord is a public server, so by its notion, kicking doesn&#039;t seem like it would accomplish much. However, a server kick removes all rules, and restores the mint &amp;quot;new user&amp;quot; icon that comes with it. It also requires the user go get the invite link again which represents efforts. In time, we may also add active and other ranks that are granted, which would cause a kick to reset.&lt;br /&gt;
&lt;br /&gt;
Kicks should be done YAGPDB kick command, which is a slash command.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Discord (and Slashbot) has a built-in /kick command, make sure you use the right one!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/Kick &amp;lt;User:Mention/ID&amp;gt; [Reason:Text]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kicking should be used as a last resort to bans. Like warnings and mutes, kicks should be done through the bot and documented the same.&lt;br /&gt;
&lt;br /&gt;
Kicks, by their nature, can&#039;t be appealed; you just need to rejoin the server, and any new user filtering such as rules review must be redone. It also resets the join date.&lt;br /&gt;
&lt;br /&gt;
A user may request to be re-added to any lost roles by filing a ticket, to be granted at the discretion of another moderator who wasn&#039;t involved with the original decision.&lt;br /&gt;
&lt;br /&gt;
=== Bans ===&lt;br /&gt;
Bans are the highest level of action a moderator can take, and can extend past Discord and include things like a wiki account, Patreon access or more, depending on severity. Bans are also used as a method to combat raids, and with combined with the Discord security level, provides key tools in keeping the server usable in times of strife and more.&lt;br /&gt;
&lt;br /&gt;
Bans are classified into anti-spam, and as a punishment for rules violations. Bans may be time limited, or may be permamement.&lt;br /&gt;
&lt;br /&gt;
Ban should be done YAGPDB ban command, which is a slash command.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Discord (and Slashbot) has a built-in /ban command, make sure you use the right one!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/ban &amp;lt;User:Mention/ID&amp;gt; &amp;lt;Reason:why was the ban needed&amp;gt; &amp;lt;duration&amp;gt; &amp;lt;ddays: how many messages to delete&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Server moderators may use the Discord ban function if message deletion is needed to combat spam attacks due to it being easier to use than YAGPDB.xyz slash commands. The audit log must be filled out, and a note must be left in enforcement action that it was used.&lt;br /&gt;
&lt;br /&gt;
=== A Note On Message Deletion ===&lt;/div&gt;</summary>
		<author><name>Kraaabs</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=Discord_Moderation_Guide&amp;diff=648</id>
		<title>Discord Moderation Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=Discord_Moderation_Guide&amp;diff=648"/>
		<updated>2023-01-08T21:25:35Z</updated>

		<summary type="html">&lt;p&gt;Kraaabs: /* Warnings */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Discord]][[Category:Administration]]&lt;br /&gt;
DisNCord uses a large set of moderation tools, and guidelines to ease the burden of server administration. The intent is to make moderation quick and easy to review, while still being able to handle large scale raids and other server events are handled. At the moment, this document only covers the Discord server, but should probably be expanded in time to cover YouTube, Fediverse, and this wiki.&lt;br /&gt;
&lt;br /&gt;
== Workflow ==&lt;br /&gt;
&lt;br /&gt;
== Moderator Permissions ==&lt;br /&gt;
A quick rundown of who can do what is provided.&lt;br /&gt;
&lt;br /&gt;
=== Volunteers and Active Users ===&lt;br /&gt;
At the moment, volunteers are a click role in #role-select, and there&#039;s no tracking for activity on Discord. However, it&#039;s been considered allowing these roles access to the warning command due to how activity on the server continues to grow.&lt;br /&gt;
&lt;br /&gt;
=== Channel/Project Manager ===&lt;br /&gt;
&#039;&#039;&#039;Currently unused&#039;&#039;&#039;, but in the past DisNCord had Project Managers, which were single channel moderators or category moderators. As moderator demand grows, its expected that this will come back.&lt;br /&gt;
&lt;br /&gt;
=== Half-Ops ===&lt;br /&gt;
&#039;&#039;&#039;To Be Implemented:&#039;&#039;&#039; Half-ops are server moderators who have access to bot commands, but not the Discord built-in moderation commands.  &lt;br /&gt;
&lt;br /&gt;
=== Server Moderator (Resident Madfolks) ===&lt;br /&gt;
Server moderators hold up the rules and standards of DisNCord. They have access to the Discord moderation commands, and can pin and unpin messages as necessary, as well as access to all staff channels. Discord&#039;s built in moderation tools are not great for managing large servers, but are necessary for handling Raid Reporting, as handling message pins.&lt;br /&gt;
&lt;br /&gt;
Server Moderators may also delete individual messages from other users. Discord has a audit log, but in general, this should only done if a user refuses to, or after a disciplinary action is taken.&lt;br /&gt;
&lt;br /&gt;
=== Bot Wrangler ===&lt;br /&gt;
Due to bots have unique sets of permissions, a dedicated bot wrangler role exists. Due to how Discord handles permissions, the Bot Wrangler role has full access to the base moderator commands, but may not be a moderator in and of themselves. &#039;&#039;&#039;This role is currently unused.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Server Administrator ===&lt;br /&gt;
Server Administrators have the Manage Server permission and are the top rank in the Discord, meaning they can add and remove ranks from all others.&lt;br /&gt;
&lt;br /&gt;
=== Founder/Owner ===&lt;br /&gt;
This is NCommander, since they have the server crown.&lt;br /&gt;
&lt;br /&gt;
== Bots ==&lt;br /&gt;
To aid staff, and moderations, as well as improve the general user experience, multiple bots have been added to DisNCord; here&#039;s an overview, combined with how they interact with moderation.&lt;br /&gt;
&lt;br /&gt;
=== YAGPDB.yxz ===&lt;br /&gt;
&#039;&#039;&#039;Yet Another General Purpose Discord Bot&#039;&#039;&#039; or YAGPDB.yxz handles most of the basic moderation tasks on the server, as well as handling stream announcements, incident longing and more.&lt;br /&gt;
&lt;br /&gt;
At the moment, YAGPDB is responsible for the following&lt;br /&gt;
* Streaming Announcements&lt;br /&gt;
* Fun/Community items such as reputation, customs commands and more&lt;br /&gt;
* Warnings&lt;br /&gt;
* Flexible Timeouts/Mutes&lt;br /&gt;
* Kick/Ban logging, and Notification DMs&lt;br /&gt;
* Deleted Message logging&lt;br /&gt;
&lt;br /&gt;
While YAGPDB.yxz does offer a ticket system, its somewhat difficult to use, and requires bot commands, so we&#039;re not using it as such.&lt;br /&gt;
&lt;br /&gt;
=== Tickets ===&lt;br /&gt;
&lt;br /&gt;
=== SlashBot ===&lt;br /&gt;
SlashBot handles mostly role selection, and is used in #role-select. It will likely be used in the future for premium configuration options and more. It might be replaced in the future with a simpler bot, or with YAGPDB replacing it.&lt;br /&gt;
&lt;br /&gt;
=== PluralKit ===&lt;br /&gt;
&lt;br /&gt;
== Actions ==&lt;br /&gt;
Moderators on DisNCord can take various actions in regards to tickets and incidents. Actions, unless noted, should be done through either Tickets or YAGPDB as is necessary.&lt;br /&gt;
&lt;br /&gt;
=== Note ===&lt;br /&gt;
Sometimes a ticket comes in, or a borderline action is witnessed, that warrants an official comment from a moderator, but doesn&#039;t reach the point that an actual warning should be raised.&lt;br /&gt;
&lt;br /&gt;
In these cases, a ticket should be opened by the moderator, and pull in any relevant offending users. If a moderator is acting on another ticket, the reporter should not be pulled in. Exposing a reporter of an issue opens them up to retaliation; a moderator speaking in a ticket is speaking on behalf of the server. Any relevant conversation should be held, and then the moderator should close ticket should be closed with a comment explaining why no action was taken. The log will be saved.&lt;br /&gt;
&lt;br /&gt;
These actions represent &amp;quot;we talked to someone about X&amp;quot;, and will essentially be forgotten if the issue doesn&#039;t come up again. Moderators may request that a message be deleted in a note.&lt;br /&gt;
&lt;br /&gt;
=== Warnings ===&lt;br /&gt;
Warnings are when an infraction of the server rules, or a violation of general good conduct occurs such as disruptive behavior. Essentially, its telling a user to stop before a stronger moderator action is taken. Warnings may be given publicly or privately via YAGPDB. In either case, YAGPDB will notify the user by DM that the warning was given.&lt;br /&gt;
&lt;br /&gt;
Warnings are given with the YAGPDB warn command, which is a slash command.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/warn user:&amp;lt;user&amp;gt; reason:&amp;lt;the text that will show up in the warning log&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://docs.yagpdb.xyz/commands/all-commands Full syntax] is available on the YAGPDB documentation page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Warnings exist as an administrative function of the server, they do not have any penalty in and of themselves, but may influence further moderator decisions down the line. This is why warnings have to be documented. It&#039;s not uncommon that a user may need to have bad behavior corrected on more than one occasion. Documenting that warnings help the staff to understand where the rules need to be clarified, or be more stringent, as well as allowing for a way to handle disruptive behavior.&lt;br /&gt;
&lt;br /&gt;
Whomever files a warning must file a ticket that they have done so. In the ticket, they should include any relevant details on why they felt a warning was justified such as a chat link, YAGPDB.xyz log, or more. A warning may not necessarily cite a server rule. Citing the Discord TOS, or even a generalized reason such as inciting violence, are acceptable. In extreme cases, a warning may also be created if someone is considered at risk, and is requesting  intervention from a senior staff member, or NCommander themselves.&lt;br /&gt;
&lt;br /&gt;
If necessary, moderators can capture a log from the bot on behalf of another user.&lt;br /&gt;
&lt;br /&gt;
Warnings may be appealed by a user by submitting a ticket.&lt;br /&gt;
&lt;br /&gt;
=== Timeouts/Mutes ===&lt;br /&gt;
Muting a user means removing their ability to talk in all channels. Discord also offers a timeout feature, which does the same thing, but has very limited controls, and doesn&#039;t allow for exclusions. Once muted groups are properly setup, Discord&#039;s time-out feature should only be used if access to the ticket system needs to be silence (although then a ban may be warranted).&lt;br /&gt;
&lt;br /&gt;
Mutes are given with the YAGPDB warn command, which is a slash command.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Discord has a built-in /timeout command, make sure you use the right one!&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/timeout user:&amp;lt;user&amp;gt; reason:&amp;lt;the text that will show up in the warning log&amp;gt; duration:&amp;lt;how long&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://docs.yagpdb.xyz/commands/all-commands Full syntax] is available on the YAGPDB documentation page.&lt;br /&gt;
&lt;br /&gt;
Timeouts represent the lowest level of mod action available, and can be for a few minutes to a few days, and essentially allows for someone to break up a conversation, or to drive through that an action is unacceptable in chat. Short duration timeouts (as in a few minutes to an hour) do not need to be justified; moderators are assumed to be responsible enough to use these as is. However, a timeout reason must be given via bot which will be delivered by DM to the user who was timed out, and reported in the #enforcement-action log.&lt;br /&gt;
&lt;br /&gt;
Long duration timeouts (a few hours to a few days) must be documented via a ticket, and a warning should also be applied. As with warnings, the moderator should open a ticket, provide any relevant documentation, and have another mod look it and close it.&lt;br /&gt;
&lt;br /&gt;
Mutes may be appealed. The muted role can still open tickets, and they have visibility on a special channel that shows that they have been muted. Like with warnings, moderators should remember that their ticket with original reasons may be referenced or even forwarded.&lt;br /&gt;
&lt;br /&gt;
=== Kicks ===&lt;br /&gt;
DisNCord is a public server, so by its notion, kicking doesn&#039;t seem like it would accomplish much. However, a server kick removes all rules, and restores the mint &amp;quot;new user&amp;quot; icon that comes with it. It also requires the user go get the invite link again which represents efforts. In time, we may also add active and other ranks that are granted, which would cause a kick to reset.&lt;br /&gt;
&lt;br /&gt;
Kicks should be done YAGPDB kick command, which is a slash command.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Discord (and Slashbot) has a built-in /kick command, make sure you use the right one!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/Kick &amp;lt;User:Mention/ID&amp;gt; [Reason:Text]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kicking should be used as a last resort to bans. Like warnings and mutes, kicks should be done through the bot and documented the same.&lt;br /&gt;
&lt;br /&gt;
Kicks, by their nature, can&#039;t be appealed; you just need to rejoin the server, and any new user filtering such as rules review must be redone. It also resets the join date.&lt;br /&gt;
&lt;br /&gt;
A user may request to be re-added to any lost roles by filing a ticket, to be granted at the discretion of another moderator who wasn&#039;t involved with the original decision.&lt;br /&gt;
&lt;br /&gt;
=== Bans ===&lt;br /&gt;
Bans are the highest level of action a moderator can take, and can extend past Discord and include things like a wiki account, Patreon access or more, depending on severity. Bans are also used as a method to combat raids, and with combined with the Discord security level, provides key tools in keeping the server usable in times of strife and more.&lt;br /&gt;
&lt;br /&gt;
Bans are classified into anti-spam, and as a punishment for rules violations. Bans may be time limited, or may be permamement.&lt;br /&gt;
&lt;br /&gt;
Ban should be done YAGPDB ban command, which is a slash command.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Discord (and Slashbot) has a built-in /ban command, make sure you use the right one!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/ban &amp;lt;User:Mention/ID&amp;gt; &amp;lt;Reason:why was the ban needed&amp;gt; &amp;lt;duration&amp;gt; &amp;lt;ddays: how many messages to delete&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Server moderators may use the Discord ban function if message deletion is needed to combat spam attacks due to it being easier to use than YAGPDB.zxy slash commands. The audit log must be filled out, and a note must be left in enforcement action that it was used.&lt;br /&gt;
=== A Note On Message Deletion ===&lt;/div&gt;</summary>
		<author><name>Kraaabs</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=Discord_Moderation_Guide&amp;diff=647</id>
		<title>Discord Moderation Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=Discord_Moderation_Guide&amp;diff=647"/>
		<updated>2023-01-08T21:25:15Z</updated>

		<summary type="html">&lt;p&gt;Kraaabs: /* Server Administrator */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Discord]][[Category:Administration]]&lt;br /&gt;
DisNCord uses a large set of moderation tools, and guidelines to ease the burden of server administration. The intent is to make moderation quick and easy to review, while still being able to handle large scale raids and other server events are handled. At the moment, this document only covers the Discord server, but should probably be expanded in time to cover YouTube, Fediverse, and this wiki.&lt;br /&gt;
&lt;br /&gt;
== Workflow ==&lt;br /&gt;
&lt;br /&gt;
== Moderator Permissions ==&lt;br /&gt;
A quick rundown of who can do what is provided.&lt;br /&gt;
&lt;br /&gt;
=== Volunteers and Active Users ===&lt;br /&gt;
At the moment, volunteers are a click role in #role-select, and there&#039;s no tracking for activity on Discord. However, it&#039;s been considered allowing these roles access to the warning command due to how activity on the server continues to grow.&lt;br /&gt;
&lt;br /&gt;
=== Channel/Project Manager ===&lt;br /&gt;
&#039;&#039;&#039;Currently unused&#039;&#039;&#039;, but in the past DisNCord had Project Managers, which were single channel moderators or category moderators. As moderator demand grows, its expected that this will come back.&lt;br /&gt;
&lt;br /&gt;
=== Half-Ops ===&lt;br /&gt;
&#039;&#039;&#039;To Be Implemented:&#039;&#039;&#039; Half-ops are server moderators who have access to bot commands, but not the Discord built-in moderation commands.  &lt;br /&gt;
&lt;br /&gt;
=== Server Moderator (Resident Madfolks) ===&lt;br /&gt;
Server moderators hold up the rules and standards of DisNCord. They have access to the Discord moderation commands, and can pin and unpin messages as necessary, as well as access to all staff channels. Discord&#039;s built in moderation tools are not great for managing large servers, but are necessary for handling Raid Reporting, as handling message pins.&lt;br /&gt;
&lt;br /&gt;
Server Moderators may also delete individual messages from other users. Discord has a audit log, but in general, this should only done if a user refuses to, or after a disciplinary action is taken.&lt;br /&gt;
&lt;br /&gt;
=== Bot Wrangler ===&lt;br /&gt;
Due to bots have unique sets of permissions, a dedicated bot wrangler role exists. Due to how Discord handles permissions, the Bot Wrangler role has full access to the base moderator commands, but may not be a moderator in and of themselves. &#039;&#039;&#039;This role is currently unused.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Server Administrator ===&lt;br /&gt;
Server Administrators have the Manage Server permission and are the top rank in the Discord, meaning they can add and remove ranks from all others.&lt;br /&gt;
&lt;br /&gt;
=== Founder/Owner ===&lt;br /&gt;
This is NCommander, since they have the server crown.&lt;br /&gt;
&lt;br /&gt;
== Bots ==&lt;br /&gt;
To aid staff, and moderations, as well as improve the general user experience, multiple bots have been added to DisNCord; here&#039;s an overview, combined with how they interact with moderation.&lt;br /&gt;
&lt;br /&gt;
=== YAGPDB.yxz ===&lt;br /&gt;
&#039;&#039;&#039;Yet Another General Purpose Discord Bot&#039;&#039;&#039; or YAGPDB.yxz handles most of the basic moderation tasks on the server, as well as handling stream announcements, incident longing and more.&lt;br /&gt;
&lt;br /&gt;
At the moment, YAGPDB is responsible for the following&lt;br /&gt;
* Streaming Announcements&lt;br /&gt;
* Fun/Community items such as reputation, customs commands and more&lt;br /&gt;
* Warnings&lt;br /&gt;
* Flexible Timeouts/Mutes&lt;br /&gt;
* Kick/Ban logging, and Notification DMs&lt;br /&gt;
* Deleted Message logging&lt;br /&gt;
&lt;br /&gt;
While YAGPDB.yxz does offer a ticket system, its somewhat difficult to use, and requires bot commands, so we&#039;re not using it as such.&lt;br /&gt;
&lt;br /&gt;
=== Tickets ===&lt;br /&gt;
&lt;br /&gt;
=== SlashBot ===&lt;br /&gt;
SlashBot handles mostly role selection, and is used in #role-select. It will likely be used in the future for premium configuration options and more. It might be replaced in the future with a simpler bot, or with YAGPDB replacing it.&lt;br /&gt;
&lt;br /&gt;
=== PluralKit ===&lt;br /&gt;
&lt;br /&gt;
== Actions ==&lt;br /&gt;
Moderators on DisNCord can take various actions in regards to tickets and incidents. Actions, unless noted, should be done through either Tickets or YAGPDB as is necessary.&lt;br /&gt;
&lt;br /&gt;
=== Note ===&lt;br /&gt;
Sometimes a ticket comes in, or a borderline action is witnessed, that warrants an official comment from a moderator, but doesn&#039;t reach the point that an actual warning should be raised.&lt;br /&gt;
&lt;br /&gt;
In these cases, a ticket should be opened by the moderator, and pull in any relevant offending users. If a moderator is acting on another ticket, the reporter should not be pulled in. Exposing a reporter of an issue opens them up to retaliation; a moderator speaking in a ticket is speaking on behalf of the server. Any relevant conversation should be held, and then the moderator should close ticket should be closed with a comment explaining why no action was taken. The log will be saved.&lt;br /&gt;
&lt;br /&gt;
These actions represent &amp;quot;we talked to someone about X&amp;quot;, and will essentially be forgotten if the issue doesn&#039;t come up again. Moderators may request that a message be deleted in a note.&lt;br /&gt;
&lt;br /&gt;
=== Warnings ===&lt;br /&gt;
Warnings are when an infraction of the server rules, or a violation of general good conduct occurs such as disruptive behavior. Essentially, its telling a user to stop before a stronger moderator action is taken. Warnings may be given publicly or privately via YAGPDB. In either case, YAGPDB will notify the user by DM that the warning was given.&lt;br /&gt;
&lt;br /&gt;
Warnings are given with the YAGPDB warn command, which is a slash command.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/warn user:&amp;lt;user&amp;gt; reason:&amp;lt;the text that will show up in the warning log&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://docs.yagpdb.xyz/commands/all-commands Full syntax] is available on the YAGPDB documentation page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Warnings exist as an administrative function of the server, they do not have any penalty in and of themselves, but may influence further moderator decisions down the line. This is why warnings have to be documented. It&#039;s not uncommon that a user may need to have bad behavior corrected on more than one occasion. Documenting that warnings help the staff to understand where the rules need to be clarified, or be more stringent, as well as allowing for a way to handle disruptive behavior.&lt;br /&gt;
&lt;br /&gt;
Whomever files a warning must file a ticket that they have done so. In the ticket, they should include any relevant details on why they felt a warning was justified such as a chat link, YAGDB.zxy log, or more. A warning may not necessarily cite a server rule. Citing the Discord TOS, or even a generalized reason such as inciting violence, are acceptable. In extreme cases, a warning may also be created if someone is considered at risk, and is requesting  intervention from a senior staff member, or NCommander themselves.&lt;br /&gt;
&lt;br /&gt;
If necessary, moderators can capture a log from the bot on behalf of another user.&lt;br /&gt;
&lt;br /&gt;
Warnings may be appealed by a user by submitting a ticket.&lt;br /&gt;
&lt;br /&gt;
=== Timeouts/Mutes ===&lt;br /&gt;
Muting a user means removing their ability to talk in all channels. Discord also offers a timeout feature, which does the same thing, but has very limited controls, and doesn&#039;t allow for exclusions. Once muted groups are properly setup, Discord&#039;s time-out feature should only be used if access to the ticket system needs to be silence (although then a ban may be warranted).&lt;br /&gt;
&lt;br /&gt;
Mutes are given with the YAGPDB warn command, which is a slash command.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Discord has a built-in /timeout command, make sure you use the right one!&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/timeout user:&amp;lt;user&amp;gt; reason:&amp;lt;the text that will show up in the warning log&amp;gt; duration:&amp;lt;how long&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://docs.yagpdb.xyz/commands/all-commands Full syntax] is available on the YAGPDB documentation page.&lt;br /&gt;
&lt;br /&gt;
Timeouts represent the lowest level of mod action available, and can be for a few minutes to a few days, and essentially allows for someone to break up a conversation, or to drive through that an action is unacceptable in chat. Short duration timeouts (as in a few minutes to an hour) do not need to be justified; moderators are assumed to be responsible enough to use these as is. However, a timeout reason must be given via bot which will be delivered by DM to the user who was timed out, and reported in the #enforcement-action log.&lt;br /&gt;
&lt;br /&gt;
Long duration timeouts (a few hours to a few days) must be documented via a ticket, and a warning should also be applied. As with warnings, the moderator should open a ticket, provide any relevant documentation, and have another mod look it and close it.&lt;br /&gt;
&lt;br /&gt;
Mutes may be appealed. The muted role can still open tickets, and they have visibility on a special channel that shows that they have been muted. Like with warnings, moderators should remember that their ticket with original reasons may be referenced or even forwarded.&lt;br /&gt;
&lt;br /&gt;
=== Kicks ===&lt;br /&gt;
DisNCord is a public server, so by its notion, kicking doesn&#039;t seem like it would accomplish much. However, a server kick removes all rules, and restores the mint &amp;quot;new user&amp;quot; icon that comes with it. It also requires the user go get the invite link again which represents efforts. In time, we may also add active and other ranks that are granted, which would cause a kick to reset.&lt;br /&gt;
&lt;br /&gt;
Kicks should be done YAGPDB kick command, which is a slash command.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Discord (and Slashbot) has a built-in /kick command, make sure you use the right one!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/Kick &amp;lt;User:Mention/ID&amp;gt; [Reason:Text]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kicking should be used as a last resort to bans. Like warnings and mutes, kicks should be done through the bot and documented the same.&lt;br /&gt;
&lt;br /&gt;
Kicks, by their nature, can&#039;t be appealed; you just need to rejoin the server, and any new user filtering such as rules review must be redone. It also resets the join date.&lt;br /&gt;
&lt;br /&gt;
A user may request to be re-added to any lost roles by filing a ticket, to be granted at the discretion of another moderator who wasn&#039;t involved with the original decision.&lt;br /&gt;
&lt;br /&gt;
=== Bans ===&lt;br /&gt;
Bans are the highest level of action a moderator can take, and can extend past Discord and include things like a wiki account, Patreon access or more, depending on severity. Bans are also used as a method to combat raids, and with combined with the Discord security level, provides key tools in keeping the server usable in times of strife and more.&lt;br /&gt;
&lt;br /&gt;
Bans are classified into anti-spam, and as a punishment for rules violations. Bans may be time limited, or may be permamement.&lt;br /&gt;
&lt;br /&gt;
Ban should be done YAGPDB ban command, which is a slash command.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Discord (and Slashbot) has a built-in /ban command, make sure you use the right one!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/ban &amp;lt;User:Mention/ID&amp;gt; &amp;lt;Reason:why was the ban needed&amp;gt; &amp;lt;duration&amp;gt; &amp;lt;ddays: how many messages to delete&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Server moderators may use the Discord ban function if message deletion is needed to combat spam attacks due to it being easier to use than YAGPDB.zxy slash commands. The audit log must be filled out, and a note must be left in enforcement action that it was used.&lt;br /&gt;
=== A Note On Message Deletion ===&lt;/div&gt;</summary>
		<author><name>Kraaabs</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=Project:Discord_Bot_Improvements&amp;diff=565</id>
		<title>Project:Discord Bot Improvements</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=Project:Discord_Bot_Improvements&amp;diff=565"/>
		<updated>2023-01-03T15:48:42Z</updated>

		<summary type="html">&lt;p&gt;Kraaabs: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a general TODO area for improvements to the bot situation on DisNCord. Contact [[User:Kraaabs]] (Krabs#0571 on Discord) with comments/concerns/suggestions!&lt;br /&gt;
&lt;br /&gt;
== Better Discord logging ==&lt;br /&gt;
&lt;br /&gt;
As it stands, the wiki discussion logs (such as [[Lotus Notes and Taligent Shenanigans Log]] or [[SoylentNews History Log]]) are manually copied and pasted before being either [https://gitlab.com/sarahcrowle/raccoon.rb run through a script] to convert them to WikiText, or manually formatted by hand. This approach has a few drawbacks:&lt;br /&gt;
&lt;br /&gt;
# Things are easily missed&lt;br /&gt;
## Discord is... inconsistent when copy pasting large amounts of messages. The infinite scroll implementation in the client is fairly aggressive, and it leads to messages getting booted from the selection buffer sometimes, without anyone noticing.&lt;br /&gt;
# Manual labour&lt;br /&gt;
## The process right now is mostly manual. This gets tedious when there are large logs to be converted, or more than one log at once.&lt;br /&gt;
## Logs with images (such as [[Lotus Notes and Taligent Shenanigans Log]]) need to have their images manually downloaded, uploaded to the wiki, and embedded. That&#039;s a pain.&lt;br /&gt;
# Formatting&lt;br /&gt;
## Copy pasting logs isn&#039;t perfect. There isn&#039;t enough metadata to properly automate formatting of things like link embeds.&lt;br /&gt;
&lt;br /&gt;
[[User:Kraaabs]] has written (most of) a Discord bot that can record messages to a few formats, including WikiText. After some cleanup and feature additions, it should be well suited to the task.&lt;br /&gt;
&lt;br /&gt;
[https://gitlab.com/sarahcrowle/raconteur Raconteur repository on GitLab]&lt;br /&gt;
&lt;br /&gt;
=== Raconteur TODO ===&lt;br /&gt;
&lt;br /&gt;
# &amp;lt;del&amp;gt;Better document the code, and open the repository up to the public&amp;lt;/del&amp;gt; &#039;&#039;&#039;DONE! (sorta. docs aren&#039;t there yet)&#039;&#039;&#039;&lt;br /&gt;
# &amp;lt;del&amp;gt;See about using user permissions for the bot, rather than any moderator permissions&amp;lt;/del&amp;gt; &#039;&#039;&#039;DONE! (actually, the retroactive logging shouldn&#039;t require any special permissions. proactive logging needs some permissions to set up, but not to archive/create archival threads)&#039;&#039;&#039;&lt;br /&gt;
# &amp;lt;del&amp;gt;Flesh out retroactive logging (in addition to the proactive logging already implemented)&amp;lt;/del&amp;gt; &#039;&#039;&#039;DONE! (at least to the level of the proactive logging)&#039;&#039;&#039;&lt;br /&gt;
# &amp;lt;del&amp;gt;Grab embeds for messages as well (maybe embed them in the JSON log format as base64?)&amp;lt;/del&amp;gt; &#039;&#039;&#039;DONE! (although I&#039;m on the fence about including them in the JSON output. Boy howdy, base64 can get LARGE)&#039;&#039;&#039;&lt;br /&gt;
# Containerize it! (see below)&lt;br /&gt;
# MediaWiki companion bot to upload images/automatically create pages ([https://doc.wikimedia.org/pywikibot/stable/index.html it seems there are mature Python bindings for the MediaWiki API])&lt;br /&gt;
# Whatever else I forgot (I&#039;m sure I&#039;ll add more as I go)&lt;br /&gt;
&lt;br /&gt;
== Modmail/Ticketing ==&lt;br /&gt;
&lt;br /&gt;
Currently, DisNCord doesn&#039;t have any formal modmail or ticketing for moderator concerns. Specific concerns are handled by direct messaging moderators, and communicating in the #mod-discussion channel, with [[User:NCommander]] having the final say. This may not scale well as the server continues to grow, so a proper modmail or ticketing system would be beneficial. If you have other suggestions for ticketing bots, or experience using any of these, contact [[User:Kraaabs]] (Krabs#0571 on Discord) with your thoughts!&lt;br /&gt;
&lt;br /&gt;
Current proposed candidates:&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/ihaveamac/discord-mod-mail discord-mod-mail] ===&lt;br /&gt;
==== Pros ====&lt;br /&gt;
* &#039;&#039;Extremely&#039;&#039; simple codebase&lt;br /&gt;
* Sirocyl has experience with it&lt;br /&gt;
* Already dockerized&lt;br /&gt;
* Looks easily hackable if needed&lt;br /&gt;
==== Cons ====&lt;br /&gt;
* Uses old-style prefixed bot commands (not &#039;&#039;necessarily&#039;&#039; a con per-se)&lt;br /&gt;
* No formal role-locking -- relies on channel visibility&lt;br /&gt;
&lt;br /&gt;
=== [https://tickettool.xyz Ticket Tool] ===&lt;br /&gt;
==== Pros ====&lt;br /&gt;
* Appears very robust feature-wise&lt;br /&gt;
* Comes with a handy dashboard -- but it&#039;s discord integrated&lt;br /&gt;
* Seemingly scales well&lt;br /&gt;
==== Cons ====&lt;br /&gt;
* The free version is rate-limited (although I don&#039;t think we&#039;ll hit the limit)&lt;br /&gt;
* Features such as DM support are locked behind a paywall&lt;br /&gt;
* UX is somewhat inconsistent and awkward&lt;br /&gt;
* Piles up closed tickets as channels with no real archival&lt;br /&gt;
* GDPR clause just says &amp;quot;contact us&amp;quot; with no other info&lt;br /&gt;
&lt;br /&gt;
=== [https://ticketsbot.net Tickets] ===&lt;br /&gt;
==== Pros ====&lt;br /&gt;
* Similar feature set to Ticket Tool&lt;br /&gt;
* Allows multiple support teams&lt;br /&gt;
* Similar to Ticket Tool, used on many many servers already&lt;br /&gt;
* Very polished interface&lt;br /&gt;
* Deletes ticket channels when tickets are closed, but archives them in a thread for later viewing&lt;br /&gt;
* Allows for the creation of custom forms and panels for ticket creation!&lt;br /&gt;
==== Cons ====&lt;br /&gt;
* Again, some features are paywalled (but nothing super essential...)&lt;br /&gt;
* GDPR is handled through a discord server, which is... odd&lt;br /&gt;
&lt;br /&gt;
== Bot Infrastructure == &lt;br /&gt;
&lt;br /&gt;
The thing about Discord bots is that you need to host them, of course. Ideally, for ease of management, all bots would be hosted on Restless Systems infrastructure, using Docker containers.&lt;br /&gt;
&lt;br /&gt;
=== TODO ===&lt;br /&gt;
&lt;br /&gt;
# Do we need a separate VPS for bots? Or will we host on the wiki infra?&lt;br /&gt;
# Are all the bots we want to host Dockerized already? Or do we need to make our own containers?&lt;br /&gt;
# How will we manage the containers? Manually, or with something like K8s?&lt;br /&gt;
## Actually, podman could work too, and it&#039;s a bit simpler... &lt;br /&gt;
# If we want to do auto-updates (we probably do) how will we accomplish this? &lt;br /&gt;
## [[User:NCommander]] had suggested to me that we could use GitHub/GitLab actions. If we go this route, we would likely have to mirror any bots we&#039;re using in our own GitHub/GitLab project. This could pose a problem with the proprietary bots though...&lt;br /&gt;
### Although, we don&#039;t actually need to self host those. In fact, I don&#039;t think we &#039;&#039;can&#039;&#039; (duh. coffee finally kicked in I guess) &lt;br /&gt;
### Also: to get this working we&#039;d need to set up that Git{Lab|Hub} project in the first place&lt;br /&gt;
# For consistency&#039;s sake, are we going to re-containerize everything to use the same OS inside the containers, if they aren&#039;t already? (I doubt all of the bot authors involved are using the same OS)&lt;br /&gt;
## Despite all of the bots probably being written in different languages using different API wrappers, as much consistency as possible would be nice... Although that&#039;s mostly just OCD Sarah talking&lt;br /&gt;
# Finally, what DO we want to host? Should we take this opportunity to self host things like YAGPDB or PK alongside Raconteur and any potential ticketing bot (if we go with a self hosted one)?&lt;/div&gt;</summary>
		<author><name>Kraaabs</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=Project:Discord_Bot_Improvements&amp;diff=549</id>
		<title>Project:Discord Bot Improvements</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=Project:Discord_Bot_Improvements&amp;diff=549"/>
		<updated>2023-01-03T00:59:46Z</updated>

		<summary type="html">&lt;p&gt;Kraaabs: /* Raconteur TODO */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a general TODO area for improvements to the bot situation on DisNCord. Contact [[User:Kraaabs]] (Krabs#0571 on Discord) with comments/concerns/suggestions!&lt;br /&gt;
&lt;br /&gt;
== Better Discord logging ==&lt;br /&gt;
&lt;br /&gt;
As it stands, the wiki discussion logs (such as [[Lotus Notes and Taligent Shenanigans Log]] or [[SoylentNews History Log]]) are manually copied and pasted before being either [https://gitlab.com/sarahcrowle/raccoon.rb run through a script] to convert them to WikiText, or manually formatted by hand. This approach has a few drawbacks:&lt;br /&gt;
&lt;br /&gt;
# Things are easily missed&lt;br /&gt;
## Discord is... inconsistent when copy pasting large amounts of messages. The infinite scroll implementation in the client is fairly aggressive, and it leads to messages getting booted from the selection buffer sometimes, without anyone noticing.&lt;br /&gt;
# Manual labour&lt;br /&gt;
## The process right now is mostly manual. This gets tedious when there are large logs to be converted, or more than one log at once.&lt;br /&gt;
## Logs with images (such as [[Lotus Notes and Taligent Shenanigans Log]]) need to have their images manually downloaded, uploaded to the wiki, and embedded. That&#039;s a pain.&lt;br /&gt;
# Formatting&lt;br /&gt;
## Copy pasting logs isn&#039;t perfect. There isn&#039;t enough metadata to properly automate formatting of things like link embeds.&lt;br /&gt;
&lt;br /&gt;
[[User:Kraaabs]] has written (most of) a Discord bot that can record messages to a few formats, including WikiText. After some cleanup and feature additions, it should be well suited to the task.&lt;br /&gt;
&lt;br /&gt;
[https://gitlab.com/sarahcrowle/raconteur Raconteur repository on GitLab]&lt;br /&gt;
&lt;br /&gt;
=== Raconteur TODO ===&lt;br /&gt;
&lt;br /&gt;
# &amp;lt;del&amp;gt;Better document the code, and open the repository up to the public&amp;lt;/del&amp;gt; &#039;&#039;&#039;DONE! (sorta. docs aren&#039;t there yet)&#039;&#039;&#039;&lt;br /&gt;
# &amp;lt;del&amp;gt;See about using user permissions for the bot, rather than any moderator permissions&amp;lt;/del&amp;gt; &#039;&#039;&#039;DONE! (actually, the retroactive logging shouldn&#039;t require any special permissions. proactive logging needs some permissions to set up, but not to archive/create archival threads)&#039;&#039;&#039;&lt;br /&gt;
# &amp;lt;del&amp;gt;Flesh out retroactive logging (in addition to the proactive logging already implemented)&amp;lt;/del&amp;gt; &#039;&#039;&#039;DONE! (at least to the level of the proactive logging)&#039;&#039;&#039;&lt;br /&gt;
# &amp;lt;del&amp;gt;Grab embeds for messages as well (maybe embed them in the JSON log format as base64?)&amp;lt;/del&amp;gt; &#039;&#039;&#039;DONE! (although I&#039;m on the fence about including them in the JSON output. Boy howdy, base64 can get LARGE)&#039;&#039;&#039;&lt;br /&gt;
# Containerize it! (see below)&lt;br /&gt;
# MediaWiki companion bot to upload images/automatically create pages ([https://doc.wikimedia.org/pywikibot/stable/index.html it seems there are mature Python bindings for the MediaWiki API])&lt;br /&gt;
# Whatever else I forgot (I&#039;m sure I&#039;ll add more as I go)&lt;br /&gt;
&lt;br /&gt;
== Modmail/Ticketing ==&lt;br /&gt;
&lt;br /&gt;
Currently, DisNCord doesn&#039;t have any formal modmail or ticketing for moderator concerns. Specific concerns are handled by direct messaging moderators, and communicating in the #mod-discussion channel, with [[User:NCommander]] having the final say. This may not scale well as the server continues to grow, so a proper modmail or ticketing system would be beneficial. If you have other suggestions for ticketing bots, or experience using any of these, contact [[User:Kraaabs]] (Krabs#0571 on Discord) with your thoughts!&lt;br /&gt;
&lt;br /&gt;
Current proposed candidates:&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/ihaveamac/discord-mod-mail discord-mod-mail] ===&lt;br /&gt;
==== Pros ====&lt;br /&gt;
* &#039;&#039;Extremely&#039;&#039; simple codebase&lt;br /&gt;
* Sirocyl has experience with it&lt;br /&gt;
* Already dockerized&lt;br /&gt;
* Looks easily hackable if needed&lt;br /&gt;
==== Cons ====&lt;br /&gt;
* Uses old-style prefixed bot commands (not &#039;&#039;necessarily&#039;&#039; a con per-se)&lt;br /&gt;
* No formal role-locking -- relies on channel visibility&lt;br /&gt;
&lt;br /&gt;
=== [https://tickettool.xyz Ticket Tool] ===&lt;br /&gt;
==== Pros ====&lt;br /&gt;
* Appears very robust feature-wise&lt;br /&gt;
* Comes with a handy dashboard&lt;br /&gt;
* Seemingly scales well&lt;br /&gt;
==== Cons ====&lt;br /&gt;
* The free version is rate-limited (although I don&#039;t think we&#039;ll hit the limit)&lt;br /&gt;
* Features such as DM support are locked behind a paywall&lt;br /&gt;
&lt;br /&gt;
=== [https://ticketsbot.net Tickets] ===&lt;br /&gt;
==== Pros ====&lt;br /&gt;
* Similar feature set to Ticket Tool&lt;br /&gt;
* Allows multiple support teams&lt;br /&gt;
* Similar to Ticket Tool, used on many many servers already&lt;br /&gt;
==== Cons ====&lt;br /&gt;
* Again, some features are paywalled&lt;br /&gt;
&lt;br /&gt;
== Bot Infrastructure == &lt;br /&gt;
&lt;br /&gt;
The thing about Discord bots is that you need to host them, of course. Ideally, for ease of management, all bots would be hosted on Restless Systems infrastructure, using Docker containers.&lt;br /&gt;
&lt;br /&gt;
=== TODO ===&lt;br /&gt;
&lt;br /&gt;
# Do we need a separate VPS for bots? Or will we host on the wiki infra?&lt;br /&gt;
# Are all the bots we want to host Dockerized already? Or do we need to make our own containers?&lt;br /&gt;
# How will we manage the containers? Manually, or with something like K8s?&lt;br /&gt;
## Actually, podman could work too, and it&#039;s a bit simpler... &lt;br /&gt;
# If we want to do auto-updates (we probably do) how will we accomplish this? &lt;br /&gt;
## [[User:NCommander]] had suggested to me that we could use GitHub/GitLab actions. If we go this route, we would likely have to mirror any bots we&#039;re using in our own GitHub/GitLab project. This could pose a problem with the proprietary bots though...&lt;br /&gt;
### Although, we don&#039;t actually need to self host those. In fact, I don&#039;t think we &#039;&#039;can&#039;&#039; (duh. coffee finally kicked in I guess) &lt;br /&gt;
### Also: to get this working we&#039;d need to set up that Git{Lab|Hub} project in the first place&lt;br /&gt;
# For consistency&#039;s sake, are we going to re-containerize everything to use the same OS inside the containers, if they aren&#039;t already? (I doubt all of the bot authors involved are using the same OS)&lt;br /&gt;
## Despite all of the bots probably being written in different languages using different API wrappers, as much consistency as possible would be nice... Although that&#039;s mostly just OCD Sarah talking&lt;br /&gt;
# Finally, what DO we want to host? Should we take this opportunity to self host things like YAGPDB or PK alongside Raconteur and any potential ticketing bot (if we go with a self hosted one)?&lt;/div&gt;</summary>
		<author><name>Kraaabs</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=Project:Discord_Bot_Improvements&amp;diff=548</id>
		<title>Project:Discord Bot Improvements</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=Project:Discord_Bot_Improvements&amp;diff=548"/>
		<updated>2023-01-03T00:35:49Z</updated>

		<summary type="html">&lt;p&gt;Kraaabs: /* Raconteur TODO */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a general TODO area for improvements to the bot situation on DisNCord. Contact [[User:Kraaabs]] (Krabs#0571 on Discord) with comments/concerns/suggestions!&lt;br /&gt;
&lt;br /&gt;
== Better Discord logging ==&lt;br /&gt;
&lt;br /&gt;
As it stands, the wiki discussion logs (such as [[Lotus Notes and Taligent Shenanigans Log]] or [[SoylentNews History Log]]) are manually copied and pasted before being either [https://gitlab.com/sarahcrowle/raccoon.rb run through a script] to convert them to WikiText, or manually formatted by hand. This approach has a few drawbacks:&lt;br /&gt;
&lt;br /&gt;
# Things are easily missed&lt;br /&gt;
## Discord is... inconsistent when copy pasting large amounts of messages. The infinite scroll implementation in the client is fairly aggressive, and it leads to messages getting booted from the selection buffer sometimes, without anyone noticing.&lt;br /&gt;
# Manual labour&lt;br /&gt;
## The process right now is mostly manual. This gets tedious when there are large logs to be converted, or more than one log at once.&lt;br /&gt;
## Logs with images (such as [[Lotus Notes and Taligent Shenanigans Log]]) need to have their images manually downloaded, uploaded to the wiki, and embedded. That&#039;s a pain.&lt;br /&gt;
# Formatting&lt;br /&gt;
## Copy pasting logs isn&#039;t perfect. There isn&#039;t enough metadata to properly automate formatting of things like link embeds.&lt;br /&gt;
&lt;br /&gt;
[[User:Kraaabs]] has written (most of) a Discord bot that can record messages to a few formats, including WikiText. After some cleanup and feature additions, it should be well suited to the task.&lt;br /&gt;
&lt;br /&gt;
[https://gitlab.com/sarahcrowle/raconteur Raconteur repository on GitLab]&lt;br /&gt;
&lt;br /&gt;
=== Raconteur TODO ===&lt;br /&gt;
&lt;br /&gt;
# &amp;lt;del&amp;gt;Better document the code, and open the repository up to the public&amp;lt;/del&amp;gt; &#039;&#039;&#039;DONE! (sorta. docs aren&#039;t there yet)&#039;&#039;&#039;&lt;br /&gt;
# &amp;lt;del&amp;gt;See about using user permissions for the bot, rather than any moderator permissions&amp;lt;/del&amp;gt; &#039;&#039;&#039;DONE! (actually, the retroactive logging shouldn&#039;t require any special permissions. proactive logging needs some permissions to set up, but not to archive/create archival threads)&#039;&#039;&#039;&lt;br /&gt;
# &amp;lt;del&amp;gt;Flesh out retroactive logging (in addition to the proactive logging already implemented)&amp;lt;/del&amp;gt; &#039;&#039;&#039;DONE! (at least to the level of the proactive logging)&#039;&#039;&#039;&lt;br /&gt;
# Grab embeds for messages as well (maybe embed them in the JSON log format as base64?)&lt;br /&gt;
# Containerize it! (see below)&lt;br /&gt;
# MediaWiki companion bot to upload images/automatically create pages ([https://doc.wikimedia.org/pywikibot/stable/index.html it seems there are mature Python bindings for the MediaWiki API])&lt;br /&gt;
# Whatever else I forgot (I&#039;m sure I&#039;ll add more as I go)&lt;br /&gt;
&lt;br /&gt;
== Modmail/Ticketing ==&lt;br /&gt;
&lt;br /&gt;
Currently, DisNCord doesn&#039;t have any formal modmail or ticketing for moderator concerns. Specific concerns are handled by direct messaging moderators, and communicating in the #mod-discussion channel, with [[User:NCommander]] having the final say. This may not scale well as the server continues to grow, so a proper modmail or ticketing system would be beneficial. If you have other suggestions for ticketing bots, or experience using any of these, contact [[User:Kraaabs]] (Krabs#0571 on Discord) with your thoughts!&lt;br /&gt;
&lt;br /&gt;
Current proposed candidates:&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/ihaveamac/discord-mod-mail discord-mod-mail] ===&lt;br /&gt;
==== Pros ====&lt;br /&gt;
* &#039;&#039;Extremely&#039;&#039; simple codebase&lt;br /&gt;
* Sirocyl has experience with it&lt;br /&gt;
* Already dockerized&lt;br /&gt;
* Looks easily hackable if needed&lt;br /&gt;
==== Cons ====&lt;br /&gt;
* Uses old-style prefixed bot commands (not &#039;&#039;necessarily&#039;&#039; a con per-se)&lt;br /&gt;
* No formal role-locking -- relies on channel visibility&lt;br /&gt;
&lt;br /&gt;
=== [https://tickettool.xyz Ticket Tool] ===&lt;br /&gt;
==== Pros ====&lt;br /&gt;
* Appears very robust feature-wise&lt;br /&gt;
* Comes with a handy dashboard&lt;br /&gt;
* Seemingly scales well&lt;br /&gt;
==== Cons ====&lt;br /&gt;
* The free version is rate-limited (although I don&#039;t think we&#039;ll hit the limit)&lt;br /&gt;
* Features such as DM support are locked behind a paywall&lt;br /&gt;
&lt;br /&gt;
=== [https://ticketsbot.net Tickets] ===&lt;br /&gt;
==== Pros ====&lt;br /&gt;
* Similar feature set to Ticket Tool&lt;br /&gt;
* Allows multiple support teams&lt;br /&gt;
* Similar to Ticket Tool, used on many many servers already&lt;br /&gt;
==== Cons ====&lt;br /&gt;
* Again, some features are paywalled&lt;br /&gt;
&lt;br /&gt;
== Bot Infrastructure == &lt;br /&gt;
&lt;br /&gt;
The thing about Discord bots is that you need to host them, of course. Ideally, for ease of management, all bots would be hosted on Restless Systems infrastructure, using Docker containers.&lt;br /&gt;
&lt;br /&gt;
=== TODO ===&lt;br /&gt;
&lt;br /&gt;
# Do we need a separate VPS for bots? Or will we host on the wiki infra?&lt;br /&gt;
# Are all the bots we want to host Dockerized already? Or do we need to make our own containers?&lt;br /&gt;
# How will we manage the containers? Manually, or with something like K8s?&lt;br /&gt;
## Actually, podman could work too, and it&#039;s a bit simpler... &lt;br /&gt;
# If we want to do auto-updates (we probably do) how will we accomplish this? &lt;br /&gt;
## [[User:NCommander]] had suggested to me that we could use GitHub/GitLab actions. If we go this route, we would likely have to mirror any bots we&#039;re using in our own GitHub/GitLab project. This could pose a problem with the proprietary bots though...&lt;br /&gt;
### Although, we don&#039;t actually need to self host those. In fact, I don&#039;t think we &#039;&#039;can&#039;&#039; (duh. coffee finally kicked in I guess) &lt;br /&gt;
### Also: to get this working we&#039;d need to set up that Git{Lab|Hub} project in the first place&lt;br /&gt;
# For consistency&#039;s sake, are we going to re-containerize everything to use the same OS inside the containers, if they aren&#039;t already? (I doubt all of the bot authors involved are using the same OS)&lt;br /&gt;
## Despite all of the bots probably being written in different languages using different API wrappers, as much consistency as possible would be nice... Although that&#039;s mostly just OCD Sarah talking&lt;br /&gt;
# Finally, what DO we want to host? Should we take this opportunity to self host things like YAGPDB or PK alongside Raconteur and any potential ticketing bot (if we go with a self hosted one)?&lt;/div&gt;</summary>
		<author><name>Kraaabs</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=Project:Discord_Bot_Improvements&amp;diff=547</id>
		<title>Project:Discord Bot Improvements</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=Project:Discord_Bot_Improvements&amp;diff=547"/>
		<updated>2023-01-03T00:33:50Z</updated>

		<summary type="html">&lt;p&gt;Kraaabs: this looks way better bold ~Sarah&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a general TODO area for improvements to the bot situation on DisNCord. Contact [[User:Kraaabs]] (Krabs#0571 on Discord) with comments/concerns/suggestions!&lt;br /&gt;
&lt;br /&gt;
== Better Discord logging ==&lt;br /&gt;
&lt;br /&gt;
As it stands, the wiki discussion logs (such as [[Lotus Notes and Taligent Shenanigans Log]] or [[SoylentNews History Log]]) are manually copied and pasted before being either [https://gitlab.com/sarahcrowle/raccoon.rb run through a script] to convert them to WikiText, or manually formatted by hand. This approach has a few drawbacks:&lt;br /&gt;
&lt;br /&gt;
# Things are easily missed&lt;br /&gt;
## Discord is... inconsistent when copy pasting large amounts of messages. The infinite scroll implementation in the client is fairly aggressive, and it leads to messages getting booted from the selection buffer sometimes, without anyone noticing.&lt;br /&gt;
# Manual labour&lt;br /&gt;
## The process right now is mostly manual. This gets tedious when there are large logs to be converted, or more than one log at once.&lt;br /&gt;
## Logs with images (such as [[Lotus Notes and Taligent Shenanigans Log]]) need to have their images manually downloaded, uploaded to the wiki, and embedded. That&#039;s a pain.&lt;br /&gt;
# Formatting&lt;br /&gt;
## Copy pasting logs isn&#039;t perfect. There isn&#039;t enough metadata to properly automate formatting of things like link embeds.&lt;br /&gt;
&lt;br /&gt;
[[User:Kraaabs]] has written (most of) a Discord bot that can record messages to a few formats, including WikiText. After some cleanup and feature additions, it should be well suited to the task.&lt;br /&gt;
&lt;br /&gt;
[https://gitlab.com/sarahcrowle/raconteur Raconteur repository on GitLab]&lt;br /&gt;
&lt;br /&gt;
=== Raconteur TODO ===&lt;br /&gt;
&lt;br /&gt;
# &amp;lt;del&amp;gt;Better document the code, and open the repository up to the public&amp;lt;/del&amp;gt; &#039;&#039;&#039;DONE! (sorta. docs aren&#039;t there yet)&#039;&#039;&#039;&lt;br /&gt;
# See about using user permissions for the bot, rather than any moderator permissions&lt;br /&gt;
# &amp;lt;del&amp;gt;Flesh out retroactive logging (in addition to the proactive logging already implemented)&amp;lt;/del&amp;gt; &#039;&#039;&#039;DONE! (at least to the level of the proactive logging)&#039;&#039;&#039;&lt;br /&gt;
# Grab embeds for messages as well (maybe embed them in the JSON log format as base64?)&lt;br /&gt;
# Containerize it! (see below)&lt;br /&gt;
# MediaWiki companion bot to upload images/automatically create pages ([https://doc.wikimedia.org/pywikibot/stable/index.html it seems there are mature Python bindings for the MediaWiki API])&lt;br /&gt;
# Whatever else I forgot (I&#039;m sure I&#039;ll add more as I go)&lt;br /&gt;
&lt;br /&gt;
== Modmail/Ticketing ==&lt;br /&gt;
&lt;br /&gt;
Currently, DisNCord doesn&#039;t have any formal modmail or ticketing for moderator concerns. Specific concerns are handled by direct messaging moderators, and communicating in the #mod-discussion channel, with [[User:NCommander]] having the final say. This may not scale well as the server continues to grow, so a proper modmail or ticketing system would be beneficial. If you have other suggestions for ticketing bots, or experience using any of these, contact [[User:Kraaabs]] (Krabs#0571 on Discord) with your thoughts!&lt;br /&gt;
&lt;br /&gt;
Current proposed candidates:&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/ihaveamac/discord-mod-mail discord-mod-mail] ===&lt;br /&gt;
==== Pros ====&lt;br /&gt;
* &#039;&#039;Extremely&#039;&#039; simple codebase&lt;br /&gt;
* Sirocyl has experience with it&lt;br /&gt;
* Already dockerized&lt;br /&gt;
* Looks easily hackable if needed&lt;br /&gt;
==== Cons ====&lt;br /&gt;
* Uses old-style prefixed bot commands (not &#039;&#039;necessarily&#039;&#039; a con per-se)&lt;br /&gt;
* No formal role-locking -- relies on channel visibility&lt;br /&gt;
&lt;br /&gt;
=== [https://tickettool.xyz Ticket Tool] ===&lt;br /&gt;
==== Pros ====&lt;br /&gt;
* Appears very robust feature-wise&lt;br /&gt;
* Comes with a handy dashboard&lt;br /&gt;
* Seemingly scales well&lt;br /&gt;
==== Cons ====&lt;br /&gt;
* The free version is rate-limited (although I don&#039;t think we&#039;ll hit the limit)&lt;br /&gt;
* Features such as DM support are locked behind a paywall&lt;br /&gt;
&lt;br /&gt;
=== [https://ticketsbot.net Tickets] ===&lt;br /&gt;
==== Pros ====&lt;br /&gt;
* Similar feature set to Ticket Tool&lt;br /&gt;
* Allows multiple support teams&lt;br /&gt;
* Similar to Ticket Tool, used on many many servers already&lt;br /&gt;
==== Cons ====&lt;br /&gt;
* Again, some features are paywalled&lt;br /&gt;
&lt;br /&gt;
== Bot Infrastructure == &lt;br /&gt;
&lt;br /&gt;
The thing about Discord bots is that you need to host them, of course. Ideally, for ease of management, all bots would be hosted on Restless Systems infrastructure, using Docker containers.&lt;br /&gt;
&lt;br /&gt;
=== TODO ===&lt;br /&gt;
&lt;br /&gt;
# Do we need a separate VPS for bots? Or will we host on the wiki infra?&lt;br /&gt;
# Are all the bots we want to host Dockerized already? Or do we need to make our own containers?&lt;br /&gt;
# How will we manage the containers? Manually, or with something like K8s?&lt;br /&gt;
## Actually, podman could work too, and it&#039;s a bit simpler... &lt;br /&gt;
# If we want to do auto-updates (we probably do) how will we accomplish this? &lt;br /&gt;
## [[User:NCommander]] had suggested to me that we could use GitHub/GitLab actions. If we go this route, we would likely have to mirror any bots we&#039;re using in our own GitHub/GitLab project. This could pose a problem with the proprietary bots though...&lt;br /&gt;
### Although, we don&#039;t actually need to self host those. In fact, I don&#039;t think we &#039;&#039;can&#039;&#039; (duh. coffee finally kicked in I guess) &lt;br /&gt;
### Also: to get this working we&#039;d need to set up that Git{Lab|Hub} project in the first place&lt;br /&gt;
# For consistency&#039;s sake, are we going to re-containerize everything to use the same OS inside the containers, if they aren&#039;t already? (I doubt all of the bot authors involved are using the same OS)&lt;br /&gt;
## Despite all of the bots probably being written in different languages using different API wrappers, as much consistency as possible would be nice... Although that&#039;s mostly just OCD Sarah talking&lt;br /&gt;
# Finally, what DO we want to host? Should we take this opportunity to self host things like YAGPDB or PK alongside Raconteur and any potential ticketing bot (if we go with a self hosted one)?&lt;/div&gt;</summary>
		<author><name>Kraaabs</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=Project:Discord_Bot_Improvements&amp;diff=546</id>
		<title>Project:Discord Bot Improvements</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=Project:Discord_Bot_Improvements&amp;diff=546"/>
		<updated>2023-01-03T00:33:09Z</updated>

		<summary type="html">&lt;p&gt;Kraaabs: add repository link for Raconteur and update the TODO ~Sarah&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a general TODO area for improvements to the bot situation on DisNCord. Contact [[User:Kraaabs]] (Krabs#0571 on Discord) with comments/concerns/suggestions!&lt;br /&gt;
&lt;br /&gt;
== Better Discord logging ==&lt;br /&gt;
&lt;br /&gt;
As it stands, the wiki discussion logs (such as [[Lotus Notes and Taligent Shenanigans Log]] or [[SoylentNews History Log]]) are manually copied and pasted before being either [https://gitlab.com/sarahcrowle/raccoon.rb run through a script] to convert them to WikiText, or manually formatted by hand. This approach has a few drawbacks:&lt;br /&gt;
&lt;br /&gt;
# Things are easily missed&lt;br /&gt;
## Discord is... inconsistent when copy pasting large amounts of messages. The infinite scroll implementation in the client is fairly aggressive, and it leads to messages getting booted from the selection buffer sometimes, without anyone noticing.&lt;br /&gt;
# Manual labour&lt;br /&gt;
## The process right now is mostly manual. This gets tedious when there are large logs to be converted, or more than one log at once.&lt;br /&gt;
## Logs with images (such as [[Lotus Notes and Taligent Shenanigans Log]]) need to have their images manually downloaded, uploaded to the wiki, and embedded. That&#039;s a pain.&lt;br /&gt;
# Formatting&lt;br /&gt;
## Copy pasting logs isn&#039;t perfect. There isn&#039;t enough metadata to properly automate formatting of things like link embeds.&lt;br /&gt;
&lt;br /&gt;
[[User:Kraaabs]] has written (most of) a Discord bot that can record messages to a few formats, including WikiText. After some cleanup and feature additions, it should be well suited to the task.&lt;br /&gt;
&lt;br /&gt;
[https://gitlab.com/sarahcrowle/raconteur Raconteur repository on GitLab]&lt;br /&gt;
&lt;br /&gt;
=== Raconteur TODO ===&lt;br /&gt;
&lt;br /&gt;
# &amp;lt;del&amp;gt;Better document the code, and open the repository up to the public&amp;lt;/del&amp;gt; DONE! (sorta. docs aren&#039;t there yet)&lt;br /&gt;
# See about using user permissions for the bot, rather than any moderator permissions&lt;br /&gt;
# &amp;lt;del&amp;gt;Flesh out retroactive logging (in addition to the proactive logging already implemented)&amp;lt;/del&amp;gt; DONE! (at least to the level of the proactive logging)&lt;br /&gt;
# Grab embeds for messages as well (maybe embed them in the JSON log format as base64?)&lt;br /&gt;
# Containerize it! (see below)&lt;br /&gt;
# MediaWiki companion bot to upload images/automatically create pages ([https://doc.wikimedia.org/pywikibot/stable/index.html it seems there are mature Python bindings for the MediaWiki API])&lt;br /&gt;
# Whatever else I forgot (I&#039;m sure I&#039;ll add more as I go)&lt;br /&gt;
&lt;br /&gt;
== Modmail/Ticketing ==&lt;br /&gt;
&lt;br /&gt;
Currently, DisNCord doesn&#039;t have any formal modmail or ticketing for moderator concerns. Specific concerns are handled by direct messaging moderators, and communicating in the #mod-discussion channel, with [[User:NCommander]] having the final say. This may not scale well as the server continues to grow, so a proper modmail or ticketing system would be beneficial. If you have other suggestions for ticketing bots, or experience using any of these, contact [[User:Kraaabs]] (Krabs#0571 on Discord) with your thoughts!&lt;br /&gt;
&lt;br /&gt;
Current proposed candidates:&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/ihaveamac/discord-mod-mail discord-mod-mail] ===&lt;br /&gt;
==== Pros ====&lt;br /&gt;
* &#039;&#039;Extremely&#039;&#039; simple codebase&lt;br /&gt;
* Sirocyl has experience with it&lt;br /&gt;
* Already dockerized&lt;br /&gt;
* Looks easily hackable if needed&lt;br /&gt;
==== Cons ====&lt;br /&gt;
* Uses old-style prefixed bot commands (not &#039;&#039;necessarily&#039;&#039; a con per-se)&lt;br /&gt;
* No formal role-locking -- relies on channel visibility&lt;br /&gt;
&lt;br /&gt;
=== [https://tickettool.xyz Ticket Tool] ===&lt;br /&gt;
==== Pros ====&lt;br /&gt;
* Appears very robust feature-wise&lt;br /&gt;
* Comes with a handy dashboard&lt;br /&gt;
* Seemingly scales well&lt;br /&gt;
==== Cons ====&lt;br /&gt;
* The free version is rate-limited (although I don&#039;t think we&#039;ll hit the limit)&lt;br /&gt;
* Features such as DM support are locked behind a paywall&lt;br /&gt;
&lt;br /&gt;
=== [https://ticketsbot.net Tickets] ===&lt;br /&gt;
==== Pros ====&lt;br /&gt;
* Similar feature set to Ticket Tool&lt;br /&gt;
* Allows multiple support teams&lt;br /&gt;
* Similar to Ticket Tool, used on many many servers already&lt;br /&gt;
==== Cons ====&lt;br /&gt;
* Again, some features are paywalled&lt;br /&gt;
&lt;br /&gt;
== Bot Infrastructure == &lt;br /&gt;
&lt;br /&gt;
The thing about Discord bots is that you need to host them, of course. Ideally, for ease of management, all bots would be hosted on Restless Systems infrastructure, using Docker containers.&lt;br /&gt;
&lt;br /&gt;
=== TODO ===&lt;br /&gt;
&lt;br /&gt;
# Do we need a separate VPS for bots? Or will we host on the wiki infra?&lt;br /&gt;
# Are all the bots we want to host Dockerized already? Or do we need to make our own containers?&lt;br /&gt;
# How will we manage the containers? Manually, or with something like K8s?&lt;br /&gt;
## Actually, podman could work too, and it&#039;s a bit simpler... &lt;br /&gt;
# If we want to do auto-updates (we probably do) how will we accomplish this? &lt;br /&gt;
## [[User:NCommander]] had suggested to me that we could use GitHub/GitLab actions. If we go this route, we would likely have to mirror any bots we&#039;re using in our own GitHub/GitLab project. This could pose a problem with the proprietary bots though...&lt;br /&gt;
### Although, we don&#039;t actually need to self host those. In fact, I don&#039;t think we &#039;&#039;can&#039;&#039; (duh. coffee finally kicked in I guess) &lt;br /&gt;
### Also: to get this working we&#039;d need to set up that Git{Lab|Hub} project in the first place&lt;br /&gt;
# For consistency&#039;s sake, are we going to re-containerize everything to use the same OS inside the containers, if they aren&#039;t already? (I doubt all of the bot authors involved are using the same OS)&lt;br /&gt;
## Despite all of the bots probably being written in different languages using different API wrappers, as much consistency as possible would be nice... Although that&#039;s mostly just OCD Sarah talking&lt;br /&gt;
# Finally, what DO we want to host? Should we take this opportunity to self host things like YAGPDB or PK alongside Raconteur and any potential ticketing bot (if we go with a self hosted one)?&lt;/div&gt;</summary>
		<author><name>Kraaabs</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=Project:Discord_Bot_Improvements&amp;diff=545</id>
		<title>Project:Discord Bot Improvements</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=Project:Discord_Bot_Improvements&amp;diff=545"/>
		<updated>2023-01-02T17:58:12Z</updated>

		<summary type="html">&lt;p&gt;Kraaabs: /* TODO */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a general TODO area for improvements to the bot situation on DisNCord. Contact [[User:Kraaabs]] (Krabs#0571 on Discord) with comments/concerns/suggestions!&lt;br /&gt;
&lt;br /&gt;
== Better Discord logging ==&lt;br /&gt;
&lt;br /&gt;
As it stands, the wiki discussion logs (such as [[Lotus Notes and Taligent Shenanigans Log]] or [[SoylentNews History Log]]) are manually copied and pasted before being either [https://gitlab.com/sarahcrowle/raccoon.rb run through a script] to convert them to WikiText, or manually formatted by hand. This approach has a few drawbacks:&lt;br /&gt;
&lt;br /&gt;
# Things are easily missed&lt;br /&gt;
## Discord is... inconsistent when copy pasting large amounts of messages. The infinite scroll implementation in the client is fairly aggressive, and it leads to messages getting booted from the selection buffer sometimes, without anyone noticing.&lt;br /&gt;
# Manual labour&lt;br /&gt;
## The process right now is mostly manual. This gets tedious when there are large logs to be converted, or more than one log at once.&lt;br /&gt;
## Logs with images (such as [[Lotus Notes and Taligent Shenanigans Log]]) need to have their images manually downloaded, uploaded to the wiki, and embedded. That&#039;s a pain.&lt;br /&gt;
# Formatting&lt;br /&gt;
## Copy pasting logs isn&#039;t perfect. There isn&#039;t enough metadata to properly automate formatting of things like link embeds.&lt;br /&gt;
&lt;br /&gt;
[[User:Kraaabs]] has written (most of) a Discord bot that can record messages to a few formats, including WikiText. After some cleanup and feature additions, it should be well suited to the task.&lt;br /&gt;
&lt;br /&gt;
=== Raconteur TODO ===&lt;br /&gt;
&lt;br /&gt;
# Better document the code, and open the repository up to the public&lt;br /&gt;
# See about using user permissions for the bot, rather than any moderator permissions&lt;br /&gt;
# Flesh out retroactive logging (in addition to the proactive logging already implemented)&lt;br /&gt;
# Grab embeds for messages as well (maybe embed them in the JSON log format as base64?)&lt;br /&gt;
# Containerize it! (see below)&lt;br /&gt;
# MediaWiki companion bot to upload images/automatically create pages ([https://doc.wikimedia.org/pywikibot/stable/index.html it seems there are mature Python bindings for the MediaWiki API])&lt;br /&gt;
# Whatever else I forgot (I&#039;m sure I&#039;ll add more as I go)&lt;br /&gt;
&lt;br /&gt;
== Modmail/Ticketing ==&lt;br /&gt;
&lt;br /&gt;
Currently, DisNCord doesn&#039;t have any formal modmail or ticketing for moderator concerns. Specific concerns are handled by direct messaging moderators, and communicating in the #mod-discussion channel, with [[User:NCommander]] having the final say. This may not scale well as the server continues to grow, so a proper modmail or ticketing system would be beneficial. If you have other suggestions for ticketing bots, or experience using any of these, contact [[User:Kraaabs]] (Krabs#0571 on Discord) with your thoughts!&lt;br /&gt;
&lt;br /&gt;
Current proposed candidates:&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/ihaveamac/discord-mod-mail discord-mod-mail] ===&lt;br /&gt;
==== Pros ====&lt;br /&gt;
* &#039;&#039;Extremely&#039;&#039; simple codebase&lt;br /&gt;
* Sirocyl has experience with it&lt;br /&gt;
* Already dockerized&lt;br /&gt;
* Looks easily hackable if needed&lt;br /&gt;
==== Cons ====&lt;br /&gt;
* Uses old-style prefixed bot commands (not &#039;&#039;necessarily&#039;&#039; a con per-se)&lt;br /&gt;
* No formal role-locking -- relies on channel visibility&lt;br /&gt;
&lt;br /&gt;
=== [https://tickettool.xyz Ticket Tool] ===&lt;br /&gt;
==== Pros ====&lt;br /&gt;
* Appears very robust feature-wise&lt;br /&gt;
* Comes with a handy dashboard&lt;br /&gt;
* Seemingly scales well&lt;br /&gt;
==== Cons ====&lt;br /&gt;
* The free version is rate-limited (although I don&#039;t think we&#039;ll hit the limit)&lt;br /&gt;
* Features such as DM support are locked behind a paywall&lt;br /&gt;
&lt;br /&gt;
=== [https://ticketsbot.net Tickets] ===&lt;br /&gt;
==== Pros ====&lt;br /&gt;
* Similar feature set to Ticket Tool&lt;br /&gt;
* Allows multiple support teams&lt;br /&gt;
* Similar to Ticket Tool, used on many many servers already&lt;br /&gt;
==== Cons ====&lt;br /&gt;
* Again, some features are paywalled&lt;br /&gt;
&lt;br /&gt;
== Bot Infrastructure == &lt;br /&gt;
&lt;br /&gt;
The thing about Discord bots is that you need to host them, of course. Ideally, for ease of management, all bots would be hosted on Restless Systems infrastructure, using Docker containers.&lt;br /&gt;
&lt;br /&gt;
=== TODO ===&lt;br /&gt;
&lt;br /&gt;
# Do we need a separate VPS for bots? Or will we host on the wiki infra?&lt;br /&gt;
# Are all the bots we want to host Dockerized already? Or do we need to make our own containers?&lt;br /&gt;
# How will we manage the containers? Manually, or with something like K8s?&lt;br /&gt;
## Actually, podman could work too, and it&#039;s a bit simpler... &lt;br /&gt;
# If we want to do auto-updates (we probably do) how will we accomplish this? &lt;br /&gt;
## [[User:NCommander]] had suggested to me that we could use GitHub/GitLab actions. If we go this route, we would likely have to mirror any bots we&#039;re using in our own GitHub/GitLab project. This could pose a problem with the proprietary bots though...&lt;br /&gt;
### Although, we don&#039;t actually need to self host those. In fact, I don&#039;t think we &#039;&#039;can&#039;&#039; (duh. coffee finally kicked in I guess) &lt;br /&gt;
### Also: to get this working we&#039;d need to set up that Git{Lab|Hub} project in the first place&lt;br /&gt;
# For consistency&#039;s sake, are we going to re-containerize everything to use the same OS inside the containers, if they aren&#039;t already? (I doubt all of the bot authors involved are using the same OS)&lt;br /&gt;
## Despite all of the bots probably being written in different languages using different API wrappers, as much consistency as possible would be nice... Although that&#039;s mostly just OCD Sarah talking&lt;br /&gt;
# Finally, what DO we want to host? Should we take this opportunity to self host things like YAGPDB or PK alongside Raconteur and any potential ticketing bot (if we go with a self hosted one)?&lt;/div&gt;</summary>
		<author><name>Kraaabs</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=Project:Discord_Bot_Improvements&amp;diff=544</id>
		<title>Project:Discord Bot Improvements</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=Project:Discord_Bot_Improvements&amp;diff=544"/>
		<updated>2023-01-02T17:55:37Z</updated>

		<summary type="html">&lt;p&gt;Kraaabs: /* TODO */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a general TODO area for improvements to the bot situation on DisNCord. Contact [[User:Kraaabs]] (Krabs#0571 on Discord) with comments/concerns/suggestions!&lt;br /&gt;
&lt;br /&gt;
== Better Discord logging ==&lt;br /&gt;
&lt;br /&gt;
As it stands, the wiki discussion logs (such as [[Lotus Notes and Taligent Shenanigans Log]] or [[SoylentNews History Log]]) are manually copied and pasted before being either [https://gitlab.com/sarahcrowle/raccoon.rb run through a script] to convert them to WikiText, or manually formatted by hand. This approach has a few drawbacks:&lt;br /&gt;
&lt;br /&gt;
# Things are easily missed&lt;br /&gt;
## Discord is... inconsistent when copy pasting large amounts of messages. The infinite scroll implementation in the client is fairly aggressive, and it leads to messages getting booted from the selection buffer sometimes, without anyone noticing.&lt;br /&gt;
# Manual labour&lt;br /&gt;
## The process right now is mostly manual. This gets tedious when there are large logs to be converted, or more than one log at once.&lt;br /&gt;
## Logs with images (such as [[Lotus Notes and Taligent Shenanigans Log]]) need to have their images manually downloaded, uploaded to the wiki, and embedded. That&#039;s a pain.&lt;br /&gt;
# Formatting&lt;br /&gt;
## Copy pasting logs isn&#039;t perfect. There isn&#039;t enough metadata to properly automate formatting of things like link embeds.&lt;br /&gt;
&lt;br /&gt;
[[User:Kraaabs]] has written (most of) a Discord bot that can record messages to a few formats, including WikiText. After some cleanup and feature additions, it should be well suited to the task.&lt;br /&gt;
&lt;br /&gt;
=== Raconteur TODO ===&lt;br /&gt;
&lt;br /&gt;
# Better document the code, and open the repository up to the public&lt;br /&gt;
# See about using user permissions for the bot, rather than any moderator permissions&lt;br /&gt;
# Flesh out retroactive logging (in addition to the proactive logging already implemented)&lt;br /&gt;
# Grab embeds for messages as well (maybe embed them in the JSON log format as base64?)&lt;br /&gt;
# Containerize it! (see below)&lt;br /&gt;
# MediaWiki companion bot to upload images/automatically create pages ([https://doc.wikimedia.org/pywikibot/stable/index.html it seems there are mature Python bindings for the MediaWiki API])&lt;br /&gt;
# Whatever else I forgot (I&#039;m sure I&#039;ll add more as I go)&lt;br /&gt;
&lt;br /&gt;
== Modmail/Ticketing ==&lt;br /&gt;
&lt;br /&gt;
Currently, DisNCord doesn&#039;t have any formal modmail or ticketing for moderator concerns. Specific concerns are handled by direct messaging moderators, and communicating in the #mod-discussion channel, with [[User:NCommander]] having the final say. This may not scale well as the server continues to grow, so a proper modmail or ticketing system would be beneficial. If you have other suggestions for ticketing bots, or experience using any of these, contact [[User:Kraaabs]] (Krabs#0571 on Discord) with your thoughts!&lt;br /&gt;
&lt;br /&gt;
Current proposed candidates:&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/ihaveamac/discord-mod-mail discord-mod-mail] ===&lt;br /&gt;
==== Pros ====&lt;br /&gt;
* &#039;&#039;Extremely&#039;&#039; simple codebase&lt;br /&gt;
* Sirocyl has experience with it&lt;br /&gt;
* Already dockerized&lt;br /&gt;
* Looks easily hackable if needed&lt;br /&gt;
==== Cons ====&lt;br /&gt;
* Uses old-style prefixed bot commands (not &#039;&#039;necessarily&#039;&#039; a con per-se)&lt;br /&gt;
* No formal role-locking -- relies on channel visibility&lt;br /&gt;
&lt;br /&gt;
=== [https://tickettool.xyz Ticket Tool] ===&lt;br /&gt;
==== Pros ====&lt;br /&gt;
* Appears very robust feature-wise&lt;br /&gt;
* Comes with a handy dashboard&lt;br /&gt;
* Seemingly scales well&lt;br /&gt;
==== Cons ====&lt;br /&gt;
* The free version is rate-limited (although I don&#039;t think we&#039;ll hit the limit)&lt;br /&gt;
* Features such as DM support are locked behind a paywall&lt;br /&gt;
&lt;br /&gt;
=== [https://ticketsbot.net Tickets] ===&lt;br /&gt;
==== Pros ====&lt;br /&gt;
* Similar feature set to Ticket Tool&lt;br /&gt;
* Allows multiple support teams&lt;br /&gt;
* Similar to Ticket Tool, used on many many servers already&lt;br /&gt;
==== Cons ====&lt;br /&gt;
* Again, some features are paywalled&lt;br /&gt;
&lt;br /&gt;
== Bot Infrastructure == &lt;br /&gt;
&lt;br /&gt;
The thing about Discord bots is that you need to host them, of course. Ideally, for ease of management, all bots would be hosted on Restless Systems infrastructure, using Docker containers.&lt;br /&gt;
&lt;br /&gt;
=== TODO ===&lt;br /&gt;
&lt;br /&gt;
# Do we need a separate VPS for bots? Or will we host on the wiki infra?&lt;br /&gt;
# Are all the bots we want to host Dockerized already? Or do we need to make our own containers?&lt;br /&gt;
# How will we manage the containers? Manually, or with something like K8s?&lt;br /&gt;
## Actually, podman could work too, and it&#039;s a bit simpler... &lt;br /&gt;
# If we want to do auto-updates (we probably do) how will we accomplish this? &lt;br /&gt;
## [[User:NCommander]] had suggested to me that we could use GitHub/GitLab actions. If we go this route, we would likely have to mirror any bots we&#039;re using in our own GitHub/GitLab project. This could pose a problem with the proprietary bots though...&lt;br /&gt;
### Although, we don&#039;t actually need to self host those. In fact, I don&#039;t think we &#039;&#039;can&#039;&#039; (duh. coffee finally kicked in I guess) &lt;br /&gt;
# For consistency&#039;s sake, are we going to re-containerize everything to use the same OS inside the containers, if they aren&#039;t already? (I doubt all of the bot authors involved are using the same OS)&lt;br /&gt;
## Despite all of the bots probably being written in different languages using different API wrappers, as much consistency as possible would be nice... Although that&#039;s mostly just OCD Sarah talking&lt;br /&gt;
# Finally, what DO we want to host? Should we take this opportunity to self host things like YAGPDB or PK alongside Raconteur and any potential ticketing bot (if we go with a self hosted one)?&lt;/div&gt;</summary>
		<author><name>Kraaabs</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=Project:Discord_Bot_Improvements&amp;diff=543</id>
		<title>Project:Discord Bot Improvements</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=Project:Discord_Bot_Improvements&amp;diff=543"/>
		<updated>2023-01-02T17:50:29Z</updated>

		<summary type="html">&lt;p&gt;Kraaabs: /* TODO */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a general TODO area for improvements to the bot situation on DisNCord. Contact [[User:Kraaabs]] (Krabs#0571 on Discord) with comments/concerns/suggestions!&lt;br /&gt;
&lt;br /&gt;
== Better Discord logging ==&lt;br /&gt;
&lt;br /&gt;
As it stands, the wiki discussion logs (such as [[Lotus Notes and Taligent Shenanigans Log]] or [[SoylentNews History Log]]) are manually copied and pasted before being either [https://gitlab.com/sarahcrowle/raccoon.rb run through a script] to convert them to WikiText, or manually formatted by hand. This approach has a few drawbacks:&lt;br /&gt;
&lt;br /&gt;
# Things are easily missed&lt;br /&gt;
## Discord is... inconsistent when copy pasting large amounts of messages. The infinite scroll implementation in the client is fairly aggressive, and it leads to messages getting booted from the selection buffer sometimes, without anyone noticing.&lt;br /&gt;
# Manual labour&lt;br /&gt;
## The process right now is mostly manual. This gets tedious when there are large logs to be converted, or more than one log at once.&lt;br /&gt;
## Logs with images (such as [[Lotus Notes and Taligent Shenanigans Log]]) need to have their images manually downloaded, uploaded to the wiki, and embedded. That&#039;s a pain.&lt;br /&gt;
# Formatting&lt;br /&gt;
## Copy pasting logs isn&#039;t perfect. There isn&#039;t enough metadata to properly automate formatting of things like link embeds.&lt;br /&gt;
&lt;br /&gt;
[[User:Kraaabs]] has written (most of) a Discord bot that can record messages to a few formats, including WikiText. After some cleanup and feature additions, it should be well suited to the task.&lt;br /&gt;
&lt;br /&gt;
=== Raconteur TODO ===&lt;br /&gt;
&lt;br /&gt;
# Better document the code, and open the repository up to the public&lt;br /&gt;
# See about using user permissions for the bot, rather than any moderator permissions&lt;br /&gt;
# Flesh out retroactive logging (in addition to the proactive logging already implemented)&lt;br /&gt;
# Grab embeds for messages as well (maybe embed them in the JSON log format as base64?)&lt;br /&gt;
# Containerize it! (see below)&lt;br /&gt;
# MediaWiki companion bot to upload images/automatically create pages ([https://doc.wikimedia.org/pywikibot/stable/index.html it seems there are mature Python bindings for the MediaWiki API])&lt;br /&gt;
# Whatever else I forgot (I&#039;m sure I&#039;ll add more as I go)&lt;br /&gt;
&lt;br /&gt;
== Modmail/Ticketing ==&lt;br /&gt;
&lt;br /&gt;
Currently, DisNCord doesn&#039;t have any formal modmail or ticketing for moderator concerns. Specific concerns are handled by direct messaging moderators, and communicating in the #mod-discussion channel, with [[User:NCommander]] having the final say. This may not scale well as the server continues to grow, so a proper modmail or ticketing system would be beneficial. If you have other suggestions for ticketing bots, or experience using any of these, contact [[User:Kraaabs]] (Krabs#0571 on Discord) with your thoughts!&lt;br /&gt;
&lt;br /&gt;
Current proposed candidates:&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/ihaveamac/discord-mod-mail discord-mod-mail] ===&lt;br /&gt;
==== Pros ====&lt;br /&gt;
* &#039;&#039;Extremely&#039;&#039; simple codebase&lt;br /&gt;
* Sirocyl has experience with it&lt;br /&gt;
* Already dockerized&lt;br /&gt;
* Looks easily hackable if needed&lt;br /&gt;
==== Cons ====&lt;br /&gt;
* Uses old-style prefixed bot commands (not &#039;&#039;necessarily&#039;&#039; a con per-se)&lt;br /&gt;
* No formal role-locking -- relies on channel visibility&lt;br /&gt;
&lt;br /&gt;
=== [https://tickettool.xyz Ticket Tool] ===&lt;br /&gt;
==== Pros ====&lt;br /&gt;
* Appears very robust feature-wise&lt;br /&gt;
* Comes with a handy dashboard&lt;br /&gt;
* Seemingly scales well&lt;br /&gt;
==== Cons ====&lt;br /&gt;
* The free version is rate-limited (although I don&#039;t think we&#039;ll hit the limit)&lt;br /&gt;
* Features such as DM support are locked behind a paywall&lt;br /&gt;
&lt;br /&gt;
=== [https://ticketsbot.net Tickets] ===&lt;br /&gt;
==== Pros ====&lt;br /&gt;
* Similar feature set to Ticket Tool&lt;br /&gt;
* Allows multiple support teams&lt;br /&gt;
* Similar to Ticket Tool, used on many many servers already&lt;br /&gt;
==== Cons ====&lt;br /&gt;
* Again, some features are paywalled&lt;br /&gt;
&lt;br /&gt;
== Bot Infrastructure == &lt;br /&gt;
&lt;br /&gt;
The thing about Discord bots is that you need to host them, of course. Ideally, for ease of management, all bots would be hosted on Restless Systems infrastructure, using Docker containers.&lt;br /&gt;
&lt;br /&gt;
=== TODO ===&lt;br /&gt;
&lt;br /&gt;
# Do we need a separate VPS for bots? Or will we host on the wiki infra?&lt;br /&gt;
# Are all the bots we want to host Dockerized already? Or do we need to make our own containers?&lt;br /&gt;
# How will we manage the containers? Manually, or with something like K8s?&lt;br /&gt;
## Actually, podman could work too, and it&#039;s a bit simpler... &lt;br /&gt;
# If we want to do auto-updates (we probably do) how will we accomplish this? &lt;br /&gt;
## [[User:NCommander]] had suggested to me that we could use GitHub/GitLab actions. If we go this route, we would likely have to mirror any bots we&#039;re using in our own GitHub/GitLab project. This could pose a problem with the proprietary bots though...&lt;br /&gt;
### Although, we don&#039;t actually need to self host those. In fact, I don&#039;t think we &#039;&#039;can&#039;&#039; (duh. coffee finally kicked in I guess) &lt;br /&gt;
# For consistency&#039;s sake, are we going to re-containerize everything to use the same OS inside the containers, if they aren&#039;t already? (I doubt all of the bot authors involved are using the same OS)&lt;br /&gt;
## Despite all of the bots probably being written in different languages using different API wrappers, as much consistency as possible would be nice... Although that&#039;s mostly just OCD Sarah talking&lt;/div&gt;</summary>
		<author><name>Kraaabs</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=Project:Discord_Bot_Improvements&amp;diff=542</id>
		<title>Project:Discord Bot Improvements</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=Project:Discord_Bot_Improvements&amp;diff=542"/>
		<updated>2023-01-02T17:47:47Z</updated>

		<summary type="html">&lt;p&gt;Kraaabs: /* TODO */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a general TODO area for improvements to the bot situation on DisNCord. Contact [[User:Kraaabs]] (Krabs#0571 on Discord) with comments/concerns/suggestions!&lt;br /&gt;
&lt;br /&gt;
== Better Discord logging ==&lt;br /&gt;
&lt;br /&gt;
As it stands, the wiki discussion logs (such as [[Lotus Notes and Taligent Shenanigans Log]] or [[SoylentNews History Log]]) are manually copied and pasted before being either [https://gitlab.com/sarahcrowle/raccoon.rb run through a script] to convert them to WikiText, or manually formatted by hand. This approach has a few drawbacks:&lt;br /&gt;
&lt;br /&gt;
# Things are easily missed&lt;br /&gt;
## Discord is... inconsistent when copy pasting large amounts of messages. The infinite scroll implementation in the client is fairly aggressive, and it leads to messages getting booted from the selection buffer sometimes, without anyone noticing.&lt;br /&gt;
# Manual labour&lt;br /&gt;
## The process right now is mostly manual. This gets tedious when there are large logs to be converted, or more than one log at once.&lt;br /&gt;
## Logs with images (such as [[Lotus Notes and Taligent Shenanigans Log]]) need to have their images manually downloaded, uploaded to the wiki, and embedded. That&#039;s a pain.&lt;br /&gt;
# Formatting&lt;br /&gt;
## Copy pasting logs isn&#039;t perfect. There isn&#039;t enough metadata to properly automate formatting of things like link embeds.&lt;br /&gt;
&lt;br /&gt;
[[User:Kraaabs]] has written (most of) a Discord bot that can record messages to a few formats, including WikiText. After some cleanup and feature additions, it should be well suited to the task.&lt;br /&gt;
&lt;br /&gt;
=== Raconteur TODO ===&lt;br /&gt;
&lt;br /&gt;
# Better document the code, and open the repository up to the public&lt;br /&gt;
# See about using user permissions for the bot, rather than any moderator permissions&lt;br /&gt;
# Flesh out retroactive logging (in addition to the proactive logging already implemented)&lt;br /&gt;
# Grab embeds for messages as well (maybe embed them in the JSON log format as base64?)&lt;br /&gt;
# Containerize it! (see below)&lt;br /&gt;
# MediaWiki companion bot to upload images/automatically create pages ([https://doc.wikimedia.org/pywikibot/stable/index.html it seems there are mature Python bindings for the MediaWiki API])&lt;br /&gt;
# Whatever else I forgot (I&#039;m sure I&#039;ll add more as I go)&lt;br /&gt;
&lt;br /&gt;
== Modmail/Ticketing ==&lt;br /&gt;
&lt;br /&gt;
Currently, DisNCord doesn&#039;t have any formal modmail or ticketing for moderator concerns. Specific concerns are handled by direct messaging moderators, and communicating in the #mod-discussion channel, with [[User:NCommander]] having the final say. This may not scale well as the server continues to grow, so a proper modmail or ticketing system would be beneficial. If you have other suggestions for ticketing bots, or experience using any of these, contact [[User:Kraaabs]] (Krabs#0571 on Discord) with your thoughts!&lt;br /&gt;
&lt;br /&gt;
Current proposed candidates:&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/ihaveamac/discord-mod-mail discord-mod-mail] ===&lt;br /&gt;
==== Pros ====&lt;br /&gt;
* &#039;&#039;Extremely&#039;&#039; simple codebase&lt;br /&gt;
* Sirocyl has experience with it&lt;br /&gt;
* Already dockerized&lt;br /&gt;
* Looks easily hackable if needed&lt;br /&gt;
==== Cons ====&lt;br /&gt;
* Uses old-style prefixed bot commands (not &#039;&#039;necessarily&#039;&#039; a con per-se)&lt;br /&gt;
* No formal role-locking -- relies on channel visibility&lt;br /&gt;
&lt;br /&gt;
=== [https://tickettool.xyz Ticket Tool] ===&lt;br /&gt;
==== Pros ====&lt;br /&gt;
* Appears very robust feature-wise&lt;br /&gt;
* Comes with a handy dashboard&lt;br /&gt;
* Seemingly scales well&lt;br /&gt;
==== Cons ====&lt;br /&gt;
* The free version is rate-limited (although I don&#039;t think we&#039;ll hit the limit)&lt;br /&gt;
* Features such as DM support are locked behind a paywall&lt;br /&gt;
&lt;br /&gt;
=== [https://ticketsbot.net Tickets] ===&lt;br /&gt;
==== Pros ====&lt;br /&gt;
* Similar feature set to Ticket Tool&lt;br /&gt;
* Allows multiple support teams&lt;br /&gt;
* Similar to Ticket Tool, used on many many servers already&lt;br /&gt;
==== Cons ====&lt;br /&gt;
* Again, some features are paywalled&lt;br /&gt;
&lt;br /&gt;
== Bot Infrastructure == &lt;br /&gt;
&lt;br /&gt;
The thing about Discord bots is that you need to host them, of course. Ideally, for ease of management, all bots would be hosted on Restless Systems infrastructure, using Docker containers.&lt;br /&gt;
&lt;br /&gt;
=== TODO ===&lt;br /&gt;
&lt;br /&gt;
# Do we need a separate VPS for bots? Or will we host on the wiki infra?&lt;br /&gt;
# Are all the bots we want to host Dockerized already? Or do we need to make our own containers?&lt;br /&gt;
# How will we manage the containers? Manually, or with something like K8s?&lt;br /&gt;
## Actually, podman could work too, and it&#039;s a bit simpler... &lt;br /&gt;
# If we want to do auto-updates (we probably do) how will we accomplish this? &lt;br /&gt;
## [[User:NCommander]] had suggested to me that we could use GitHub/GitLab actions. If we go this route, we would likely have to mirror any bots we&#039;re using in our own GitHub/GitLab project. This could pose a problem with the proprietary bots though...&lt;br /&gt;
# For consistency&#039;s sake, are we going to re-containerize everything to use the same OS inside the containers, if they aren&#039;t already? (I doubt all of the bot authors involved are using the same OS)&lt;br /&gt;
## Despite all of the bots probably being written in different languages using different API wrappers, as much consistency as possible would be nice... Although that&#039;s mostly just OCD Sarah talking&lt;/div&gt;</summary>
		<author><name>Kraaabs</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=Project:Discord_Bot_Improvements&amp;diff=541</id>
		<title>Project:Discord Bot Improvements</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=Project:Discord_Bot_Improvements&amp;diff=541"/>
		<updated>2023-01-02T16:51:56Z</updated>

		<summary type="html">&lt;p&gt;Kraaabs: /* Raconteur TODO */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a general TODO area for improvements to the bot situation on DisNCord. Contact [[User:Kraaabs]] (Krabs#0571 on Discord) with comments/concerns/suggestions!&lt;br /&gt;
&lt;br /&gt;
== Better Discord logging ==&lt;br /&gt;
&lt;br /&gt;
As it stands, the wiki discussion logs (such as [[Lotus Notes and Taligent Shenanigans Log]] or [[SoylentNews History Log]]) are manually copied and pasted before being either [https://gitlab.com/sarahcrowle/raccoon.rb run through a script] to convert them to WikiText, or manually formatted by hand. This approach has a few drawbacks:&lt;br /&gt;
&lt;br /&gt;
# Things are easily missed&lt;br /&gt;
## Discord is... inconsistent when copy pasting large amounts of messages. The infinite scroll implementation in the client is fairly aggressive, and it leads to messages getting booted from the selection buffer sometimes, without anyone noticing.&lt;br /&gt;
# Manual labour&lt;br /&gt;
## The process right now is mostly manual. This gets tedious when there are large logs to be converted, or more than one log at once.&lt;br /&gt;
## Logs with images (such as [[Lotus Notes and Taligent Shenanigans Log]]) need to have their images manually downloaded, uploaded to the wiki, and embedded. That&#039;s a pain.&lt;br /&gt;
# Formatting&lt;br /&gt;
## Copy pasting logs isn&#039;t perfect. There isn&#039;t enough metadata to properly automate formatting of things like link embeds.&lt;br /&gt;
&lt;br /&gt;
[[User:Kraaabs]] has written (most of) a Discord bot that can record messages to a few formats, including WikiText. After some cleanup and feature additions, it should be well suited to the task.&lt;br /&gt;
&lt;br /&gt;
=== Raconteur TODO ===&lt;br /&gt;
&lt;br /&gt;
# Better document the code, and open the repository up to the public&lt;br /&gt;
# See about using user permissions for the bot, rather than any moderator permissions&lt;br /&gt;
# Flesh out retroactive logging (in addition to the proactive logging already implemented)&lt;br /&gt;
# Grab embeds for messages as well (maybe embed them in the JSON log format as base64?)&lt;br /&gt;
# Containerize it! (see below)&lt;br /&gt;
# MediaWiki companion bot to upload images/automatically create pages ([https://doc.wikimedia.org/pywikibot/stable/index.html it seems there are mature Python bindings for the MediaWiki API])&lt;br /&gt;
# Whatever else I forgot (I&#039;m sure I&#039;ll add more as I go)&lt;br /&gt;
&lt;br /&gt;
== Modmail/Ticketing ==&lt;br /&gt;
&lt;br /&gt;
Currently, DisNCord doesn&#039;t have any formal modmail or ticketing for moderator concerns. Specific concerns are handled by direct messaging moderators, and communicating in the #mod-discussion channel, with [[User:NCommander]] having the final say. This may not scale well as the server continues to grow, so a proper modmail or ticketing system would be beneficial. If you have other suggestions for ticketing bots, or experience using any of these, contact [[User:Kraaabs]] (Krabs#0571 on Discord) with your thoughts!&lt;br /&gt;
&lt;br /&gt;
Current proposed candidates:&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/ihaveamac/discord-mod-mail discord-mod-mail] ===&lt;br /&gt;
==== Pros ====&lt;br /&gt;
* &#039;&#039;Extremely&#039;&#039; simple codebase&lt;br /&gt;
* Sirocyl has experience with it&lt;br /&gt;
* Already dockerized&lt;br /&gt;
* Looks easily hackable if needed&lt;br /&gt;
==== Cons ====&lt;br /&gt;
* Uses old-style prefixed bot commands (not &#039;&#039;necessarily&#039;&#039; a con per-se)&lt;br /&gt;
* No formal role-locking -- relies on channel visibility&lt;br /&gt;
&lt;br /&gt;
=== [https://tickettool.xyz Ticket Tool] ===&lt;br /&gt;
==== Pros ====&lt;br /&gt;
* Appears very robust feature-wise&lt;br /&gt;
* Comes with a handy dashboard&lt;br /&gt;
* Seemingly scales well&lt;br /&gt;
==== Cons ====&lt;br /&gt;
* The free version is rate-limited (although I don&#039;t think we&#039;ll hit the limit)&lt;br /&gt;
* Features such as DM support are locked behind a paywall&lt;br /&gt;
&lt;br /&gt;
=== [https://ticketsbot.net Tickets] ===&lt;br /&gt;
==== Pros ====&lt;br /&gt;
* Similar feature set to Ticket Tool&lt;br /&gt;
* Allows multiple support teams&lt;br /&gt;
* Similar to Ticket Tool, used on many many servers already&lt;br /&gt;
==== Cons ====&lt;br /&gt;
* Again, some features are paywalled&lt;br /&gt;
&lt;br /&gt;
== Bot Infrastructure == &lt;br /&gt;
&lt;br /&gt;
The thing about Discord bots is that you need to host them, of course. Ideally, for ease of management, all bots would be hosted on Restless Systems infrastructure, using Docker containers.&lt;br /&gt;
&lt;br /&gt;
=== TODO ===&lt;br /&gt;
&lt;br /&gt;
# Do we need a separate VPS for bots? Or will we host on the wiki infra?&lt;br /&gt;
# Are all the bots we want to host Dockerized already? Or do we need to make our own containers?&lt;br /&gt;
# How will we manage the containers? Manually, or with something like K8s?&lt;br /&gt;
# If we want to do auto-updates (we probably do) how will we accomplish this? &lt;br /&gt;
## [[User:NCommander]] had suggested to me that we could use GitHub/GitLab actions. If we go this route, we would likely have to mirror any bots we&#039;re using in our own GitHub/GitLab project. This could pose a problem with the proprietary bots though...&lt;br /&gt;
# For consistency&#039;s sake, are we going to re-containerize everything to use the same OS inside the containers, if they aren&#039;t already? (I doubt all of the bot authors involved are using the same OS)&lt;/div&gt;</summary>
		<author><name>Kraaabs</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=Project:Discord_Bot_Improvements&amp;diff=540</id>
		<title>Project:Discord Bot Improvements</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=Project:Discord_Bot_Improvements&amp;diff=540"/>
		<updated>2023-01-02T16:42:54Z</updated>

		<summary type="html">&lt;p&gt;Kraaabs: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a general TODO area for improvements to the bot situation on DisNCord. Contact [[User:Kraaabs]] (Krabs#0571 on Discord) with comments/concerns/suggestions!&lt;br /&gt;
&lt;br /&gt;
== Better Discord logging ==&lt;br /&gt;
&lt;br /&gt;
As it stands, the wiki discussion logs (such as [[Lotus Notes and Taligent Shenanigans Log]] or [[SoylentNews History Log]]) are manually copied and pasted before being either [https://gitlab.com/sarahcrowle/raccoon.rb run through a script] to convert them to WikiText, or manually formatted by hand. This approach has a few drawbacks:&lt;br /&gt;
&lt;br /&gt;
# Things are easily missed&lt;br /&gt;
## Discord is... inconsistent when copy pasting large amounts of messages. The infinite scroll implementation in the client is fairly aggressive, and it leads to messages getting booted from the selection buffer sometimes, without anyone noticing.&lt;br /&gt;
# Manual labour&lt;br /&gt;
## The process right now is mostly manual. This gets tedious when there are large logs to be converted, or more than one log at once.&lt;br /&gt;
## Logs with images (such as [[Lotus Notes and Taligent Shenanigans Log]]) need to have their images manually downloaded, uploaded to the wiki, and embedded. That&#039;s a pain.&lt;br /&gt;
# Formatting&lt;br /&gt;
## Copy pasting logs isn&#039;t perfect. There isn&#039;t enough metadata to properly automate formatting of things like link embeds.&lt;br /&gt;
&lt;br /&gt;
[[User:Kraaabs]] has written (most of) a Discord bot that can record messages to a few formats, including WikiText. After some cleanup and feature additions, it should be well suited to the task.&lt;br /&gt;
&lt;br /&gt;
=== Raconteur TODO ===&lt;br /&gt;
&lt;br /&gt;
# Better document the code, and open the repository up to the public&lt;br /&gt;
# See about using user permissions for the bot, rather than any moderator permissions&lt;br /&gt;
# Flesh out retroactive logging (in addition to the proactive logging already implemented)&lt;br /&gt;
# Grab embeds for messages as well (maybe embed them in the JSON log format as base64?)&lt;br /&gt;
# Containerize it! (see below)&lt;br /&gt;
# MediaWiki companion bot to upload images/automatically create pages ([https://github.com/barrust/mediawiki it seems there are mature Python bindings for the MediaWiki API])&lt;br /&gt;
# Whatever else I forgot (I&#039;m sure I&#039;ll add more as I go)&lt;br /&gt;
&lt;br /&gt;
== Modmail/Ticketing ==&lt;br /&gt;
&lt;br /&gt;
Currently, DisNCord doesn&#039;t have any formal modmail or ticketing for moderator concerns. Specific concerns are handled by direct messaging moderators, and communicating in the #mod-discussion channel, with [[User:NCommander]] having the final say. This may not scale well as the server continues to grow, so a proper modmail or ticketing system would be beneficial. If you have other suggestions for ticketing bots, or experience using any of these, contact [[User:Kraaabs]] (Krabs#0571 on Discord) with your thoughts!&lt;br /&gt;
&lt;br /&gt;
Current proposed candidates:&lt;br /&gt;
&lt;br /&gt;
=== [https://github.com/ihaveamac/discord-mod-mail discord-mod-mail] ===&lt;br /&gt;
==== Pros ====&lt;br /&gt;
* &#039;&#039;Extremely&#039;&#039; simple codebase&lt;br /&gt;
* Sirocyl has experience with it&lt;br /&gt;
* Already dockerized&lt;br /&gt;
* Looks easily hackable if needed&lt;br /&gt;
==== Cons ====&lt;br /&gt;
* Uses old-style prefixed bot commands (not &#039;&#039;necessarily&#039;&#039; a con per-se)&lt;br /&gt;
* No formal role-locking -- relies on channel visibility&lt;br /&gt;
&lt;br /&gt;
=== [https://tickettool.xyz Ticket Tool] ===&lt;br /&gt;
==== Pros ====&lt;br /&gt;
* Appears very robust feature-wise&lt;br /&gt;
* Comes with a handy dashboard&lt;br /&gt;
* Seemingly scales well&lt;br /&gt;
==== Cons ====&lt;br /&gt;
* The free version is rate-limited (although I don&#039;t think we&#039;ll hit the limit)&lt;br /&gt;
* Features such as DM support are locked behind a paywall&lt;br /&gt;
&lt;br /&gt;
=== [https://ticketsbot.net Tickets] ===&lt;br /&gt;
==== Pros ====&lt;br /&gt;
* Similar feature set to Ticket Tool&lt;br /&gt;
* Allows multiple support teams&lt;br /&gt;
* Similar to Ticket Tool, used on many many servers already&lt;br /&gt;
==== Cons ====&lt;br /&gt;
* Again, some features are paywalled&lt;br /&gt;
&lt;br /&gt;
== Bot Infrastructure == &lt;br /&gt;
&lt;br /&gt;
The thing about Discord bots is that you need to host them, of course. Ideally, for ease of management, all bots would be hosted on Restless Systems infrastructure, using Docker containers.&lt;br /&gt;
&lt;br /&gt;
=== TODO ===&lt;br /&gt;
&lt;br /&gt;
# Do we need a separate VPS for bots? Or will we host on the wiki infra?&lt;br /&gt;
# Are all the bots we want to host Dockerized already? Or do we need to make our own containers?&lt;br /&gt;
# How will we manage the containers? Manually, or with something like K8s?&lt;br /&gt;
# If we want to do auto-updates (we probably do) how will we accomplish this? &lt;br /&gt;
## [[User:NCommander]] had suggested to me that we could use GitHub/GitLab actions. If we go this route, we would likely have to mirror any bots we&#039;re using in our own GitHub/GitLab project. This could pose a problem with the proprietary bots though...&lt;br /&gt;
# For consistency&#039;s sake, are we going to re-containerize everything to use the same OS inside the containers, if they aren&#039;t already? (I doubt all of the bot authors involved are using the same OS)&lt;/div&gt;</summary>
		<author><name>Kraaabs</name></author>
	</entry>
</feed>