commit: bc8a654f02e25b0d933ee6fe6a10c7c2a01e768d
parent 34514fb382e9ffbb55a2dbd750d50015fa67adeb
Author: Haelwenn (lanodan) Monnier <contact@hacktivis.me>
Date: Mon, 16 Nov 2020 10:56:30 +0100
software basic needs: New page
Diffstat:
3 files changed, 118 insertions(+), 0 deletions(-)
diff --git a/decreases of usability.shtml b/decreases of usability.shtml
@@ -9,18 +9,23 @@
<main>
<h1>Decreases of usability</h1>
<p>Inspired by <a href="https://datagubbe.se/decusab/">The Decline of Usability | datagubbe.se</a>, which I would recommend reading.</p>
+
<h2 id="ProgressBar"><a href="#ProgressBar">§</a> Progress bars</h2>
<p>Few decades back progress bars often used to have nice separation with blocks so you could notice progress and count rough percentage easily if a number wasn't present. Nowadays if you don't only get a spinner or some waiting screen (games…) you have a simple-ass line, if there is no percentage next to it, you're basically lost with something where you can only get an idea of the quarters instead of a good indication of the dozens. Imagine having something like your mercure-based thermometer with no units on it.</p>
<p>Nowadays you basically have to keep the pointer on the progress bar to notice progress. Great, as if doing separators was any kind of an hard thing to do.</p>
+
<h2 id="documentation"><a href="#documentation">§</a> Documentation</h2>
<p>I know, 90% of folks do not read them. But it doesn't means that it's completely useless, documentation can allow to repair a program or reimplement it (software rot). Some programs have litterally no documentation for their settings, Firefox is one example of that, specially for the <code>about:config</code>, meanwhile the linux kernel, the thing supposed to be hard to configure, like if you would need to be a confirmed wizard? Well each setting has a nice documentation, there is some pre-made configs for you, you can export/import your settings, and there is <a href="https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/Documentation?h=v5.6.11">/Documentation/</a> which is useful for the runtime configs or APIs, including internal ones.</p>
+
<h2 id="scrollbars"><a href="#scrollbars">§</a> Scrollbars</h2>
<p>I think Ubuntu introduced this one, scrollbars that have something like 5 pixels width maximum and with poping alien buttons when you manage to hover it. Name of the thing in packaged form was named <code>liboverlay</code> and gess what? It looks like it got adopted right into GTK now because I have it on non-configured installs, at least you can toggle it off into GtkSettings (usually lives at <code>~/.config/gtk-3.0/settings.ini</code>) with <code>gtk-overlay-scrolling = false</code></p>
<p>As datagubbe pointed out there is also contrast or even just indication issues, sometimes you're left wondering which part is the background and which part is the foreground.</p>
<p>Want some system where the scrollbars are glorious? Plan9. Like the rest of the system the UI is simple as fuck but presents everything well. You get to choose how much to scroll on each click based on the position in the scrollbar or directly at a precise position with another click, meanwhile I had to hard-modify my current mouse so I would have less to no friction on the wheel.</p>
+
<h2 id="NonNativeBehaviour"><a href="#NonNativeBehaviour">§</a> Behaviours from other platforms into yours</h2>
<p><a href="https://www.jwz.org/blog/2012/04/why-i-use-safari-instead-of-firefox/"><cite>jwz: Why I use Safari instead of Firefox</cite></a>: <q>I don't <i>want</i> your Linux in my Mac. I want my Mac to behave like a Mac. That's why I bought a Mac.</q>. Well Firefox… I don't want your Windows into my Linux (or Unix), if you don't want to maintain behaviour consistent to the platform, maybe keeping on simply using GTK or making a small wrapper, or another toolkit would have been better, but no, you did you own <abbr title="Not Invented Here">NIH</abbr> with XUL, which you're doomed to be the only one using.</p>
<p>And this isn't about the Operating System or linux patchwork distro taking things from other systems, because this can sometimes be good (but not always, like do not be a clone, this never works in the end). What should never happen is programs that are part of the operating system context to behave differently like a special snowflake. (to me games are the only exception as they are very standalone in terms of interface and OS interaction)</p>
+
<h2 id="GtkColorChooser"><a href="#GtkColorChooser">§</a> Gtk3 ColorChooser</h2>
<p>GTK 3 came with the deprecation of the GtkColorSelection, which looks like basically any other colorpicker, you have a colorwheel, a way to tweak your color, optionnally a palette, a picker to grab a color from elsewhere, say your design guidelines and you have an entry where you can put a name or a <abbr title="Red Green Blue">RBG</abbr> hexcode.</p>
<img loading="lazy" src="/images/GtkColorSelection.png" /> <img loading="lazy" src="/images/GtkColorSelection_palette.png" />
diff --git a/software basic needs.shtml b/software basic needs.shtml
@@ -0,0 +1,112 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+<!--#include file="/templates/head.shtml" -->
+ <title>Software basic needs — lanodan’s cyber-home</title>
+ </head>
+ <body>
+<!--#include file="/templates/en/nav.shtml" -->
+ <main>
+ <h1>Software Basic Needs</h1>
+ <p>
+ What a kind of software (or feature included in it) needs to have before it's deemed as something better than a proof of concept / prototype. This list is quite Unix-like oriented but is made to apply to any platform worth using.<br />
+ A lot of software doesn't have half of how they should work, this is why I had to do this page which should never have existed in the first place outside of a book like "Programming/Design for Dummies" or laws.
+ </p>
+
+ <h2>All of them</h2>
+ <ul>
+ <li>Documentation: environment variables, command line arguments, files and their format, keybindings, public API, …</li>
+ <li>An official contact method: chatroom, email, mailing-list/forum/newsgroup, …</li>
+ <li>A documented way to report security issues</li>
+ <li>Detailed changelog</li>
+ <li>Screenshot or other preview method</li>
+ <li>Consider each dependencies (including indirect ones) as a liability, they must pick direct dependencies lightly</li>
+ <li>Consistent design, for example: Either integrates into the platform like a native app or doesn't like most games</li>
+ <li>No automatic updates and <em>absolutely</em> no automatic remote code execution</li>
+ <li>Doesn't saves any data on the disk without user's consent</li>
+ <li>Doesn't crashes down when the environment it's in returns an error or refuses an action</li>
+ </ul>
+ <p>User content: Explicit and informed, default answer is refusing, can be changed at any point in time</p>
+
+ <h2>Open-Source Software</h2>
+ <ul>
+ <li>License that is approuved by the <abbr title="Open Source Initiative">OSI</abbr>/<abbr title="Free Software Foundation">FSF</abbr> or at least compatible with the <a href="https://opensource.org/osd">Open Source Definition</a></li>
+ <li>Public developer discussion space (can be shared with the rest of the community)</li>
+ <li>Public version control system</li>
+ <li>Ability to send patches, better if an account isn't required</li>
+ </ul>
+
+ <h2>Security critical software</h2>
+ <p>Security-critial software <em>must</em> be open-source and evident as secure. Which means that it has to be minimalist and readable.</p>
+
+ <h2>Multimedia Player</h2>
+ <ul>
+ <li>Formats: MKV, AU/.snd, MP3, Vorbis & Theora, WEBM, SRT (+ ASS)</li>
+ <li>seeking + progress</li>
+ <li>volume control (not just mute/unmute)</li>
+ <li>play/pause/stop</li>
+ <li>subtitles/lyrics</li>
+ <li>track selection (video, audio, subtitles)</li>
+ <li>speed control</li>
+ <li>playlist support</li>
+ </ul>
+ <p>Good examples: <a href="https://mpv.io/">mpv</a></p>
+
+ <h2>Image Viewer</h2>
+ <ul>
+ <li>Formats: PNG, JPEG, TGA, GIF, (CBZ)</li>
+ <li>Zoom in/out, reset to 100%, fit window/horizontaly/verticaly</li>
+ <li>previous/next in a list of images, with configurable auto-play</li>
+ </ul>
+ <p>Good examples: <a href="https://feh.finalrewind.org/">feh</a></p>
+
+ <h2>Document Viewer</h2>
+ <ul>
+ <li>Formats: plain text (ASCII/Unicode control characters), PDF/A, epub</li>
+ <li>Text selection and clipboard support</li>
+ <li>Page Jumps</li>
+ <li>Zoom in/out, reset to 100%, fit window/horizontaly/verticaly</li>
+ <li>Setting the fonts family/name+size and color palette/scheme</li>
+ </ul>
+ <p>Good examples: None so far ☹</p>
+
+ <h2>Text Editor</h2>
+ <ul>
+ <li>Unicode support</li>
+ <li>Text selection and clipboard support</li>
+ <li>search and replace with regex support</li>
+ <li>Support for bigger-than-ram files</li>
+ <li>jump to line</li>
+ </ul>
+ <p>Good examples: ed, ex, vi, sam, acme, <a href="https://github.com/martanne/vis">vis</a></p>
+
+ <h2>Networked software</h2>
+ <ul>
+ <li>Doesn't do any requests without the user consent (must show where it goes and what it sends)</li>
+ </ul>
+
+ <h2>Web Browser</h2>
+ <ul>
+ <li>Complete (not just the hostname) current URL displayed at all times</li>
+ <li>Saving any requested data or link destination</li>
+ <li>Developer tools (viewing each request, javascript console, …)</li>
+ <li>Can control JavaScript and Images loading</li>
+ <li>Audio/Video only plays with the user's consent</li>
+ <li>Doesn't gives permission to devices without user's consent</li>
+ <li>Doesn't gives hardware information or leaks it via fingerprinting</li>
+ <li>Bookmarks</li>
+ <li>UserScripts: JavaScript hooks to URL patterns written by the user (extensions are sadly vendor-locked)</li>
+ </ul>
+ <p>As it's networked software it needs to also have a controllable way to deny extra requests (aka AdBlocker)</p>
+ <p>Good examples: lynx, elinks</p>
+ <p>Worst examples: Mozilla Firefox, Anything Blink-based</p>
+
+ <h2>See Also</h2>
+ <ul>
+ <li><a href="/decreases%20of%20usability">Decreases of usability</a></li>
+ <li><a href="http://www.catb.org/esr/writings/taoup/">The Art of Unix Programming</a></li>
+ </ul>
+ </main>
+<!--#include file="/templates/en/footer.shtml" -->
+ </body>
+</html>
diff --git a/templates/en/nav.shtml b/templates/en/nav.shtml
@@ -14,6 +14,7 @@
<li><a href="/bookmarks">Bookmarks</a></li>
<li><a href="/coding%20style">coding style</a></li>
<li><a href="/decreases%20of%20usability">Decreases of usability</a></li>
+ <li><a href="/software%20basic%20needs">Software basic needs</a></li>
<li><a href="/git/">/git/</a></li>
<li><a href="/kopimi/">/kopimi/</a>: libre data</li>
<li><a href="/librism">Désintox’ / FOSS activism</a></li>