Skip to content

Ideas List for GSoC 2018

Shozo Hatta edited this page Jan 30, 2018 · 9 revisions

Improve our REPL (read eval print loop)

We already have a REPL similar to Ruby's irb. But there're some bugs to fix. We also would like to implement some more features, like auto-completion, syntax highlight etc.

Required Skill:

  • Basic knowledge about Golang

You can get how Goby's REPL igb works by reading manual-test script

Mentor: @st0012, @hachi8833

Library management

We have a plan to implement a basic mechanism to support third-party libraries. For this, we need a sophisticated tool for managing libraries, like bundler for Ruby, npm for nodejs. But implementing the basic require mechanism has not finished and we should determine the scope of the task first. Whether we include features for dependency resolving and version control depends on our development progress.

Required Skill:

  • Basic knowledge about Golang
  • Knowing how Ruby's require method works.

Mentor: @st0012

Profiling Memory Allocation

We should optimize Goby's memory handling for production use. Before we start any internal optimizations, we need a feature for profiling memory usage first. This can help us do the right decision for language design by profiling every minimum viable implementations. Fortunately, Golang has a builtin pprof tool that can help us on it, so what we just need is to figure out how we include it into Goby and to build an easy-to-use interface.

Required Skill:

  • Intermediate knowledge about Golang.
  • Having experience about using pprof is a big plus

Mentor: @st0012, @saveriomiroddi

Global Constant/Method Cache

Depending on the number of superclasses of current object, looking-up a method or a constant can be time-consuming. To solve this problem, Goby should equip a mechanism to cache the lookup results, which can help skip the lookup process and use the cached method/constant directly when they are called next time.

Required Skill:

  • Basic knowledge about Golang
  • Knowing how does Ruby perform constant/method lookup (highly recommend Ruby under a microscope for this topic)

Mentor: @st0012, @Maxwell-Alexius

Improving the Plugin System

Goby has an awesome feature called Plugin System, which lets users include Golang programs dynamically. Our demo site uses this for interacting with Postgresql by just calling Golang's packages.

And our next goal is to provide a way to integrate Go packages easily with Goby programs, without setting up Go's environment manually.

Required Skill:

  • Intermediate knowledge about Golang and its compiler
  • Being familiar with linux environment, because Plugin System can only work on linux for now

Mentor: @st0012

Adding logging/job queue features

We need some extensible and sophisticated logging/job queue features for providing and managing web services. For this, first we need a native Time or Timezone class to handle time representations. A Prototype of Time class.

Required Skill:

  • Basic knowledge about Golang
  • Having experience using Ruby's Time and Date class

Mentor: @st0012, @hachi8833, @saveriomiroddi

Adding a class to access Goby's parser

It would be great and helpful if Goby has a parser class like Ruby's Ripper class. The parser can help inspect Goby programs' behaviors by Rubyists or other language creators.

Required Skill:

  • Basic knowledge about Golang
  • Knowing how a LALR parser works

Mentor: @st0012, @Maxwell-Alexius


Propose your idea!

Goby is still very young and there's plenty of features you can add or improve. We look forward to see your ideas that can make Goby better!