Contributing to the Rust ecosystem for a university project


#1

Hi Rustaceans !

First let me introduce myself: my name is Antoine, I’m 22 and currently a student in my 4th and last year in a French engineering school (which is roughly equivalent to the 2nd year of a Masters degree) and majoring in CS. I have discovered Rust 3 or 4 months ago and fell in love with it.

As part of my curriculum, I chose to do a “big” project during the second semester, and I would be glad if I could use this opportunity to contribute to the Rust ecosystem. Small disclaimer before continuing: I chose to do this project and intend to be involved far more than what is required for a simple school project, this is more like seizing the opportunity of this project to extend the time I could put into a personal project.

OK so now the part where I actually explain why I’m posting: I have no precise idea what I want to do, and I would like to have the community’s opinion before making my mind. There are some requirements:

  • I have to have one of my professor’s approval, since they are all researchers it would be cool if there were some scientific component to the project
  • I have done my share of projects “for myself”, so I would like this project to be useful to more people than just me
  • I do not have a specific theme in mind, on the contrary I am always looking to discover new stuff and am a fairly quick learner

I know this is vague, but I do not really know the specifics for the organisation of the project, I am in the weird place where I can not talk with a professor without any subject but cannot find a subject without talking to a professor.

Here are some ideas I have that could fit the bill:

  • contributing to rulinalg
  • starting a small image processing lib (I am a big OpenCV user, and the mix of love and hate I feel towards this lib makes we want to try to do something better)
  • maybe contributing to the Rust Intellij plugin, but I want to do Rust not Java :confused:, so maybe contributing to the Rust Language Server (I don’t really have any experience in the compiler side of things, but as I said I’m always eager to learn)

Thanks for reading, writing this post already helped me a lot, I’m impatient to hear your opinions!

Regards,

Antoine


#2

Hey Antoine, it’s super cool that you want to contribute to Rust in this way! From your examples it sounds like you want to build something in Rust and are also open improve Rust itself.

Have you seen the Roadmap for 2017? There are also a few posts on the Rust internals forum about that, like this one about HPC. If I had more time, I’d probably try to contribute to Rust’s async I/O story (tokio), or improve IDE stuff. Both are already ongoing efforts; I’m not sure what the end result of your “big project” is supposed to be, but I could imagine several user-story-like goals you could aim for.


If you want to do some IDE-related stuff, I have some semi-abandoned projects you could pick up, like automatically applying compiler suggestions and a pre-RFC for machine readable doc comments.


#3

Hi Antoine,

This is definitively nice from you to use your school project as an occasion to contribute. My main project in Rust could fit your criteria: it is a scientific project; and it will be useful to a lot of researcher!

I am working on Lumol (Github), a molecular simulation engine. Molecular simulation is a set of methods used in theoretical chemistry to simulate the behaviour of chemical systems in computers. In oposition with doing the real world experiment, molecular simulation allow to study hypothetical systems, at a lower cost (this is used a lot by pharmaceutical firms to screen for new drugs), or in conditions that are hard to reach (very high pressures or temperature for example).

There is already a lot of molecular simulation code, but they are all written in C, C++ or Fortran. The goals of lumol are to be:

  • very easy to extend by researcher wanting to use and develop new methods;
  • a reliable code with lot of validation (most of the scientific code is in really bad shape, and that impact the reliability of the published results);
  • versatile, not locking the code for some specific systems (doing only proteins simulations, or only Monte-Carlo method).

If you are interested, pop in by our Gitter chat, or send me an email at luthaf [at] luthaf [dot] fr. I have some improvement ideas that could make a self-contained project for your school project, and I am definitively willing to mentor new contributors.

And as a side bonus, I am also French (doing a PhD in Paris), so you can contact me in French! All the public work must happen in English though.


#4

Hi Antoine,

if you still need a scientific project, I may have one :slight_smile:

In my team we’re developing mathematical models for cancer growth and therapy. These models are based on a set of partial derivative equations (PDE) that are solved by finite volume methods. For that matter the complex part is to solve linear systems. We are currently using C++/Eigen for that. A proof of concept that it can be done in Rust (and taking advantage of multiple cores) would be very nice. Unfortunately I have no time for doing it myself. The project would be for example to code a 3D model in Rust in a realistic setup.

We are located in Bordeaux, France. You can reach me at Olivier.Saut@inria.fr

Best,
Olivier


#5

Hi everyone,

Thank you so much for these answers! All of these projects look amazing, now I feel bad I can only work on one of them :smiley:.

@killercup no I had not seen the Roadmap for 2017, that’s pretty interesting thank you !

  • about the HPC stuff I’m a little scared that this my end up in mostly writing a lot of bindings to existing code, could you tell me a little more about what you feel could be done at my level ? I feel that Collenchyma solves a part of the problem (plus I find the hardware abstraction pretty neat), too bad it’s been abandoned.
  • about the async I/O I’m a little afraid for the science part here, since networking is something I have absolutely no notion of, and I fear no networking professor would want to support me if I have no idea what I’m talking about

@Luthaf while this is not at all the kind of proposition I expected I took a look at the repo and this looks super cool, I’ll talk to my teachers and let you know

@osaut another unexpected proposition, same as @Luthaf I’ll talk with my teachers and let you know

Thanks again!

PS: Yay Frenchies! :fr:


#6

The IntelliJ Rust plugin mainly uses Kotlin, not Java. It’s a language born at JetBrains to compile in a JVM.