This repository is a list of Ruby projects I (Victor Shepelev aka @zverok) am willing to mentor, and invite anybody willing to be mentored and create a usable opensource project in process.
You will:
- work on one of the projects started or invented by me,
- following the plan we'll make together,
- through GitHub issues and PRs,
- with extensive and regular code reviews, advice and hints.
In a process, you'll have practical experience of writing good code, structuring it, optimizing, testing and documenting, as well as an overall experience of real-world gem development participation — and something to add to your CV as a project you've created, maintained or participated in.
Projects are described by GitHub issues of this repository.
Note: The project list is not a "collaborative pool of ideas," it is a list of projects I feel to be involved in.
Commercial programming since 2003, Ruby programming since 2005. Ruby Association Grant-2015, several maintained gems, one of core maintainer of SciRuby organization, creator of Molybdenum project. Several years of mentoring experience, both offline and online, paid, volunteer and opensource, including Google Summer of Code. Several international meetups and conferences participation, including RubyKaigi-2017.
In other words, I am a passionate and experienced developer and mentor, and I have a lot of opensource projects and ideas and not enough time to implement them all. The way of this proposal, I see a possibility of interesting things to be done and thrive.
- Have some experience with Ruby and enjoy it;
- Have some (at least theoretical) understanding of testing with RSpec;
- Ready to learn by yourself and question everything you learn;
- Find yourself deeply interested in one of the projects listed above;
- Going to spend time on a project on a regular basis.
The proposal is not for you if you:
- know nothing about Ruby or programming, but "really want to learn";
- already know your way of doing things, structuring code, writing tests (or avoid them), and just poking around;
- don't give a damn about particular project, just want a free mentor;
- will "try to do something" eventually, probably next month, or next year.
I believe that the only way to learn is being ready to learn, take a lot of responsibility on yourself and be excited but what you are about to do.
- You apply to some of the projects (by writing to the corresponding issue in this GitHub repository), and we discuss the project, your vision of it and your expectation of mentorship for some time;
- Note: for an already started project, you don't need to apply through issues, you can start immediately from GitHub PR!
- We start (or continue) to work on project, communicating mostly through GitHub issues and PRs, and (for bigger vision) through email or Gitter (my contacts are at the bottom of this README);
- I provide you with extensive PR reviews, discussion of further steps, new GitHub issues, coding advice and so on;
- Collaboration is stopped when you are bored or when the project is ready (for smaller projects).
- I am willing to accept as many mentees as there would be joining, I have a lot of experience on multitasking while mentoring.
- If several people are starting to work on the same project, it should work as a regular OSS collaboration: the more visible you presence is (communication in Gitter, project issues and so on), the more probable that everything will work well. But just because you said "OK, I'll do something in a few weeks" 3 months ago, the project is not "booked" by you exclusively.
- Conflicts happen. Please don't be agitated if there are two competing pull requests in the same project, implementing the same feature, and yours is not the one "winning." It is not about winning; it is about understanding the things and trying to do the best.
- For already existing projects, the work continues in their GitHub repos, you are listed in "Authors" section after the very first non-trivial PR, and listed in it as close to top as your contribution allows (including "main author/maintainer").
- I'll add you as a repo collaborator after the several PRs and an established rhythm of collaboration, and never drop from collaborators after this (unless some serious misbehavior).
- For future project, I require them to be done in molybdenum-99 GitHub organization; you'll be project's collaborator and listed as its primary author from the very beginning, I give credit as "initial idea and mentorship" (or whatever it would be in future);
- The exceptions are projects labeled "site", they should go to separate GitHub orgs to have separate GitHub Pages sites;
- My initial "idea ownership" and authority for projects evolution's "big picture" is preserved forever (but nobody can stop you from forking project and make a turn in its development on your own if our visions will seriously diverge).
My current employer (VerbIT.ai) doesn't plan to use any of the above tools (though I hope to integrate yard-junk
in our CI somewhere in future, but as an in-house volunteer effort). So, it is not a call to "do for free the work I am paid for".
- It is not a grant program (for your work, I'll give you nothing... except for my time, attention and skill as a mentor)
- It is not a direct opportunity to find a work (I am not representing anybody except myself, and my current employer is pretty small company, so no, I am not "selecting the bests to hire them")
- It is not an official internship (I can't fill any papers for your university)
- It is not a scam (I swear)
Start by exploring and discussing project issues!
Contact me at [email protected], Gitter, Skype zver_ok
or Telegram zverok
. Of all chatting apps, Gitter is preferred (because it is integrated with GitHub, highlights code, and have group-per-repository chats).
- If it is some of established projects, and you just want to send a PR or discuss a feature, always feel free to!
- If it is just project idea, and you find it nice, and will just start to work on it by yourself, nobody can stop you, of course. But it would be nice if you could notify me if you'll make a large progress on the idea, for not duplicating our efforts.