Ideas for bachelors thesis in OCaml

Hello OCaml discuss!

I am a third year student of computer science and mathematics. As I have to write my bachelors thesis this year I decided that I want my thesis to be oriented around OCaml. I would realy love to do some bigger (and relevant) project in OCaml. So far, my ideas are mostly related to building “something” on top of MirageOS (a OCaml unikernel), that will allow me to harness both the power of OCaml and MirageOS. I approached some of the professors with the idea of testing ocaml based microservices running in Mirage instead of docker, but they were not as impressed, stating that MirageOS and unikernels have been outpreformed by smaller VM’s such as firecracker.

On the MirageOS it states, that it can be used in edge computng, embedded and IoT, yet I do not know what I would write about in this regard.

Areas where I would feel comfortable trying to research/implement something with OCaml include, but not limited to:) cloud computing, microservices, network stack, control systems (I have done some development on control systems for particle accalerators), Mathemathical finance, systems programing such as Assemblers, Debuggers,… Distributed Systems and Math (yet I struggle to find an application here).

If anyone has a good idea for a bachelors worthy application/thesis, or just about any ide that pops in to your mind reading this, I would be super happy :slight_smile:

3 Likes

interesting statement, are there any publications supporting this assertion? The “firecracker micro-vm” implemented in Rust?

I understand the networking stacks(e.g. tcp/ip) and mirage-runtime are written using Lwt to handle concurrency, and wonder if modernizing the codebase with “Effects“ would optimize performance.

I’ve been reading about the “caqti” api for relational db access and it looks like “caqti-mirage” is unexplored and might be worth visiting.

Thanks I will check this out. Caqti seems interesting.

There’s quite some development to use effects, take a look at GitHub - robur-coop/mnet: A TCP/IP implementation in pure OCaml for the network stack (and GitHub - robur-coop/mkernel for the base implementation using solo5 or unikraft). A full unikernel using effects is GitHub - dinosaure/immuable: A simple unikernel to serve files via HTTP in full OCaml

I guess one question is what you’d like to do, use a database with MirageOS (but store the data elsewhere, i.e. using a TCP/TLS connection)? Or provide a database server with MirageOS. Both are interesting endeavors,

For the latter, there has as well be a start at GitHub - Profpatsch/mirage-sqlite-vfs-test: Test of how to builld an sqlite VFS that we can use as a mirageos block storage – trying to get sqlite3 to run as part of MirageOS. I find this path very interesting.

I suggest to pick an area of interest - being it database, network/security protocols, … – and go deep into that area. We can also have a synchronous chat if you like. (Please note that I’m mostly into protocols these days, with a focus on performance and deployability (security).) Reach out by email if you like.

4 Likes

Maybe talk to @avsm who is always pushing the envelope.

2 Likes

Thanks!

On the database side, do you think mby implementing somethink like a database connection pool (or some intermediate level between application and database could be a viable solution?

I am not so good at security details, so i was thinking about focusing more on how mirage scales well, and how users can benefit from its quick boot up time, so I am looking more in to this direction for my research.

Thanks for the references, but I’m still wondering what the plans are about the generic mirage package installed via opam.

I’ve been exploring libraries to use for an upcoming hackathon. I think uniform query parameter handling and templating are interesting design constraints to explore!