Drakevr's Corner

Me in Hashtags: #sysadmin, #programming, #networking, #student, #Linux

My project idea for GSoC 2013

May 24, 2013 - 5 minute read - Comments - gsocplan9golangGoblin

Greetings everyone!

With the GSoC proposal reviews coming to a close and the start of the GSoC period I thought it would be a good idea to make a blog post about my proposed project in order to discuss and clarify a few things.

In this year’s Google Summer of Code(GSoC) I have submitted a proposal with the Plan9 operating system. I have proposed the rewrite of some of plan9’s userland tools in Google’s fairly new Go-lang.

A few words on both from wikipedia.


Plan 9 from Bell Labs is a free software distributed operating system. It was developed primarily for research purposes as the successor to Unix by the Computing Sciences Research Center at Bell Labs between the mid-1980s and 2002. Plan 9 continues to be used and developed by operating system researchers and hobbyists.


Go, otherwise known as Golang, is an open source, compiled, garbage-collected, concurrent system programming language. It was first designed and developed at Google Inc. beginning in September 2007 by Robert Griesemer, Rob Pike, and Ken Thompson.

10 days ago (May 13) it had a new stable release 1.1!

About the project (why?)

“Goblin” will be a portable Golang based userland suite featuring tools and commands one would expect in a basic system that emulates the way a vanilla plan9 system runs. The general idea is to be able to completely replace the plan9 userland with a cross-platform environment that will be highly compatible to vanilla plan9 keeping API compatibility to avoid breakages with existing infra and be as transparent as possible while used in a multitude of systems (be it plan9, linux, unix, etc).


The commands will be written in Go-lang, the details of the structure and licensing will be posted post-acceptance once desided with the mentor along with where the project will be hosted (most probably bitbucket with a mirror in contrib/). It is decided that the project will be written in a mostly “idiomatic Go” way while remaining as portable as possible (with plan9 and linux as the primary project’s targets). Since Go provides many things that were simply not there when writing in C the code won’t be that close (both design and implementation wise thus getting rid of the LPL licensed code while still keeping the LPL manpages since we will have 100% API compatibilty so no point in rewritting them) in other words i will not simply translate the C lines in Go-lang but will rewrite the commands from scratch.


| Commands ||| | :———: | :—: | :—-: | —-: | | ascii | cal | date | diff | | basename | cat | du | ed | | cleanname | cmp | dd | fmt | | getflags | freq | echo | grep | | join | look | ls | mkdir | | mtime | pwd | read | sed | | sleep | seq | sort | split | | strings | tail | tee | test | | touch | tr | troff | uniq |


  • Milestone 1: From acceptance until the coding start period i will be discussing last minute details with the mentor (like the aforementioned final decision on license, hosting and project structure.) Will also discuss the testing procedure for the userland and probably setup a couple virtual machines to replicate the development and later testing environment (either setup of certain services or trivial unit tests (or both for some cases)). At this stage we will also finalize the batches of commands and the order in which i will work on them ranking them by matter of importance.
  • Milestone 2: From coding period start until the end of june i will implement the first batch of trivial commands, effectively starting the real work and testing through the decided way.
  • Milestone 3: From July 1 to 14 i will implement another batch of commands.
  • Milestone 4: From July 16 to mid term evaluation i will have written tests for the implemented commands and run a hybrid system serving werc with my cmds instead of the originals.
  • Milestone 5: From mid term to August 14 i will imlement another set of commands.
  • Milestone 6: From August 16 to Soft Pencils Down date i will dedicate to editors and rest big commands.
  • Milestone 7: From then on i will try to finish what is left or complete make tests more “complete”.

testing & community call

Being a userland suite, testing, a quantifiable metric of success or the involvement/improvement of the plan9 community as a whole is hard to be assesed. To me and most probably my mentor success will be reached if we can run a plan9 environment and assosiated services with it being transparent (as in without noticing that the userland has changed) and be able to also use the same userland on a *nix keeping a consistent feel. When in comes to testing first thoughts were to write a few unit tests for the commands and setup systems with the produces userland instead of their stock one. At key points of development i will publish images with it and also urge the community to test them under their own unique environments and report thoughts, problems and ideas concerning the implemented commands.


Fosscomm 2013 at Athens Fosscomm 2014 at Lamia

comments powered by Disqus