Ideas List - Google Summer of Code 2017

Social enhancements for LuaRocks.org

Brief explanation

The LuaRocks.org website is where Lua users and developers find and upload Lua modules. Users can currently create accounts for uploading modules and also for "following" modules, which produces notifications in the top bar when other users follow your modules. There's a lot more, however, that we could add to improve the site experience, such as:

  • add the distinction betwen "starring"/following modules, like GitHub
  • add the ability to follow developers
  • show a feed of updates to modules you star
  • send an email digest for modules you follow
  • and other ideas!

Knowledge prerequisites

  • Lua
  • web development
  • LuaRocks experience is a plus
  • MoonScript is a plus (but can be learned for the project)

Skill level

medium

Mentor

Leaf Corcoran - leafot@gmail.com

Module management enhancements for LuaRocks.org

Brief explanation

The LuaRocks.org website is where Lua users and developers find and upload Lua modules. Users can currently create accounts for uploading modules, and each module becomes attached to one user account. For organizations with multiple developers, this can prove cumbersome. Also, the only ways to upload modules are via the command-line tool or via the web interface. This project aims to improve LuaRocks.org support for organizations, via two main goals:

  • Organization accounts/modules shared across accounts, showing module stats on module pages
  • Better GitHub integration: automatically creating new module versions with webhook, automatically syncing readme, showing module popularity on GitHub

Knowledge prerequisites

  • Lua
  • web development
  • JSON and REST APIs
  • LuaRocks experience is a plus
  • MoonScript is a plus (but can be learned for the project!)
  • experience with the GitHub API would be a major plus

Skill level

medium

Mentor

Leaf Corcoran - leafot@gmail.com

A GUI front-end for LuaRocks

Brief explanation

A cross-platform GUI desktop front-end for LuaRocks. It should allow users to search for rocks, list installed rocks, install and remove them, view rock details, etc. There are some options on portable Lua toolkits for developing this front-end (WxLua, TekUI, QtLua, etc.)

A possible side-result of this project would be to define an API for interfacing the LuaRocks backend. The LuaRocks backend is currently accessible via the command-line tool, but an API is desired. By making a API wrapper around the command-line tool, this project could provide good insights into a design for an UI-agnostic API.

Knowledge prerequisites

  • Lua
  • LuaRocks experience is a plus
  • some previous experience with UI APIs is preferred

Skill level

easy/medium

Mentor

Thijs Schreijer - thijs@thijsschreijer.nl

Port LuaRocks to Typed Lua and make it a library

Brief explanation

LuaRocks is currently not a reentrant library. We would like to make usable as a library, embeddable into applications. This would require a good deal of refactoring, and encapsulating all state into a main instance object. Porting the code base to Typed Lua would be a great opportunity to make the codebase reentrant. Since Typed Lua generates plain Lua, it would not become a new dependency for LuaRocks, but instead it would be used as a tool in the refactoring process.

Knowledge prerequisites

  • Lua
  • LuaRocks experience is recommended

Skill level

medium/hard

Mentor

Hisham Muhammad - h@hisham.hm

Auto-building distro packages

Brief explanation

Making LuaRocks able to generate packages for Linux distributions. We could have a build farm which builds all rocks for, say, Arch Linux, and then a repository of binary rocks that can be installed with Pacman, similar to ArchHaskell.

Knowledge prerequisites

  • Lua
  • distro packaging
  • LuaRocks is a plus

Skill level

medium

Mentor

Pierre Chapuis - catwell@archlinux.us

Static build support for LuaRocks

Brief explanation

LuaRocks currently builds Lua modules as dynamic libraries. The aim of this project is to add support for building static libraries. The local manifest format needs to be extended. Also, research if it would be possible to make that work beyond the LuaRocks 'builtin' rockspec mode (including a possible extension of the rockspec format). Another possibility is adding a command that builds a custom interpreter bundling a set of rocks statically. Other targets benefitting from static builds could be embedded systems: research how to improve LuaRocks support for cross-compiling.

Knowledge prerequisites

  • Lua
  • LuaRocks experience is recommended

Skill level

medium

Mentor

Daurnimator - quae@daurnimator.com

A command to upgrade all installed rocks

Brief explanation

LuaRocks users have wanted luarocks upgrade for a long time, but implementing it is not trivial and will involve trade-offs (see the GitHub issue and this email). The goal of this project is to identify those trade-offs clearly, document them, come to a decision regarding their resolution, and finally implement the command.

Knowledge prerequisites

  • Lua
  • LuaRocks experience is recommended

Skill level

medium

Mentor

Pierre Chapuis - catwell@archlinux.us