ruby-x.github.io/project/history.html
2017-11-28 20:59:01 +02:00

144 lines
6.3 KiB
HTML

---
layout: project
title: RubyX, where it started
---
<div class="row vspace10">
<div class="span12 center">
<h1><span></span></h1>
<p></p>
</div>
</div>
<div class="row ">
<div class="span1"> &nbsp; </div>
<div class="span10">
<p>
Torsten Ruger started this on 10.04.2014 after having read the Blue Book 20 years earlier.
The main ideas were:
</p>
<p>
<b>Mikrokernel</b>: The microkernel idea: anything that can be left out, should, puts a nice upper limit
on things and at the same time provides a great cooking pot for everyone else to try out their ideas.<br/>
Given gems and bundler this also seems an obvious choice. I really hope to see things i hadn't even thought of.
<br/>
<b>Layers represent an interface, not an implementation</b>:
It is said that every problem in computing can be solved by adding another layer of indirection. And so
we have many layers, which, when done right, help us to understand the system. (Read, layers are for us,
not the computer)
But implementing each layer comes with added cost, often unneccessary. Layers can and should be collapsed
in the implementation. Inlining, is a good example of this.
<br/>
<b>Empowerment</b>: I like the openness of ruby. Everyone can do what and how they want. And change other
peoples code in an easy and sensible way. The best ideas survive and even better ones are coming.
Friendly competition as it were, cooperation, independant improvement all make ruby gems better all the time.<br/>
But ruby itself has not benefited from this in the same way (ie by ruby developers), because it is not in ruby.
<br/>
<b>To get it done</b>: I don't know why this has not been done before, it seems so obvious.
The Blue Book influence has left me interested in virtual machines and that hasn't gone away for
so long. So when i bought my raspberry pi and had a real need for speed, the previous ecommerce project
left me feeling that anything could be done. And so i started.
<br/>
</p>
</div>
</div>
<div class="row">
<div class="span12 center">
<h1><span>Thanks</span></h1>
<p>This would not have happened without:</p>
</div>
</div>
<!-- About Us -->
<div class="row">
<div class="tripple">
<h2 class="center">Smalltalk</h2>
<p>
Smalltalk is the mother of OO for me. Adele Goldberg has written down the details of early implementations in the
Blue Book, which made a great impression on me. Having read it, mri code is quite easy to understand. <br/>
Unfortunately Smalltalk was too far ahead of it's time and used the image, the implications of which are still
not understood imho.<br/>
Additional bad luck struck when, in Steven Jobs great heist of the PARC UI, he did not recognise the value of it's
implementation language and so pure OO did not get the same boost as the gui. Instead we got difficult c dialects.
</p>
</div>
<div class="tripple">
<h2 class="center">Ruby and Rails</h2>
<p>
After years of coding Java, Ruby was a very fresh wind. Smalltalk reborn without the funny syntax or image.
Instead of the image we now have gems, git and bundler, so code exchange has never been easier.
</p>
<p>
Rails has sort of given Ruby it's purpose and made it grow from a perl like scripting language to a server programming
environment with all the whistles and bells. Rails maturity and code quality make it not only a joy to use,
but an excellent source for good ruby practises.
</p>
<p>
</p>
</div>
<div class="tripple">
<h2 class="center">Synthesis</h2>
<p>Synthesis</a> is a microkernel OS written
in the 80's by Alexia Massalin which not only proves the validity of the microkernel idea, but also
introduces self modifying code into, of all places, the OS.
</p>
<p>
Alexia has raised questions about the nature of code and ways of programming which are still unresolved.
I regularly reread the thesis and especially the chapter on
<a href="http://valerieaurora.org/synthesis/SynthesisOS/ch4.html"> Quajects</a> in the endeavour to understand what
they are in any higher language terms.
</p>
</div>
</div>
<div class="row">
<div class="span12 center">
<p>Many other steps on the way that have left their mark:</p>
</div>
</div>
<div class="row ">
<div class="span1"> &nbsp; </div>
<div class="span10">
<p>
<b><a href="http://judy.sourceforge.net/">Judy</a></b> has been a major source of inspiration and opened new
ways of thinking about data structures and indeed coding. It has been the basis of two databases i wrote and together
with Synthesis redefined the meaning of speed for me.
</p>
<p>
<b><a href="http://metasm.cr0.org/">Metasm</a></b> finally confirmed what i had suspected for a while.
Namely that you don't need C to generate machine code. Metasm has be been assembling, deassembling and
compiling for several cpu's since 2007, in 100% ruby.
A great feat, and the only reason i don't use it is because it is too big (for me to understand).
</p>
<p>
<b><a href="https://github.com/cyndis/as">As</a></b> ended up being the starting point for the assembly layer.
It was nice and small and produced working ARM code, which is what i wanted, as raspberry is arm.
<b><a href="https://github.com/seattlerb/wilson"> Wilson</a> </b>got assimilated for similar reasons, ie small and
no dependencies.
</p>
<p>
<b><a href="http://kschiess.github.io/parslet/">Parslet</a></b> is great, thanks Kasper!
Parslet makes parsing possible for everyone.
</p>
<p>
<b><a href="http://bundler.io/">Bundler</a></b> just makes you wonder how we managed before.
Thanks to Yahuda, for starting it and Andre for making it fantastic.
</p>
</div>
</div>
<div class="row">
<div class="span12 center">
<p>Lastly, but most importantly there is a siritual side to this too. Actually to anything i have done for at
least 15 years, and i just mention it <a href="spiritual.html">here</a>, thinking that it won't concern
most people which is fine. I don't really want to talk about it, but i can't leave it unsaid either.</p>
</div>
</div>