aboutsummaryrefslogtreecommitdiff
path: root/gsoc/ideas2017.html
blob: 16f75a389b11a2e1376ae969a7fa4c241124dca7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
<!doctype html>
<html>
<head>
<title>Ideas List - Google Summer of Code 2017</title>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:400italic,400bold,400,700" type="text/css"/>
<link rel="stylesheet" href="../style.css" type="text/css"/>
<style>
table {
   width: 100%;
}
td { 
   padding: 5px;
   background-color: white;
   border: 1px solid #c1cce4;
}
h3 {
   border-bottom: solid 2px black;
}
h4 {
   font-style: italic;
   border-bottom: solid 1px #c0c0c0;
}
</style>
</head>
<body>
   <div class="content">
      <div class="header"><div class="header_inner"><div class="user_panel"><a href="https://github.com/keplerproject/luarocks/wiki/Download">Install</a> &middot; <a href="https://github.com/keplerproject/luarocks/wiki/Documentation">Docs</a> &middot; <a href="https://luarocks.org/login">Log In</a> &middot; <a href="https://luarocks.org/register">Register</a></div><a href="https://luarocks.org/"><img alt="LuaRocks" class="text_logo" src="https://luarocks.org/static/header_luarocks_name.svg"/></a><form method="GET" action="https://luarocks.org/search" class="header_search"><input type="text" placeholder="Search modules or uploaders..." name="q"/></form></div></div>
      <div class="index_page">
         <div class="main_column">

<h2>Ideas List - Google Summer of Code 2017</h2>

<ul>
<li><a href="#social">
Social enhancements for LuaRocks.org
</a></li>
<li><a href="#orgsite">
Module management enhancements for LuaRocks.org
</a></li>
<li><a href="#gui">
A GUI front-end for LuaRocks
</a></li>
<li><a href="#typedlua">
Port LuaRocks to Typed Lua and make it a library
</a></li>
<li><a href="#distro">
Auto-building distro packages
</a></li>
<li><a href="#static">
Static build support for LuaRocks
</a></li>
<li><a href="#upgrade">
A command to upgrade all installed rocks
</a></li>
</ul>

<div class="project">
<h3 id="social">Social enhancements for LuaRocks.org</h3>
<h4>Brief explanation</h4>

<p>
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:
</p>

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

<h4>Knowledge prerequisites</h4>
<ul>
<li>Lua</li>
<li>web development</li>
<li>LuaRocks experience is a plus</li>
<li>MoonScript is a plus (but can be learned for the project)</li>
</ul>

<h4>Skill level</h4>
<p>medium</p>

<h4>Mentor</h4>
<p>
<a href="http://leafo.net/">Leaf Corcoran</a> - <a href="mailto:leafot@gmail.com">leafot@gmail.com</a>
</p>
</div>

<div class="project">
<h3 id="orgsite">Module management enhancements for LuaRocks.org</h3>
<h4>Brief explanation</h4>

<p>
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:
</p>

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

<h4>Knowledge prerequisites</h4>
<ul>
<li>Lua</li>
<li>web development</li>
<li>JSON and REST APIs</li>
<li>LuaRocks experience is a plus</li>
<li>MoonScript is a plus (but can be learned for the project!)</li>
<li>experience with the GitHub API would be a major plus</li>
</ul>

<h4>Skill level</h4>
<p>medium</p>

<h4>Mentor</h4>
<p>
<a href="http://leafo.net/">Leaf Corcoran</a> - <a href="mailto:leafot@gmail.com">leafot@gmail.com</a>
</p>
</div>

<div class="project">
<h3 id="gui">A GUI front-end for LuaRocks</h3>
<h4>Brief explanation</h4>

<p>
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.)
</p>

<p>
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.
</p>

<h4>Knowledge prerequisites</h4>
<ul>
<li>Lua</li>
<li>LuaRocks experience is a plus</li>
<li>some previous experience with UI APIs is preferred</li>
</ul>

<h4>Skill level</h4>
<p>easy/medium</p>

<h4>Mentor</h4>
<p>
<a href="http://thijsschreijer.nl/">Thijs Schreijer</a> - <a href="mailto:thijs@thijsschreijer.nl">thijs@thijsschreijer.nl</a>
</p>
</div>

<div class="project">
<h3 id="typedlua">Port LuaRocks to Typed Lua and make it a library</h3>
<h4>Brief explanation</h4>

<p>
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.
</p>

<h4>Knowledge prerequisites</h4>
<ul>
<li>Lua</li>
<li>LuaRocks experience is recommended</li>
</ul>

<h4>Skill level</h4>
<p>medium/hard</p>

<h4>Mentor</h4>
<p>
<a href="http://hisham.hm/">Hisham Muhammad</a> - <a href="mailto:h@hisham.hm">h@hisham.hm</a>
</p>
</div>

<div class="project">
<h3 id="distro">Auto-building distro packages</h3>
<h4>Brief explanation</h4>

<p>
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
<a href="https://wiki.archlinux.org/index.php/ArchHaskell">ArchHaskell</a>.
</p>

<h4>Knowledge prerequisites</h4>
<ul>
<li>Lua</li>
<li>distro packaging</li>
<li>LuaRocks is a plus</li>
</ul>

<h4>Skill level</h4>
<p>medium</p>

<h4>Mentor</h4>
<p>
<a href="http://catwell.info/">Pierre Chapuis</a> - <a href="mailto:catwell@archlinux.us">catwell@archlinux.us</a>
</p>
</div>

<div class="project">
<h3 id="static">Static build support for LuaRocks</h3>
<h4>Brief explanation</h4>

<p>
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.
</p>

<h4>Knowledge prerequisites</h4>
<ul>
<li>Lua</li>
<li>LuaRocks experience is recommended</li>
</ul>

<h4>Skill level</h4>
<p>medium</p>

<h4>Mentor</h4>
<p>
<a href="http://daurnimator.com/">Daurnimator</a> - <a href="mailto:quae@daurnimator.com">quae@daurnimator.com</a>
</p>
</div>

<div class="project">
<h3 id="upgrade">A command to upgrade all installed rocks</h3>
<h4>Brief explanation</h4>

<p>
LuaRocks users have wanted <code>luarocks upgrade</code> for a long
time, but implementing it is not trivial and will involve trade-offs (see
<a href="https://github.com/luarocks/luarocks/issues/22">the GitHub issue</a>
and
<a href="http://article.gmane.org/gmane.comp.lang.lua.general/112719">this
email</a>). 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.</p>

<h4>Knowledge prerequisites</h4>
<ul>
<li>Lua</li>
<li>LuaRocks experience is recommended</li>
</ul>

<h4>Skill level</h4>
<p>medium</p>

<h4>Mentor</h4>
<p>
<a href="http://catwell.info/">Pierre Chapuis</a> - <a href="mailto:catwell@archlinux.us">catwell@archlinux.us</a>
</p>
</div>

         </div>
      </div>
   </div>
</body>
</html>