aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/docs/TL_DR.html
diff options
context:
space:
mode:
authoronefang2022-02-17 16:19:46 +1000
committeronefang2022-02-17 16:19:46 +1000
commit63bb65e89b3af3c8ef95eed583654e4f8eae142b (patch)
tree85f9e6d8ec74527ed6a696740e49493384782c13 /docs/TL_DR.html
parentExperimental IAR unpacker. (diff)
downloadSledjHamr-63bb65e89b3af3c8ef95eed583654e4f8eae142b.zip
SledjHamr-63bb65e89b3af3c8ef95eed583654e4f8eae142b.tar.gz
SledjHamr-63bb65e89b3af3c8ef95eed583654e4f8eae142b.tar.bz2
SledjHamr-63bb65e89b3af3c8ef95eed583654e4f8eae142b.tar.xz
Add TL_DR web page, and update git sources.
Diffstat (limited to 'docs/TL_DR.html')
-rw-r--r--docs/TL_DR.html160
1 files changed, 160 insertions, 0 deletions
diff --git a/docs/TL_DR.html b/docs/TL_DR.html
new file mode 100644
index 0000000..79d9040
--- /dev/null
+++ b/docs/TL_DR.html
@@ -0,0 +1,160 @@
1<html>
2<title>SledjHamr TL;DR</title>
3<head>
4</head>
5<body bgcolor="black" text="white" alink="red" link="blue" vlink="purple">
6Welcome to a summary of SledjHamr and SledjChisl!
7
8<p>I have a theory that the quality of an open source project is
9inversely proportional to the number of forks. &nbsp; OpenSim and SL / OS
10viewers have a lot of forks. &nbsp; I have one to. &nbsp; lol</p>
11
12<ul>
13<li><a href="#SledjHamr">SledjHamr</a> &nbsp; Overall project.</li>
14<li><a href="#SledjChisl">SledjChisl</a> &nbsp; How we get there.</li>
15<li><a href="#history">The story so far.</a></li>
16<li><a href="#onefang">onefang</a> &nbsp; Semi-retired computer programmer and sysadmin with a great breadth and depth of experience.</li>
17</ul>
18
19<h1><a id="#SledjHamr">SledjHamr</a> &nbsp; Overall project.</h1>
20
21<p><a href="index.html">SledjHamr</a> is a rewrite from scratch of Second Life (SL) / OpenSim (OS)
22style 3D online virtual world client / server. &nbsp; It also intends to
23hook up with other virtual worlds and standards.</p>
24
25<p>Simulating a world requires lots and lots and lots and lots of little
26details. &nbsp; So rewriting OpenSim server and a viewer from scratch will take
27a long time, especially for one person.</p>
28
29<p>The plan is to use OS server and SL clients as crutches, when a bit of
30SledjHamr is ready, it replaces the matching bit in OS/SL.</p>
31
32<p>OpenSim is mostly a bunch of web services that talk to each other and
33the viewers. &nbsp; There is also some UDP protocols involved. &nbsp; So my plan is
34to move away from the OpenSim web server and allow the use of other web
35servers. &nbsp; I also plan on writing things in C and Lua, with little bits of
36assembler if needed (see below for my claim to a right to be a language
37bigot). &nbsp; I think I can get much better performance using C and LuaJIT,
38and so far my experiments have shown that I do.</p>
39
40<p>The world already has many ways of doing HTTP transfers, with very
41mature things like CDNs, proxies, reverse proxies, etc. &nbsp; So distributing
42assets across the world is a solved problem. &nbsp; So let's use all of that to
43make things better.</p>
44
45<p>OpenSim isn't a complete system though. &nbsp; You need to supply some extra
46bits via another web server to complete the system. &nbsp; So initially I'll
47concentrate on those. &nbsp; Using FCGI as a fast method of hooking C and Lua
48code up to web servers.</p>
49
50<p>A further part of my plan is to replace the non web protocols with
51some binary based protocol. &nbsp; Way more efficient. &nbsp; So there
52is a sub-project called "nails", hammering everything together. &nbsp;
53Nails could also bridge between SledjHamr and other virtual worlds.</p>
54
55<h1><a id="#SledjChisl">SledjChisl</a> &nbsp; How we get there.</h1>
56
57<p>However that's a really huge project, so SledjChisl was invented to
58slowly chisel away at things until it becomes SledjHamr.</p>
59
60<p>So far that's a single executable based on toybox LuaJIT, qlibc, and fcgi2. </p>
61
62<p>SledjChisl is basic server management stuff and a minimal account
63creation system. &nbsp; This rewrote bash scripts I had written earlier
64to do the management things. &nbsp; Start, stop, and get status for the
65grid or individual sims. &nbsp; Create IARs and OARs automatically on a
66weekly basis, including what I call GITAR files, which include git in the
67IAR / OAR files to track changes. &nbsp; GITAR files tend to be roughly
68twice the size of ordinary IAR / OAR, but include enough git tracked
69history to recover things from any given week since it started. &nbsp;
70The weekly backup also has an option to rsync the results somewhere for
71offline backups. &nbsp; Also other things like getting an updated
72OpenSim, building everything, running the tests.</p>
73
74<p>SledjChisl runs everything in tmux. &nbsp; It automates figuring out
75which ports sims use, opening up tmux windows and panes for them. &nbsp;
76Including categories of prioritised sims startup, and figuring out how
77quickly to start them up in parallel so it doesn't over stress the server.
78&nbsp; One of those tmux panes is for the log output of the FCGI based
79account system. &nbsp; So you can, for example, have the first tmux
80window with four panes, one for ROBUST, one for FCGI log, one for your
81Welcome sim, and one for general terminal commands. &nbsp; The next tmux
82window might have your two most important sims other than Welcome. &nbsp;
83Next might be windows for your sea only sims, perhaps 8 panes of those
84per window. &nbsp; Then your smaller sims with four per window. &nbsp;
85Then your big heavy weight sims that might take ten minutes each to start
86up, so you want them to start last.</p>
87
88<p>For those unfamiliar with tmux, it's very similar to screen, but can
89be scripted and has mouse support. &nbsp; For those not familiar with
90screen, it's a utility to allow control of multiple command terminal
91windows in one text command terminal. Both allow sharing with multiple
92people and persistence after you log off.</p>
93
94<h1><a id="#history">The story so far.</a></h1>
95
96<p>About a decade ago I came up with the ideas for SledjHamr, and
97discussed it with some of the members of a grid I was running at the
98time. They helped to flesh some things out and came up with other
99ideas. Though mostly it's been my ideas.</p>
100
101<p>Shortly after that I started writing prototype code using
102Enlightenment Foundation Libraries. &nbsp; I was part of the overall
103Enlightenment project at the time, and very familiar with EFL, so the
104choice was easy. &nbsp; Before I started Samsung had been hiring some of
105the EFL team to use EFL and Enlightenment for their Tizen project.
106&nbsp; Samsung started a skunk works project to add 3D support, but that
107team was forbidden to talk with others. &nbsp; The major basic thing they
108where missing was any sort of avatar animation system. &nbsp; Even though
109I had written some of the subsystems of EFL, their response to my request
110to add that was "you gotta do something for us first". &nbsp; Then things
111got a bit ugly and I left EFL in disgust. &nbsp; So the SledjHamr project
112got put on hold for a while.</p>
113
114<p>The SledjHamr prototype had a little scene, that was described by Lua
115scripts on the server. &nbsp; The viewer had basic camera control. &nbsp;
116I had my own script engine that converted LSL into Lua, than ran it with
117LuaJIT, and supported llDialog(), though it wasn't hooked up to do things
118to the world yet, but it could fire up MLP and run it's menu system.
119&nbsp; That script engine was orders of magnitude faster than OpenSim at
120the time.</p>
121
122<p>During that SledjHamr sabbatical, I was running a grid and tweaking
123OpenSim. &nbsp; The main thing I did was to speed up the script engine a
124bit by removing three things. &nbsp; What I call the Oh Silly Threat
125System got tamed so that not so much useful stuff was forbidden for truly
126over the top paranoid reasons, and the function calls to check for
127permissions that would always be granted got removed. &nbsp; The Second
128Life "this function will sleep for X seconds" stuff was all removed.
129&nbsp; And I found out that the function calls in each function that
130supposedly calculated "lines per second" didn't actually do that, and the
131results never actually went anywhere, so those function calls got removed
132as well. &nbsp; Removing all those useless function calls made the script
133engine noticeably faster, and only caused a problem for one badly written
134script.</p>
135
136<p>Then I started writing SledjChisl. &nbsp; OpenSim + SledjChisl, which
137I call opensim-SC, has been running at least three grids for over a
138year.</p>
139
140<h1><a id="#onefang">onefang</a> &nbsp; Semi-retired computer programmer and sysadmin with a great breadth and depth of experience.</h1>
141
142<p>I have been programming since the late '70s. &nbsp; Working on all
143sorts of things in all sorts of languages. &nbsp; I have used 100
144programming languages in my career, so I think I have earned the right to
145be a language bigot. &nbsp; I can learn a new language in an hour, and be
146expert in it in a week. &nbsp; I'm also great at writing documentation.
147&nbsp; My favourite programming languages are assembler, C, and Lua.
148&nbsp; LuaJIT FTW!</p>
149
150<p>I have been working professionally with OpenSim and SL/OS viewers for
151over a decade. I used to be the maintainer of Imprudence viewer. To
152which I added experimental support for over 20 different mesh formats
153that would download them directly from the web, this was about the time
154LL was adding mesh. &nbsp; I've also been paid to add VR support to a
155corporate OpenSim viewer, before the current crop of VR headsets where
156released to the public (I used an Oculus Rift DK2, the finished project
157used Oculus Rift CV1).</p>
158
159</body>
160</html>