Contributor's story
The previous posts were about the Gtk-rs
libraries and issues we encountered. We decided to change the theme a bit by adding posts about Gtk-rs
’ most valuable fortune: its contributors. I’ll start myself and tell you my story inside the Gtk-rs
organization.
Story of imperio
At first, the Gtk-rs
organization didn’t exist. This was a project to provide GTK+
bindings for Rust
, started by jeremyletang. I joined him to speed up the development.
At the time, Rust
wasn’t even at its first stable version and breaking changes happened quite often. So beside working on the library itself, we had to make sure it still built with the current Rust
version. As the project continued to grow, it became more and more difficult to add new features and update the project’s code at the same time (the biggest issue was updating all of the old signals system).
At the beginnings, I mostly worked on adding new objects and structures to provide as much content as I could. It helped me understand the structure of this project quietly. Then, I created new macros to make the creation of new structures which inherit from GtkWidget
easier.
Rust 1.0 release
The 1.0 release of Rust
finally came out. Now I guess all of you must be thinking: “nice! Now you don’t have to update your code anymore, so no more problems!”. Well, this brought a new issue: some features we used in our project weren’t available on the stable
channel. So we had to keep an “actual” version with missing functionalities to allow people with stable versions of Rust
to use gtk
. It was (at least for me!) a big fight between adding new stuff and finding a workaround to keep stable rustc
happy.
Around that time, we created new repositories to split out other library bindings (cairo
, glib
, gdk
and pango
) and then, I published their crates on crates.io. The little gtk
project (which wasn’t little anymore at all) just made a very big step by becoming available via Rust’s native packaging system, a single dependency line in Cargo.toml
away! It was for me a way to “officialize” our project.
#Big changes
The Gtk-rs
organization was created shortly after this (it was called rust-gnome
).
Around this time jeremyletang left the project and I became the only one in charge of the project. I finished my work on pango
and gdk
bindings and started to add the biggest missing part of this project: documentation!
As the time passed, gkoz joined me and we created (unnofficialy) the core team for Gtk-rs
(congrats to him \o/). He started a big refactoring of all the code structure. We decided then to create a website to let the users of Gtk-rs
follow changes (and breaking changes) more easily. For some reasons detailed in a previous post, the organization’s name was changed from rust-gnome
to Gtk-rs
.
To conclude this post, I must say that I never thought I would take the leadership of this project and that I would get the help of such amazing people (contributors and users!). For me it was a way to learn a new part of Rust
and I hope I’ll be able to continue contributing to it a lot in the future!