Tuesday, June 4, 2013
YaST is being rewritten in Ruby; Geeko gets a nosejob
For those not intimately familiar with +SUSE and +openSUSE , it bears mentioning what YaST actually is. YaST is our administrative control panel, composed of numerous modules for Software Management, User Management, Partitioning, and a variety of other tasks. It has interfaces implemented with +GTK , +Qt Project , and a command line interface. The command line interface is particularly nice in the case that you are running a server without a graphical environment, or if for some reason your graphical environment is not working. YaST even powers our very advanced graphical installer, providing us with power and stability during the install process that I haven't seen any other distribution able to replicate. WebYaST brings the power of YaST to remote administration, allowing you to remotely administer your machines from a comfortable web-based graphical interface.
For a couple of years now I've been hearing rumors about YaST being switched to +Ruby from the proprietary YCP language. However, up to recently I haven't stumbled across any substantiating evidence. Fact of the matter now though is that it is happening, and the next openSUSE release may even use the new Ruby based YaST.
Firstly though, why bother? It after all does work, and quite well for that matter. There are numerous reasons why this transition is being made. Firstly, YCP is a language developed explicitly for YaST development, and thus the only people who know it are YaST developers. This cuts out many people who would otherwise be able to contribute to it's continued evolution and maintenance. But why Ruby? Other similar (and inferior in my opinion) tools are usually written in +Python . Largely this is due to the simple fact that SUSE has many proficient Ruby developers. But, Ruby in it's own right is an excellent choice due to it's simplicity, flexibility, and the rapid development it enables. Also, it bears mentioning that WebYaST is based on Ruby, and so this would enable tighter integration and remedy duplication of effort enabling the two implementations to share more code.
The new Ruby implementation is being worked on by SUSE developers in Prague. It appears they are using a code translation scheme as the starting point similar to what +Xamarin used when they rewrote the +Android OS to use Mono. The new code has already been used to effectively install and administer an experimental build of openSUSE, and the developers feel confident of having it ready to begin integration by Milestone 4 of our next openSUSE release 13.1.
Personally I think this is an excellent move, as it would allow us to do more rapid development and innovation around YaST. Also, it would make YaST more accessible to other projects that might be interested in using or adapting parts of it for their own purposes. However, it should come as no surprise that if it does make it into openSUSE 13.1 it may introduce some new bugs that could prove a pain during installation or for new users. Nonetheless, I feel that this is certainly the right direction and will point us towards a promising future of innovation with YaST.