Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[RFC] Mentoring for the LuaRocks ecosystem at Google Summer of Code #962

Closed
hishamhm opened this issue Feb 3, 2019 · 19 comments
Closed

Comments

@hishamhm
Copy link
Member

hishamhm commented Feb 3, 2019

Hello,

The deadline for Google Summer of Code is upon us on February 6. This year, we'll try to do something different, and open the scope of LuaRocks mentoring to the LuaRocks ecosystem at large:

If you would like to mentor a Lua-related project (not necessarily on the LuaRocks codebase itself) that contributes to the LuaRocks ecosystem — i.e. something that leverages LuaRocks or is installable via luarocks install:

  • write a reply here starting with "Mentoring proposal:"
  • write a title and short abstract of your project idea
  • add your name and a contact email address so that the LuaRocks admins may contact you directly

If you would like to be a student it is not time to officially apply yet, but you may also reply here voicing your interest, and also giving suggestions of projects you'd like to be mentored on! You may inspire possible mentors who are out of ideas. :)

What we need now to make a formal application of LuaRocks as an organization to participate in GSoC is a set of mentors and project ideas. We will only apply this year if we get enough critical mass.

I know this all sounds very last-minute, but this was inspired by today's conversation at FOSDEM. And people tend to send last-minute applications, anyway, so let's see if the added urgency gets people moving. :)

@hishamhm
Copy link
Member Author

hishamhm commented Feb 3, 2019

Mentoring proposal: Expression-level coverage analysis for LuaCov

LuaCov only offers line-level coverage analysis, meaning that it can tell if a line executed or not, but not if every possible branch within that line executed. That means, for example, that if a statement like if x and y > 20 then return 10 end is written in a single line, we don't have coverage information if it has been tested both with the condition being true and being false. This is due to a limitation in the Lua debug library, which only gives traces with at most line granularity. The idea of this project is to patch the Lua VM adding expression-level tracing, and then adjusting LuaCov to make it use it.

Mentor: Hisham Muhammad hisham@konghq.com

@hishamhm hishamhm changed the title [RFC] Mentoring for LuaRocks ecosystem at Google Summer of Code [RFC] Mentoring for the LuaRocks ecosystem at Google Summer of Code Feb 3, 2019
@Joycevarg
Copy link

I am a student and I would like to try out this idea.I'm new to Lua but have considerable experience with C and C++.Can I start with the idea before applying for GSoc

Mentoring proposal: Expression-level coverage analysis for LuaCov

LuaCov only offers line-level coverage analysis, meaning that it can tell if a line executed or not, but not if every possible branch within that line executed. That means, for example, that if a statement like if x and y > 20 then return 10 end is written in a single line, we don't have coverage information if it has been tested both with the condition being true and being false. This is due to a limitation in the Lua debug library, which only gives traces with at most line granularity. The idea of this project is to patch the Lua VM adding expression-level tracing, and then adjusting LuaCov to make it use it.

Mentor: Hisham Muhammad hisham@konghq.com

@RussellHaley
Copy link

NetPGP for LuaRocks

Mentoring would be a strong word for what I'm proposing, but I found an MIT licensed pgp library that already has lua bindings: http://netpgp.com. It would sure be nice to see it tested and in the rocks tree. I think it would be a great project for someone that's interested in security and maintaining a code base.

