-
Notifications
You must be signed in to change notification settings - Fork 333
/
Copy pathoutreachy.yml
459 lines (429 loc) · 24.3 KB
/
outreachy.yml
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
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
rounds:
- name: Summer 2014
projects:
- title: "MirageOS Contributions and Improvements"
description: ""
mentee: "Mindy Preston"
blog: http://www.somerandomidiot.com/blog/2014/08/22/opw-fin/
source: https://github.com/mirage
mentors:
- Richard Mortier
- Anil Madhavapeddy
- title: "MirageOS Cloud API Support"
description: >
MirageOS (see http://xenproject.org/developers/teams/mirage-os.html,
http://www.openmirage.org/) is a type-safe unikernel written in OCaml.
It generates highly specialised "appliance" VMs that run directly
on Xen without requiring an intervening kernel. A MirageOS
application typically runs via several communicating kernel instances
on the cloud. Today these instances are difficult to manage; we would
like to explore strategies for managing these distributed
computations using common public cloud APIs, such as those exposed by
Amazon EC2 and Rackspace.
First we need to create pure OCaml API bindings for (e.g.) EC2 and
Rackspace (purity is needed to ensure portability). These API
bindings can then be used to provide operating-system-level
abstractions to the unikernels. For example, a traditional VM might
hotplug a vCPU; while a MirageOS application would request a "VM create"
using the cloud API and "connect" the new instance to the existing
network. We should be able to spin up 1000s of "CPUs" by using such
APIs in a cluster environment.
As well as helping Xen/Mirage, the public cloud API bindings will be
very useful to other people in other contexts -- a nice side-effect.
mentee: "Jyotsna Prakash"
blog: https://web.archive.org/web/20141112050547/https://1000hippos.wordpress.com/
source: https://github.com/moonlightdrive/ocaml-ec2
mentors:
- David Scott
- Anil Madhavapeddy
- name: Winter 2015
projects:
- title: "NTP Support for MirageOS"
description: ""
mentee: "Kia"
blog: "https://matildah.github.io"
source: https://github.com/softminus/mirage-ntp
mentors:
- Hannes Mehnert
- name: Summer 2016
projects:
- title: "MirageOS"
description: ""
mentee: Gina Marie Maini
blog: https://github.com/wiredsister
source: https://github.com/verbosemode/syslogd-mirage
mentors:
- Mindy Preston
- name: Summer 2019
projects:
- title: "Test the OCaml Compiler With Code Coverage Tools"
description: >
Improving the compiler testing process using code coverage tools.
The core OCaml system has a large test suite, and it would be very
useful to see which parts of the system are tested more actively
and which are not so. Developers will be helped to see where it is
needed to add new tests, and in the process of improving coverage,
it is possible to find unexplored bugs and fix them.
It might help to make OCaml and its libraries more reliable.
mentee: "Oxana Kostikova"
blog: "https://lereenadem.wixsite.com/personal"
source: https://github.com/ocaml/ocaml
mentors:
- Sébastien Hinderer
- Florian Angeletti
- title: "Test the OCaml Compiler With Random Tests and a Reference Interpreter"
description: >
The aim of this project is to extend an existing testcase-generator for the OCaml compiler,
using a reference interpreter (existing or newly developed) to find a lot of bugs in the compiler
and fix as much of them as possible.
mentee: "Ulugbek Abdullaev"
source: https://github.com/ocaml/ocaml
blog: "https://ulugbekna.github.io"
mentors:
- Gabriel Scherer
- Jan Midtgaard
- name: Summer 2020
projects:
- title: "Reducing Global Mutable State in the OCaml Compiler Codebase"
description: ""
mentee: "Anukriti Kumar"
blog: "https://anukriti12.github.io"
source: https://github.com/ocaml/ocaml
mentors:
- Guillaume Bury
- Vincent Laviron
- title: "Structured Output Format for the OCaml Compiler Messages"
description: >
Usually, the output messages from the compiler are a bit more difficult to read for a machine,
hence it's more time consuming to find the warnings, errors, etc., and their origin. By producing
a structured output for compiler messages, other tools can more easily interoperate with them and
provide tooling on top of the messages.
mentee: "Muskan Garg"
source: https://github.com/ocaml/ocaml
blog: "https://medium.com/@muskangarg994/outreachy-101-d285507c54f7"
mentors:
- Florian Angeletti
- name: Summer 2021
projects:
- title: "Create opam Package Search"
description: >
Opam is the source-based package manager for OCaml code. This project comprises of writing a new web
client for rendering output from the opam package database. There is a JSON endpoint on opam.ocaml.org,
which provides information about packages that would provide metadata about the packages. We can extend
this JSON metadata to include all the opam packages (not just the top 10) and use that to power a search
frontend for the website. This may include presenting the data as a GraphQL endpoint with the frontend
querying that endpoint using GraphQL.
mentee: "Odinaka Joy"
blog: "https://www.dinakajoy.com"
source: https://github.com/ocaml/ocaml.org
mentors:
- Sonja Heinze
- Patrick Ferris
- title: "Improve the OCaml.org Website"
description: >
OCaml.org is the main website for OCaml, a functional, typed, high-level programming language. This project
revolves around improving the website on multiple different fronts including: layout, accessibility, and content.
mentee: "Diksha Gupta"
blog: "https://dikshagupta99.wordpress.com/blog/"
source: https://github.com/ocaml/ocaml.org
mentors:
- Isabella Leandersson
- Patrick Ferris
- Gargi Sharma
- title: "Improve the OCaml.org Website"
description: >
OCaml.org is the main website for OCaml, a functional, typed, high-level programming language. This project
revolves around improving the website on multiple different fronts including: layout, accessibility, and content.
mentee: "Shreya kumari Gupta"
source: https://github.com/ocaml/ocaml.org
blog: "https://shreyaswikriti693235797.wordpress.com/blog/"
mentors:
- Isabella Leandersson
- Anil Madhavapeddy
- Patrick Ferris
- Gargi Sharma
- name: Winter 2021
projects:
- title: "Build a Monitoring Dashboard for OCaml.org"
description: >
We currently have no visibility on the performance of the server serving
v3.ocaml.org, which pages are most visited, if errors happen, etc.
To offer some visibility, we can implement a basic monitoring dashboard
that would provide Metrics such as: Memory, CPU, Open file descriptors,
Statistics such as (check if GDPR compliant first!) Requested URIs,
User agents, Language, Logs.
This project consists of mostly two parts: a frontend and a backend.
The backend consists of building a high-level library to collect data
and get statistics on them. The frontend will use this library to display
graphs of the metrics, statistics, and other data we want to collect.
mentee: "Jiae Kam"
source: https://github.com/JiaeK/dream-dashboard
blog: "https://jiaek.wordpress.com"
mentors:
- Thibaut Mattio
- Patrik Keller
video: https://watch.ocaml.org/w/eSSmoyEcPTEXPGAqDtKENX?start=40m53s
- title: "Improve the OCaml Meta-Programming Ecosystem"
description: >
It's common for programming languages to provide some way to meta-program
in order to preprocess code before reaching the last compilation step,
for example, in the form of macros or templates. The OCaml compiler
doesn't provide a full built-in macro system, but the OCaml parser does
provide syntax for preprocessing purposes: attributes and extension points.
We -the OCaml community- also have an official framework, called
`ppxlib`, to write preprocessors -called PPXs- based on that syntax and
integrate them into the compilation process.
However, it's on the OCaml community to write and provide important PPXs
to the OCaml developers. We've noticed that having the most important
PPXs under the official PPX GitHub organisation -next to `ppxlib`- is
helpful. Developers can easily find them; developers can trust them;
and they're well-written and hygienic, so developers can use them as
how-to guides for writing other PPXs. In this project, you'll write
one or some of those official standard PPXs.
mentee: "Aya Sharaf"
source: https://github.com/ocaml-ppx/ppxlib
blog: "https://outreachyxocaml.wordpress.com"
mentors:
- Shon Feder
- Sonja Heinze
- Patrik Keller
video: https://watch.ocaml.org/w/eSSmoyEcPTEXPGAqDtKENX
- title: "Support `.eml` Files in OCaml's VSCode Extension"
description: >
Support `.eml` files in OCaml's VSCode extension
Dream, the OCaml web framework, uses `.eml` files to embed HTML in
OCaml files. At the moment, opening these files in VSCode, with the
official OCaml VSCode extension, will not provide any syntax
highlighting or diagnostics for the `.eml` files, because they are
not supported.
The goal of the project is to add support for the syntax in the
extension itself as a first step, and eventually, add support for
the language in the OCaml Language Server (LSP) as a second step.
source: https://github.com/ocamllabs/vscode-ocaml-platform
mentee: "Sayo Bamigbade"
blog: "https://saysayoblog.wordpress.com"
mentors:
- Thibaut Mattio
- Gargi Sharma
- Patrik Keller
video: https://watch.ocaml.org/w/eSSmoyEcPTEXPGAqDtKENX?start=20m04s
- name: Summer 2022
projects:
- title: "Expand OCaml 5.0 Parallel Benchmark Suite"
description: >
OCaml 5.0 will be live soon! It ships with support for shared-memory parallelism and concurrency
OCaml has missed all these years. This will be accompanied by a robust set of Multicore libraries
useful for parallel programming. The Multicore compiler and libraries are under active development
and will continue to evolve as the OCaml ecosystem moves towards Multicore.
For assessing the impact of new features in the OCaml compiler and Multicore libraries, we have a
set of sequential and parallel benchmarks present in our benchmark suite. While the sequential benchmarks
contain many real-world applications, a wider set of parallel benchmarks would be useful.
This project entails gathering the parallel benchmarks available at various places like
https://github.com/ckoparkar/ocaml-benchmarks and making them available in the benchmark suite.
mentee: "Moazzam Moriani"
blog: "https://moazzammoriani.github.io/mm/"
source: https://github.com/ocaml-bench/sandmark
mentors:
- Sudha Parimala
video: https://watch.ocaml.org/w/vXJtTj3cULRa1bZB5HrecX
- title: "Extend OCaml's GeoJSON Library to Support TopoJSON"
description: >
TopoJSON is an extension to GeoJSON to encode topology. This allows for redundant data
to be removed and file sizes to be greatly reduced. This is often very desirable especially
when working with data in the browser. This project looks to extend `ocaml-geojson` to support TopoJSON.
mentee: "Jay Dev Jha"
blog: "https://jaydevdotcom.wordpress.com/home/"
source: https://github.com/geocaml/ocaml-topojson
mentors:
- Patrick Ferris
video: https://watch.ocaml.org/w/vXJtTj3cULRa1bZB5HrecX?start=42m52s
- name: Winter 2022
projects:
- title: "Implement a Non-Blocking, Streaming Codec for TopoJSON"
description: >
TopoJSON is an extension to GeoJSON to encode topology. This allows for redundant data to be removed and file
sizes to be greatly reduced. This is often very desirable especially when working with data in the browser. In a previous
Outreachy internship, a new OCaml library was implemented to provide an OCaml library for TopoJSON. This project will
build on this adding more functionality to the library and providing a non-blocking, streaming codec version similar
to the geojsone library.
mentee: "Prisca Chidimma Maduka"
source: https://github.com/geocaml/ocaml-topojson
blog: "https://prisca-chidimma.dreamwidth.org"
mentors:
- Patrick Ferris
- Odinaka Joy
video: https://watch.ocaml.org/w/pQSAfZ9kDSsSnr8Bxzocn3
- name: Summer 2023
projects:
- title: "Persistent Storage in MirageOS Unikernels"
description: >
Every operating system, even unikernels, need a way to persist data accross reboots. Having persistent storage capabilities in MirageOS is
definitely a feature to consider including. Developing this includes building libraries for partitioning disks, filesystems for these partitions,
and a simple, intuitive, and programmatic way to interact with these storage devices from a user's view point. This project pushes this vision
one step further by building a library for GPT partitioning.
mentee: "PizieDust"
source: https://github.com/mirage/ocaml-gpt
blog: "https://medium.com/@playersrebirth/building-the-ocaml-gpt-library-650c00b4d72b"
mentors:
- Reynir Björnsson
video: https://watch.ocaml.org/w/kTwq4AVQtRtFuQx9R5cPro
- title: "Improving Error Reporting in Existing PPXLIB-Based PPXs"
description: >
In the past, when 'ppxlib' encountered an exception in a transformation, it stopped the rewriting process, causing the rewriters after to not be processed.
Also multiple errors could not be reported at the same time there were multiple failing rewriters as just the first raising rewriter
will raise, and the compilation process stops there. But now, a raising rewriter does not stop the preceding rewriter from running, allowing multiple
to be raised both in the context-free phase and all the other phases.
mentee: "Abongwa Bonalais"
source: https://github.com/ocaml-ppx/ppxlib
blog: "https://dev.to/burnleydev"
mentors:
- "Paul-Elliot Anglès d’Auriac"
video: https://watch.ocaml.org/w/kTwq4AVQtRtFuQx9R5cPro
- title: "MIDI Over Ethernet With MirageOS"
description: >
MIDI, which stands for Musical Instrument Digital Interface, is a widely used protocol in the world of music and audio technology.
MirageOS is a library operating system that specialises in creating lightweight, secure, and efficient unikernels. Unikernels are highly-specialised,
single-purpose virtual machine images designed for specific applications, and it is written in OCaml.
The project focussed on implementing the rtpMIDI protocol for serialising-deserialising of MIDI messages over Ethernet and implementing use cases like
a publisher-subcriber based server-client model for MIDI messages.
mentee: "Aryan Godara"
source: https://github.com/AryanGodara/rtpmidi
blog: "https://medium.com/@aryangodara_19887"
mentors:
- Claes (rand)
- Sonja Heinze
- Moazzam Moriani
video: https://watch.ocaml.org/w/kTwq4AVQtRtFuQx9R5cPro
- name: Winter 2023
projects:
- title: "Develop a Geometric Creative Coding Library for OCaml"
description: >
OCaml is an industrial-strength functional programming language that's
been around for nearly three decades.
While functional programming itself is not new, it has not dominated
mainstram programming languages. Recently, more mainstram languages
have been adopting concepts from functional programming. Now more than
ever is a good time to have various types of learning material
pertaining to functional programming.
Creative coding is a type of computer programming that focuses on
generating artistic, expressive, and creative outputs using software
and digital tools. It has its applications in places such as game
development. Above all, it is a great pedagogical tool that gives
visual outputs to its readers.
Joy is a tiny creative coding library in Python. Joy builds heavily on
functional programming concepts with very little reference to Python
syntax.
This project aims to implement a geometric creative coding library in
OCaml. It is heavily inspired by Joy. When done, it will serve as a
means to do geometric creative coding in OCaml.
mentee: "Fay Carsons"
source: https://github.com/Sudha247/ocaml-joy
blog: "https://www.faycarsons.xyz/articles#joy"
mentors:
- Sudha Parimala
- Kaustubh M
video: https://watch.ocaml.org/w/b7sv1LQSVZQH6trf4xpwFX?start=3m8s
- title: "Implement a Dark Mode for OCaml.org"
description: >
OCaml is a powerful, statically-typed programming language known for
its efficiency and expressiveness. OCaml.org serves as the central hub
for the OCaml community, providing resources, documentation, and news.
In today's digital age, users expect a more personalised and
comfortable web experience. One such expectation is the availability
of a dark mode, which has become a popular feature on websites and
applications. This project outlines the plan to implement a dark mode
for OCaml.org, enhancing user experience and modernising the platform.
As OCaml continues gaining traction in various industries, it is
essential to modernise its online presence to meet users' expectations
worldwide.
The current styles and colors for light mode already exist so
implementing a dark mode will involve adding contrasting colors and
styles according to the Figma design. It will also consider accessibility
standards and create a button that toggles between the light
and dark mode.
mentee: "Oluwaseun Oyenuga"
source: https://github.com/ocaml-ppx/ppxlib
blog: "https://dev.to/burnleydev"
mentors:
- Sayo Bamigbade
- punchagan
video: https://watch.ocaml.org/w/b7sv1LQSVZQH6trf4xpwFX?start=21m12s
- title: "Improve the GUI Experience for OCaml Users"
description: >
Inspired by [Rust's "Are we GUI yet?"](https://areweguiyet.com/), we want the same work done on the
OCaml GUI libraries. A similar work has been done for the OCaml web
libraries: ["Is OCaml web yet?"](https://ocaml.org/docs/is-ocaml-web-yet) (see the pull request). This work would
allow to tackle "Are we game yet?" in the future.
The survey must take into account the targeted platforms of these
libraries, dependencies, (in)compatibilities, features, last updates,
etc. A list is available in OCamlVerse but is not complete or detailed
enough. Interns having previous knowledge of GUI libraries available
in other languages can also compare them to the equivalent OCaml
libraries.
This work must result in a guide on OCaml.org, similar to the ["Is OCaml web yet?"](https://ocaml.org/docs/is-ocaml-web-yet) page.
mentee: "PrincessIddy"
source: https://github.com/ocaml/ocaml.org
blog: "https://idaranabuk.com"
mentors:
- Guillaume Petiot
- Moazzam Moriani
video: https://watch.ocaml.org/w/b7sv1LQSVZQH6trf4xpwFX?start=34m6s
- name: Summer 2024
projects:
- title: Run OCaml Exercises Everywhere
description: >
At present, several groups of exercises aimed at learning OCaml are available:
https://github.com/gs0510/ofronds
https://github.com/sudha247/learn-ocaml-workshop
https://github.com/kayceesrk/cs3100_f19
https://github.com/ocaml-sf/learn-ocaml, source for: http://ocaml-sf.org/learn-ocaml-public
https://github.com/ocaml.org, source for: https://ocaml.org/exercises
There's probably more. Each set of exercises uses a different execution
framework (such as Jupyter, Learn-OCaml, or custom). They provide a range of user
experiences, from available solutions up to candidate solution testing. The internship's main
goal is to build a common configuration that allows running
each set of exercises in most known setups. This will have the following
benefits:
- Exercises are no longer tied to a specific setup, they can be used in several
- Loose coupling between the learning content and the technical setup
- For learners: Feature parity among exercise sets, self-learning, unique, simple, and quick start
- For teachers: Focus on exercise writing, using the common setup
- For the community: More exercices, easier startup, improved learning curve for OCaml
The goal is not to have all exercises from all the projects in all the setups.
Instead, the goal is to show it is possible to do it. However, this will be
established by porting a meaningful fraction of each exercise group into several
setups or forks, if required.
As a design constraint, we want to provide exercises at https://ocaml.org/. We
consider automatically processing exercise groups to generate the
https://ocaml.org/exercises page. The common setup should allow that, although
it is not part of the internship.
mentee: "Divyanka Chaudhari"
source: https://github.com/divyankachaudhari/ocaml-practice-exercises
mentors:
- Cuihtlauac Alvarado <[email protected]>
- Sayo Bamigbade <[email protected]>
- Shakthi Kannan <[email protected]>
video: https://watch.ocaml.org/w/peT3MdWjS1BYYMbowEJ1gv?start=13m48s
- title: Experimenting with an accessible diff viewer
description: >
Looking at the difference between two files is one of the most common
activity in open source work. It happens when reviewing a pull
request, inspecting a commit and in many other situation.
However, reading such diff is not always easy. Many tools have been to
made to improve the situation and make the diff reviewing easier: The
use of colours to distinguish between added and removed lines
(traditionally green and red), use of a bold face to get the attention
on the modified part of the line at the word level, the display of the
two files side-by-side, ...
However, most of the improvements mentioned above:
- Are made for "generic" diffing of files. Some files may have very long lines and be unsuitable for the current diff output.
- Are restricted to sighted people.
The goal of this project is to develop a visualization tool on top of
Git diff. The visualization tool is a terminal UI, and the main task
of the internship is to make it highly accessible to screen readers.
mentee: "Alan Matthew"
source: https://github.com/panglesd/diffcessible
mentors:
- Paul-Elliot Anglès d'Auriac <[email protected]>
- Jules Aguillon <[email protected]>
video: https://watch.ocaml.org/w/peT3MdWjS1BYYMbowEJ1gv?start=3m07s