guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

branch master updated: website: Add post about the new 'error/success-se


From: Ludovic Courtès
Subject: branch master updated: website: Add post about the new 'error/success-service-type'.
Date: Sat, 01 Apr 2023 04:49:49 -0400

This is an automated email from the git hooks/post-receive script.

civodul pushed a commit to branch master
in repository guix-artwork.

The following commit(s) were added to refs/heads/master by this push:
     new 80fc799  website: Add post about the new 'error/success-service-type'.
80fc799 is described below

commit 80fc79926c3939ad0beedc61935dcb7597fa7d50
Author: Ludovic Courtès <ludo@gnu.org>
AuthorDate: Sat Apr 1 10:45:20 2023 +0200

    website: Add post about the new 'error/success-service-type'.
    
    * website/posts/error-success.md,
    website/static/blog/img/error-success-sticker-bird.jpg,
    website/static/blog/img/error-success-sticker-pile.jpg,
    website/static/blog/img/error-success-sticker.svg,
    website/static/blog/img/error-success.jpg: New files.
---
 website/posts/error-success.md                     | 167 +++++++++++++++++++
 .../static/blog/img/error-success-sticker-bird.jpg | Bin 0 -> 296689 bytes
 .../static/blog/img/error-success-sticker-pile.jpg | Bin 0 -> 343349 bytes
 website/static/blog/img/error-success-sticker.svg  | 180 +++++++++++++++++++++
 website/static/blog/img/error-success.jpg          | Bin 0 -> 125587 bytes
 5 files changed, 347 insertions(+)

diff --git a/website/posts/error-success.md b/website/posts/error-success.md
new file mode 100644
index 0000000..f205a14
--- /dev/null
+++ b/website/posts/error-success.md
@@ -0,0 +1,167 @@
+title: Reinstating an iconic error message
+author: Ludovic Courtès
+tags: System services, Community
+date: 2023-04-01 11:00:00
+---
+
+Software development is a social process.  What might be a “bug” for
+someone might well be a “feature” for someone else.  The Guix project
+rediscovered it the hard way when, after “fixing a bug” that had been
+present in Guix System for years, was confronted with an uproar in its
+user base.
+
+In this post we look at why developers considered the initial behavior a
+“bug”, why users on the contrary had come to rely on it, and why
+developers remained blind to it.  A patch to reinstate the initial
+behavior [is being reviewed](https://issues.guix.gnu.org/62584).  This
+post is also an opportunity for us Guix developers to extend our
+apologies to our users whose workflow was disrupted.
+
+# The crux of the matter
+
+Anyone who’s used Guix System in the past has seen this message on the
+console during the boot process:
+
+```
+error in finalization thread: Success
+```
+
+The following picture shows a typical boot screen (with additional
+messages in the same vein):
+
+![Picture of a monitor showing the error/success boot 
message.](/static/blog/img/error-success.jpg)
+
+If you have never seen it before, it may look surprising to you.  Guix
+System users lived with it literally for years; the message became a
+hint that the boot process was, indeed, successful.
+
+A few months ago, a contributor sought to satisfy their curiosity by
+finding the origin of the message.  It did look like a spurious error
+message, after all, and perhaps the right course of action would be to
+address the problem at its root—or so they thought.
+
+As it turns out, the message [originated in
+Guile](https://git.savannah.gnu.org/cgit/guile.git/tree/libguile/finalizers.c#n238?id=df86a2a8c8725ac6244a222d399a5b959101f621)—check
+out the [Guile
+manual](https://www.gnu.org/software/guile/manual/html_node/Foreign-Object-Memory-Management.html)
+if you’re curious about finalization.  Investigation revealed two
+things: first, that this `perror` call in Guile was presumably reporting
+the wrong error code—this was
+[fixed](https://git.savannah.gnu.org/cgit/guile.git/commit/?id=1fbe89f7bdbf35408ec2df8de755c2f1323016a6).
+
+The second error—the core of the problem—lied in Guix System itself.
+Remember that, in its quest of memory safety™, statelessness, and fun,
+Guix System does it all in Guile Scheme—well, except for the kernel (for
+now).  As soon as Linux has booted, Guix System spawns Guile to run boot
+code that’s in its [*initial RAM
+disk*](https://guix.gnu.org/manual/en/html_node/Initial-RAM-Disk.html)
+(“initrd”).  Right before executing
+[`shepherd`](https://gnu.org/software/shepherd), its service manager, as
+PID 1, the initrd code would carelessly close all the file descriptors
+above 2 to make sure they do not leak into PID 1.  The problem—you
+guessed it—is that one of them was the now-famous file descriptor of the
+finalization thread’s pipe; the finalization thread would quickly notice
+and boom!
+
+```
+error in finalization thread: Success
+```
+
+Our intrepid developers thought: “hey, we found it! Let’s fix it!”.  And
+so [they
+did](https://git.savannah.gnu.org/cgit/guix.git/commit/?id=168a7933c0e138dc7061a3f0dc96871e16da5c5f).
+
+# Breaking user workflows
+
+This could have been the end of the story, but there’s more to it than
+software.  As Xkcd [famously captured](https://xkcd.com/1172/), this was
+bound to break someone’s workflow.  Indeed, had developers paid more
+attention to what users had to say, they would have *known* that the
+status quo was preferable.
+
+For some time now, users had shown that they held the error/success
+message deep in their heart.  The message was seen on the blackboard at
+the [Ten Years of Guix](https://10years.guix.gnu.org) celebration, as a
+motto, as a rallying cry, spontaneously put on display:
+
+![Picture of a blackboard with the famous message (by Julien Lepiller, under 
CC0).](https://10years.guix.gnu.org/static/images/photos/roptat-finalization-thread.jpg)
+
+What’s more, a fellow NixOS hacker and Guix enthusiast, beguiled by this
+powerful message, [designed](/static/blog/img/error-success-sticker.svg)
+stickers and brought them to FOSDEM in February 2023:
+
+![Picture of error/success stickers (under 
CC0).](/static/blog/img/error-success-sticker-pile.jpg)
+
+The sticker design builds upon the “test pilot” graphics made by Luis
+Felipe for the [1.3.0
+release](https://guix.gnu.org/en/blog/2021/gnu-guix-1.3.0-released/).
+The test pilot has a bug on its helmet.  In a way, the drawing and error
+message both represent, metaphorically, a core tenet of Guix as a
+project; just like Haskell is *avoiding success at all costs*, Guix
+seems trapped in an *error/success* quantum state.
+
+Had it gone too far?  Was calling it a “bug” the demonstration of the
+arrogance of developers detached from the reality of the community?
+
+# Fixing our mistakes
+
+Those who installed Guix System starting from [version
+1.4.0](https://guix.gnu.org/en/blog/2022/gnu-guix-1.4.0-released/) have
+been missing out on the error/success boot message.  The patch
+[submitted today](https://issues.guix.gnu.org/62584) finally reinstates
+that message.  The review process will determine whether consensus is to
+enable it by default—as part of
+[`%base-service`](https://guix.gnu.org/manual/en/html_node/Base-Services.html#index-_0025base_002dservices-1)—or
+whether to make it optional—after all, we also need to accommodate the
+needs of *new* users who never saw this message.  This will allow users
+to restore their workflow, while also ensuring that those freshly
+printed stickers remain relevant.
+
+This incident had broader consequences in the project.  It led some to
+suggest that we, finally, set up a *request-for-comment* (RFC) kind of
+process that would give all the community a say on important topics—a
+process most large free software projects have developed in one form or
+another.  Such a process could have prevented this incident: instead of
+arrogantly labeling it as a “bug”, developers would have proposed an RFC
+to remove the message; the discussion period, most likely, would have
+made it clear that removal was not a desirable outcome and we would all
+have moved on.
+
+This incident made many users uncomfortable, but we are glad that it is
+now being addressed.  The lessons learned will be beneficial to the
+project for the years to come.
+
+![Picture of a metal bird holding an error/success sticker (under 
CC0).](/static/blog/img/error-success-sticker-bird.jpg)
+
+# Credits
+
+> [Test
+> 
pilot](https://git.savannah.gnu.org/cgit/guix/guix-artwork.git/tree/promotional/)
+> by Luis Felipe distributed under the terms of
+> [CC-BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/);
+> sticker design distributed under
+> [CC-BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/) as
+> well.  Blackboard picture by Julien Lepiller under
+> [CC0](https://creativecommons.org/publicdomain/zero/1.0/); sticker
+> pictures under
+> [CC0](https://creativecommons.org/publicdomain/zero/1.0/).
+>
+> Many thanks to the anonymous sticker provider!
+
+#### About GNU Guix
+
+[GNU Guix](https://guix.gnu.org) is a transactional package manager and
+an advanced distribution of the GNU system that [respects user
+freedom](https://www.gnu.org/distros/free-system-distribution-guidelines.html).
+Guix can be used on top of any system running the Hurd or the Linux
+kernel, or it can be used as a standalone operating system distribution
+for i686, x86_64, ARMv7, AArch64 and POWER9 machines.
+
+In addition to standard package management features, Guix supports
+transactional upgrades and roll-backs, unprivileged package management,
+per-user profiles, and garbage collection.  When used as a standalone
+GNU/Linux distribution, Guix offers a declarative, stateless approach to
+operating system configuration management.  Guix is highly customizable
+and hackable through [Guile](https://www.gnu.org/software/guile)
+programming interfaces and extensions to the
+[Scheme](http://schemers.org) language.
diff --git a/website/static/blog/img/error-success-sticker-bird.jpg 
b/website/static/blog/img/error-success-sticker-bird.jpg
new file mode 100644
index 0000000..062e67f
Binary files /dev/null and 
b/website/static/blog/img/error-success-sticker-bird.jpg differ
diff --git a/website/static/blog/img/error-success-sticker-pile.jpg 
b/website/static/blog/img/error-success-sticker-pile.jpg
new file mode 100644
index 0000000..76cc8ba
Binary files /dev/null and 
b/website/static/blog/img/error-success-sticker-pile.jpg differ
diff --git a/website/static/blog/img/error-success-sticker.svg 
b/website/static/blog/img/error-success-sticker.svg
new file mode 100644
index 0000000..168a9da
--- /dev/null
+++ b/website/static/blog/img/error-success-sticker.svg
@@ -0,0 +1,180 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   width="200mm"
+   height="100mm"
+   viewBox="0 0 200 100"
+   version="1.1"
+   id="svg5"
+   inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)"
+   sodipodi:docname="dessin.svg"
+   inkscape:export-filename="dessin.png"
+   inkscape:export-xdpi="186"
+   inkscape:export-ydpi="186"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:svg="http://www.w3.org/2000/svg";>
+  <sodipodi:namedview
+     id="namedview7"
+     pagecolor="#000000"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:showpageshadow="2"
+     inkscape:pageopacity="0"
+     inkscape:pagecheckerboard="0"
+     inkscape:deskcolor="#d1d1d1"
+     inkscape:document-units="mm"
+     showgrid="false"
+     inkscape:zoom="0.64693624"
+     inkscape:cx="132.93427"
+     inkscape:cy="234.18073"
+     inkscape:window-width="2558"
+     inkscape:window-height="1419"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="layer1" />
+  <defs
+     id="defs2">
+    <rect
+       x="279.6797"
+       y="259.87444"
+       width="98.677064"
+       height="69.2622"
+       id="rect718" />
+  </defs>
+  <g
+     inkscape:label="Calque 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <rect
+       
style="display:inline;fill:#212121;fill-opacity:1;stroke:none;stroke-width:3.10954;stroke-linecap:square;stroke-linejoin:bevel"
+       id="rect1577"
+       width="203.40767"
+       height="102.14787"
+       x="-1.2893435"
+       y="-1.400196" />
+    <path
+       id="path533"
+       
style="display:inline;fill:#ffd556;fill-opacity:1;stroke:none;stroke-width:0.143021"
+       d="m -235.62,38.636433 v 80.464327 h 129.02235 V 50.439709 L 
-116.7827,38.636433 Z m 119.90246,0 9.11989,10.568867 v -1.23441 l 
-8.05468,-9.334457 z m 2.13038,0 6.98951,8.100047 v -1.234411 l 
-5.9243,-6.865636 z m 2.13039,0 4.85912,5.631228 v -1.234412 l 
-3.79394,-4.396816 z m 2.13038,0 2.72874,3.162407 v -3.162407 z"
+       sodipodi:nodetypes="ccccccccccccccccccccccccc" />
+    <g
+       inkscape:groupmode="layer"
+       id="layer2"
+       inkscape:label="Pilot"
+       style="display:inline"
+       transform="matrix(0.9850615,0,0,1,-1073.3616,753.87088)">
+      <g
+         id="g575"
+         
transform="matrix(0.19816209,0.19520184,-0.20116722,0.19816209,998.40802,-639.79918)">
+        <path
+           id="path539"
+           
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.999999px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           d="m 2039.0449,-3285.7539 -2.8476,4.2578 -7.3262,16.416 
-0.4434,10.4688 3.1485,16.6133 3.5683,27.0918 -1.4375,15.1582 -3.3164,21.9296 
-4.7695,11.7891 -11.3711,3.7305 -14.0352,0.1797 -12.5253,-4.7129 -7.711,-7.5528 
-6.959,-7.1211 -8.7011,-4.4296 -12.7715,-6.3692 -8.9727,-6.0488 -8.6367,-8.1367 
-5.3965,-3.8653 -8.5078,-4.3515 -2.7852,2.9687 -1.4941,11.8633 -5.3887,4.8223 
-9.916,-13.7852 -5.3222,-14.8203 -5.9239,-8.3242 -10.6054,-8.4336 
-6.7872,-7.7715 -3.0078,-6.8359 -4.205,-1.5 [...]
+           transform="scale(0.26458333)"
+           
sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccscccccsccccccccccccccccccccccccccccccccccccccccccccccscccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccsccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
 [...]
+        <path
+           
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.298401px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           d="m 585.43869,-856.98908 c 0,0 -9.82,-26.8955 -43.3239,-37.8759 
0,0 27.3354,6.9287 43.3239,37.8759 z"
+           id="path541" />
+        <path
+           
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.244396"
+           d="m 588.54019,-858.88608 c -0.9849,0 -2.8007,0.3745 
-3.6684,-0.1192 -0.8211,-0.4663 -2.2726,-0.9855 -2.7589,-1.7335 -2.3513,-0.8678 
-2.6174,-2.9808 -3.8785,-4.415 -0.8182,-3.0094 -1.6696,-3.0194 -1.6696,-3.0194 
-3.4876,0.1136 -5.0493,4.3938 -4.2819,7.3221 0.5134,1.9598 3.3018,1.717 
4.1034,3.676 1.0632,2.5897 -0.7111,5.1988 0,7.8193 0.5426,1.9916 3.1479,1.5848 
4.1988,3.423 1.6375,2.8704 0.8139,6.1844 1.9894,9.0424 0.7723,1.8751 
4.5189,4.7829 6.457,2.7888 1.4468,-1.4899 -0.6404 [...]
+           id="path543"
+           
sodipodi:nodetypes="cccccscccccccccccccccccccccccccscccccscccsssccccsccsccsssccscscssssscsssssccssssscssscssscccccsssccccccccsscccsccccccccccsccccscccccccccccscsccccccccccccscccccccccccccccccccccccccsssssssscccccccscscccccccscccccccccscccccscccsccccccccccccsccscccccccccccsscccccccsscsssscccccsccscccsccsscsssssssssscccccccccccssccccccccccccscccccccccccscsscscccccccssssssccccccccccccccccccccccccccccccccccccccccssscccsccccccscscccccccccsccccsccccccscscccccccccccscssssscccccssccss
 [...]
+        <circle
+           
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.03039;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="circle545"
+           cx="485.74554"
+           cy="-710.36145"
+           r="44.517548" />
+        <circle
+           
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="circle547"
+           cx="485.74554"
+           cy="-710.36145"
+           r="26.652601" />
+        <path
+           inkscape:connector-curvature="0"
+           
style="font-style:normal;font-weight:bold;font-size:144px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans
 
Bold';letter-spacing:0px;word-spacing:0px;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.198258;stroke-opacity:1"
+           d="m 500.19629,-717.97978 c -0.3175,0.5803 -0.6399,1.0527 
-0.9683,1.4249 -0.3175,0.3614 -0.6677,0.6504 -1.0509,0.8693 -0.3722,0.2081 
-0.7946,0.3581 -1.2654,0.4457 -0.4599,0.077 -0.9879,0.1156 -1.59,0.1155 
-0.4442,0 -0.8435,-0.023 -1.194,-0.066 0,0 0,0 -0.01,0 -0.044,0 -0.1362,-0.018 
-0.231,-0.033 -0.1,-0.016 -0.2021,-0.031 -0.3632,-0.061 -2.9522,-0.5463 
-3.9313,1.5032 -4.1429,2.0687 -0.033,0.089 -0.049,0.143 -0.049,0.143 l 
-3.5872,10.0024 -2.2007,3.7413 h 4.396 c 1.8054,-4.019 [...]
+           id="path549" />
+        <path
+           
style="font-style:normal;font-weight:bold;font-size:144px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans
 
Bold';letter-spacing:0px;word-spacing:0px;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.198258;stroke-opacity:1"
+           d="m 500.19619,-717.97938 c -0.3175,0.5803 -0.6399,1.0521 
-0.9683,1.4243 -0.3175,0.3613 -0.6678,0.6505 -1.051,0.8694 -0.092,0.052 
-0.1872,0.099 -0.2855,0.1432 -10e-4,0 0,0 0,0 -0.1238,0.087 -0.283,0.1617 
-0.4987,0.2131 -2.4881,0.5924 -4.1829,2.8098 -4.342,3.0243 0.072,-0.059 
0.1448,-0.1078 0.2173,-0.1449 0.011,-0.01 0.022,-0.011 0.032,-0.016 0,0 0,0 0,0 
0.013,-0.01 0.026,-0.011 0.038,-0.016 0.4023,0.056 0.9009,0.083 1.5019,0.083 
0.7883,0 1.4941,-0.095 2.1182,-0.2924 0.6241,-0. [...]
+           id="path551"
+           inkscape:connector-curvature="0" />
+        <path
+           inkscape:connector-curvature="0"
+           
style="font-style:normal;font-weight:bold;font-size:144px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans
 
Bold';letter-spacing:0px;word-spacing:0px;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.198258;stroke-opacity:1"
+           d="m 471.29499,-717.97978 c 0.3175,0.5803 0.6398,1.0527 
0.9683,1.4249 0.3175,0.3614 0.6677,0.6504 1.0508,0.8693 0.3723,0.2081 
0.7947,0.3581 1.2655,0.4457 0.4598,0.077 0.9878,0.1156 1.59,0.1155 0.4442,0 
0.8434,-0.023 1.1939,-0.066 10e-4,0 0,0 0.01,0 0.044,0 0.1362,-0.018 
0.2311,-0.033 0.1,-0.016 0.2021,-0.031 0.3631,-0.061 2.9523,-0.5463 
3.9314,1.5032 4.1429,2.0687 0.033,0.089 0.05,0.143 0.05,0.143 l 3.5872,10.0024 
2.2008,3.7413 h -4.396 c -1.8055,-4.0199 -3.5413,-12.4135 -5.39 [...]
+           id="path553" />
+        <path
+           
style="font-style:normal;font-weight:bold;font-size:144px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans
 
Bold';letter-spacing:0px;word-spacing:0px;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.198258;stroke-opacity:1"
+           d="m 471.29529,-717.97938 -1.0016,0.3733 c 0.1163,0.2874 
0.2348,0.5624 0.3555,0.8243 0.024,0.052 0.048,0.1038 0.072,0.1551 1e-4,0 
-10e-5,0 0,0 0.024,0.051 0.049,0.1016 0.073,0.1517 0.01,0.017 0.017,0.033 
0.025,0.05 0.041,0.083 0.081,0.1659 0.1227,0.2463 2e-4,0 6e-4,0 7e-4,0 
0.025,0.048 0.049,0.095 0.074,0.1423 0.1001,0.1893 0.2015,0.3703 0.3043,0.543 
0.026,0.043 0.051,0.085 0.077,0.127 0.01,0.016 0.02,0.033 0.03,0.049 
0.016,0.026 0.033,0.051 0.049,0.077 0.025,0.041 0.05,0.082  [...]
+           id="path555"
+           inkscape:connector-curvature="0" />
+        <path
+           id="path557"
+           
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.684014;stroke-opacity:1"
+           d="m 485.74439,-748.24909 a 3.010934,3.010934 0 0 0 -3.0096,3.01117 
3.010934,3.010934 0 0 0 3.0107,3.01067 3.010934,3.010934 0 0 0 3.0111,-3.01067 
3.010934,3.010934 0 0 0 -3.0111,-3.01117 z m 0,70.37864 a 3.010934,3.010934 0 0 
0 -3.0096,3.01119 3.010934,3.010934 0 0 0 3.0107,3.01067 3.010934,3.010934 0 0 
0 3.0111,-3.01067 3.010934,3.010934 0 0 0 -3.0111,-3.01119 z" />
+        <path
+           id="path559"
+           
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.684014;stroke-opacity:1"
+           d="m 447.54549,-710.04758 a 3.010934,3.010934 0 0 0 3.0111,3.0097 
3.010934,3.010934 0 0 0 3.0107,-3.0107 3.010934,3.010934 0 0 0 -3.0107,-3.0112 
3.010934,3.010934 0 0 0 -3.0111,3.0112 3.010934,3.010934 0 0 0 0,10e-4 z m 
70.3786,0 a 3.010934,3.010934 0 0 0 3.0112,3.0097 3.010934,3.010934 0 0 0 
3.0107,-3.0107 3.010934,3.010934 0 0 0 -3.0107,-3.0112 3.010934,3.010934 0 0 0 
-3.0112,3.0112 3.010934,3.010934 0 0 0 0,10e-4 z" />
+        <ellipse
+           
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.8;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="ellipse561"
+           cx="840.3125"
+           cy="-266.11917"
+           rx="9.9423237"
+           ry="3.0328312"
+           transform="rotate(-45)" />
+        <path
+           
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.298401px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           d="m 588.95739,-857.63068 c 0,0 17.8989,-30.6347 56.9848,-28.4602 
0,0 -33.6483,-3.1684 -56.9848,28.4602 z"
+           id="path563" />
+        <path
+           
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           d="m 583.86459,-838.24348 c 0.1179,0.2721 -0.1017,0.5661 
-0.058,0.8252 0.1212,0.7269 0.3742,0.4511 -0.1118,1.0992 -0.024,0.032 
-0.057,0.1555 -0.117,0.1754 -0.2153,0.072 -0.6045,0.06 -0.7016,0.3508 
-0.081,0.243 0.062,0.5641 0,0.8129 -0.021,0.085 -0.096,0.1493 -0.1169,0.2339 
-0.046,0.1829 -0.01,0.2461 -0.1131,0.3508 -0.037,0.037 0.013,0.2366 0,0.2885 
-0.013,0.053 -0.1383,0.2552 -0.1754,0.2923 0,0 -0.1081,0 -0.1132,0 -0.032,0.016 
0.012,0.073 0,0.1073 -0.014,0.041 -0.039,0.078 -0. [...]
+           id="path565" />
+        <path
+           
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           d="m 585.33569,-837.33478 c 0.08,0.6833 0.1754,1.3409 0.1754,2.0289 
0,0.1559 0.038,0.3165 0,0.4677 -0.057,0.2276 -0.1177,0.1786 -0.1754,0.3508 
-0.012,0.037 0.017,0.081 0,0.1154 -0.096,0.1917 -0.013,-0.027 -0.1155,0.058 
-0.029,0.024 0.017,0.1694 0,0.2042 -0.063,0.1264 -0.1438,0.1927 -0.1754,0.3508 
-0.059,0.2933 0,0.6729 0,0.9674 0,0.056 -0.034,0.124 0,0.1689 0.062,0.081 
0.098,0.4393 0.098,0.584"
+           id="path567" />
+        <path
+           
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           d="m 586.87329,-835.90498 c 0.01,0.1145 -0.01,0.2338 0.025,0.3436 
0.031,0.099 0.2402,0.3134 0.2917,0.3508 0.061,0.044 0.082,0.2624 0.1061,0.3234 
0.084,0.2097 0.2688,0.3661 0.3507,0.5847 0.1978,0.5274 -0.075,1.1538 
0.058,1.6859 0.073,0.2917 0.5112,0.7318 0.5112,1.0429"
+           id="path569" />
+        <path
+           
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           d="m 587.90989,-837.26218 c -0.091,0.4855 0.089,0.8683 
0.2338,1.3043 0.01,0.018 -0.017,0.05 0,0.059 0.034,0.017 0.088,-0.027 0.1155,0 
0.027,0.028 -0.022,0.084 0,0.1169 0.1341,0.2012 0.9255,0.5034 1.1693,0.5847 
0.052,0.017 0.065,0.1 0.1169,0.1169 0.2355,0.079 0.5252,-0.018 0.7546,0.059 
0.1161,0.039 0.5641,0.6036 0.6216,0.7474 0.064,0.1591 0.1655,0.2139 
0.2339,0.3508 0.096,0.1925 -0.045,0.5257 0.1124,0.6792 0.031,0.03 0.093,0.022 
0.1169,0.058 0.01,0.01 0.1169,0.4572 0.1169,0.2401"
+           id="path571" />
+        <path
+           
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           d="m 572.24507,-617.59994 0.26658,-2.26373 -1.43007,0.9015 
0.0275,0.35293 z"
+           id="path573"
+           sodipodi:nodetypes="ccccc" />
+      </g>
+    </g>
+    <text
+       xml:space="preserve"
+       
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8.81944px;line-height:1.25;font-family:'Noto
 Mono';-inkscape-font-specification:'Noto 
Mono';text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;stroke-width:0.264583"
+       x="10.853891"
+       y="23.187361"
+       id="text134"><tspan
+         sodipodi:role="line"
+         
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:8.81944px;font-family:sans-serif;-inkscape-font-specification:'sans-serif
 
Bold';text-align:start;text-anchor:start;fill:#ffd556;fill-opacity:1;stroke-width:0.264583"
+         x="10.853891"
+         y="23.187361"
+         id="tspan136">error in finalization thread: Success</tspan></text>
+    <text
+       xml:space="preserve"
+       transform="scale(0.26458333)"
+       id="text716"
+       
style="font-size:40px;line-height:1.25;font-family:Helvetica;-inkscape-font-specification:Helvetica;letter-spacing:0px;word-spacing:0px;white-space:pre;shape-inside:url(#rect718);display:inline"
 />
+  </g>
+</svg>
diff --git a/website/static/blog/img/error-success.jpg 
b/website/static/blog/img/error-success.jpg
new file mode 100644
index 0000000..c74c2ce
Binary files /dev/null and b/website/static/blog/img/error-success.jpg differ



reply via email to

[Prev in Thread] Current Thread [Next in Thread]