What I'm proposing:

  1. Building the code and the Lua bindings on Linux (I've built it on FreeBSD).
  2. Test the C/command line functionality for completeness (I managed to cause a segfault, but was using it wrong).
  3. Test the Lua Bindings
  4. Build a rock for it
  5. Bonus points for getting it to build on Windows!!!!

I'd be able to provide some insight into what I've already done as well as help test and bounce ideas.

@aryajur
Copy link

aryajur commented Feb 4, 2019

Mentoring Proposal:

Lua graphing library
To create a graphical library possibly using IUP extensible by Lua to allow easy creation of software like a schematic editor/flowchart creator/mind maps/block diagrams in Lua. The library needs to create basic mechanisms and graphic checks to create custom blocks and interconnections and provide an API to use these to create complex interactions like hierarchical schematic editors, etc.
Name: Milind Gupta
Email: milind.gupta@gmail.com

@aryajur
Copy link

aryajur commented Feb 4, 2019

Mentoring Proposal:

Ngspice bindings to Lua
To create Lua bindings to the Ngspice shared library either using C or using an FFI module like Alien.

Name: Milind Gupta
Email: milind.gupta@gmail.com

@Tieske
Copy link
Contributor

Tieske commented Feb 5, 2019

Mentoring proposal:

#788

Name: Thijs Schreijer
Email: thijs@thijsschreijer.nl

@daurnimator
Copy link
Member

Mentoring proposal:

New command line argument handling and auto-completion for luarocks

@hishamhm
Copy link
Member Author

hishamhm commented Feb 6, 2019

@aryajur That is a very interesting proposal! A particular challenge in it is that IUP is not available in LuaRocks, so to use it as a dependency one would have to build and package it in a LuaRocks-compatible way (if IUP is indeed chosen as a dependency).

@Zash
Copy link
Contributor

Zash commented Feb 6, 2019

Mentoring proposal: Prosody plugin installer

Brief explanation: This project would produce an easy way to install and manage plugins for the Prosody server.

Involved Technologies: Lua

Mentor(s):

Deliverables / Expected Results:

  • Commands to install, update, remove and list installed plugins.
  • Scripts to build and manage a repository of plugins.

Milestones:

  • Implement command to install a plugin from a repository
  • Implement commands to remove and update installed plugins
  • Develop scripts to build a plugin repository.

Prosody has hundreds of community modules that provide additional features and extensions to the core server. Currently installing these is a manual process that currently involves a number of manual steps.

The goal of this project would be to produce simple commands to install, update and remove community modules. Rather than inventing a new package manager, the project would ideally build on top of the luarocks project.


@aryajur
Copy link

aryajur commented Feb 6, 2019

@aryajur That is a very interesting proposal! A particular challenge in it is that IUP is not available in LuaRocks, so to use it as a dependency one would have to build and package it in a LuaRocks-compatible way (if IUP is indeed chosen as a dependency).

I was hoping to use the binaries already packaged by IUP and create a rockspec to get the binary for the right system initially. But even without that this library would be something like LuaCrypto or LuaSec that depend on openssl but openssl is not built or installed by their rockspec.

@hishamhm
Copy link
Member Author

hishamhm commented Feb 6, 2019

@aryajur both approaches makes sense!

@hishamhm
Copy link
Member Author

hishamhm commented Feb 6, 2019

@RussellHaley I'm afraid this would not be a good fit for the scope of GSoC, which is a 3-month full-time project. I'm not sure if writing bindings to an existing C lib would fit the bill (of course, it depends a lot on the library -- binding something like Qt is a huge task; some other libraries are clearly not 3 months of work for a dedicated student). @aryajur, same concern about the Ngspice libraries. Do you think binding those libraries fit the expectations of work for a GSoC student? (3 month, full time, with mentoring). If so we can add those to the ideas list.

@hishamhm
Copy link
Member Author

hishamhm commented Feb 6, 2019

Thanks everyone! LuaRocks has just applied to be a participating org in Google Summer of Code 2019! I added most of the projects listed here and attached this link to the application form:

https://luarocks.github.io/luarocks/gsoc/ideas2019.html

That page can still be updated with new projects and mentors added. So I'll leave this issue open here for new entries during the application process!

Cheers, and good luck for us all!

@hishamhm
Copy link
Member Author

hishamhm commented Feb 6, 2019

Can I start with the idea before applying for GSoc

@Joycevarg great that you're interested! I think according to the rules you can start getting acquainted with the project, yes, though the bulk of the work needs to be done during the program. But note we haven't even been accepted to GSoC yet. :)

@aryajur
Copy link

aryajur commented Feb 6, 2019

@aryajur, same concern about the Ngspice libraries. Do you think binding those libraries fit the expectations of work for a GSoC student? (3 month, full time, with mentoring). If so we can add those to the ideas list.

For Nspice bindings the work is actually quite simple since they have a well defined C API for their shared library. All that needs to be done is expose it directly in Lua. I have done a couple of calls in Lua using Alien and it seems perfect for new people because it is so well defined.

@RussellHaley
Copy link

@RussellHaley I'm afraid this would not be a good fit for the scope of GSoC, which is a 3-month full-time project. I'm not sure if writing bindings to an existing C lib would fit the bill (of course, it depends a lot on the library -- binding something like Qt is a huge task; some other libraries are clearly not 3 months of work for a dedicated student). @aryajur, same concern about the Ngspice libraries. Do you think binding those libraries fit the expectations of work for a GSoC student? (3 month, full time, with mentoring). If so we can add those to the ideas list.

Hi, Sorry I was accidentally logged in as a different account when I answered. To repeat:

Hi @hishamhm, the bindings already exist in the source package. The project would be to build, test, write the rockspec and possibly port to Windows (it's netbsd code so very portable). The project would be the process of adding the package to LuaRocks. Besides possibly fixing bugs, there would be little to no C coding involved.

@hishamhm
Copy link
Member Author

hishamhm commented Feb 7, 2019

@aryajur @RussellHaley thanks for the further descriptions. Based on them, it does seem like the size of the ngspice and netpgp projects would be a bit too small for GSoC.

@aryajur
Copy link

aryajur commented Mar 1, 2019

Luarocks was selected in the GSOC 2019. How does this work now? Does a student select a project and contact the mentor directly?

@daurnimator
Copy link
Member

GSoC 2019 is has now started; will close this issue :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants