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