No matter if the issue is big or small, complicated or simple, a bug or a feature - in our Summer of Code the issues have a similar cycle. Team “Code Bears” has some important lessons to share after two and a half months of working on diaspora*.
Pick out the issue
What do we want to achieve? What would we like to learn? Do we want to use skills we already learned or learn something new? Would we actually see the results of our work? We try to ask ourselves all those questions when we approach the long list of issues of diaspora*. Naturally at first we got a lot of direction from our coaches and mentor on this step, but as the summer progressed we had stronger opinions on those questions ourselves.
For instance, the more back-end the better. We just love our RoR programming! Of course we also love it when we learn and understand front-end code, but it’s very clear that we both are more attracted to the back-end side.
Ask the diaspora* community
Diaspora* has a very active community and we had to find out for each issue we chose if it was still available. We got great feedback from the community just by asking about it on the issue page. In some cases it even triggered a long discussion about ways to solve the issue or even the very necessity of a solution. The community is very responsive whenever we have questions or require consultation on our solution. You just gotta love the diaspora* community for their involvement and investment.
Like two Alices in diasporaland, with every issue we embark on an ongoing quest through the intricate and entangled maze called the diaspora source code. It is not your typical MVC app (if that even really exists). Finding the related files to the issue and trying to understand the relationship between them is no less than a superpower one needs to develop.
Gif by [Cineaste](http://cinematografo.tumblr.com/)
Tutorials, Tutorials, Tutorials
In order to understand all the new terms we learn, we spend quite a lot of time watching and reading tutorials (We find Lynda, among others, to be an excellent source for beginners tutorials). Overwhelmed by all this new theory, our coaches are very helpful with mediating and explaining new and complicated concepts.
Connecting theory and practice always resulted in a big confusion. Things on diaspora almost never work according to theory. At first we have an idea of which code to change, which turns out to be wrong and raises an error in some file we don’t know about. This, in turn, leads us back to our diasporaland quest, where we don’t understand the code, or we find a bunch of new terms, or we can’t figure out why this file even exists, and so on.
The most common sentence called out loud during this summer, by students and coaches alike, while looking at the code is: “This is weird”.
Puzzled, with no other choice, we play with the code and see what happens. It became easier to experiment, once we realized we can’t really ruin anything, as long as we work on our local branch.
This trial and error process, combined with a pinch of the theoretical understanding we acquire and alongside coaching sessions, leads us to write code in one file, change code in another, delete code in a third file and refactor code in a fourth one. We made a habit out of checking things in the terminal, rails console and the browser console, inspecting the page and using a debugger.
This is usually when we make our progress with the issue: typing on our keyboards, while feeling clueless, but seeing stuff happening on our screen - BEST. FEELING. EVER! We are quite sure that after the summer the other engineers in our workspace will really miss the squeaking sounds we make when we get something to work.
The git dance
When we think our code is ready, it’s time to open the PR and break out in our git dance. We have a kind of a complicated git setup, with two remote repositories and two local ones, as well as git-flow which requires re-basing and squashing commits. It took us a while to understand what we are doing and dare to push code by ourselves. Common mishaps include, but not limited to, git reset --hard, mysterious branch diversions, merge conflicts and the occasional “mind f***” moment. It was hard to keep our HEAD in the right place.
Therefore, during the first half of SoC, we had a very helpful weekly git session with one of the coaches. Although we still sometime struggle with git, we now have our own git dance and can handle it quite independently.
Image by [@missinformed](https://github.com/git-dance/mactech2016)
Obviously every PR resulted with some corrections and suggestions to improve our code. The beauty of the code review is that it always comes with explanations! We learn a lot just from everyone’s comments. Again, you just gotta love the diaspora* community that understands our state (beginners), reviews our code accordingly and helps us with the fixes.
Eat ice cream
while celebrating merged PR.
What did the story of an issue teach us so far?
Here are some lessons, big and small, we’ve learned from this roller coaster called SoC:
Know your study materials: Find your favorite source for study materials: whether you like to watch, read or practice, whether you prefer it on-line or hard-copy, it is very efficient to have a go-to learning sources.
Mix and match: Using diverse ways of learning, which means a combination of watching, reading, exercising and working on the source code, is the most useful way to tackle new topics. It might seem obvious, but it’s still an important lesson for us.
Master git: Pretty self explanatory, but we can’t stress enough how helpful it was to understand our git-flow.
Keep a notebook: Use the traditional pen and paper to keep track of new terms and concepts, which at first glimpse could be quite overwhelming and even intimidating. It’s also a great place to sketch and doodle.
Try not to be afraid to make mistakes, play with your code, express your opinions and make your own decisions. After 10 weeks of working regularly with 6 coaches, each one with their own way of solving problems, we realized the only thing we have left to do is decide which way works best for us.
Try not to be shy and ask for help and explanations. Experience shows it often works for the best.
Learn from your code reviews: See “Code review” above :).
We are in love with diaspora*: The complexity of the code and the involvement of the community have made this summer very challenging and rewarding. Check the project on github, maybe you would want to contribute as well.
Remember to celebrate: Did you open a PR, did your code get merged, did you just finish refactoring a beautiful piece of code? Great! Celebrate and go eat some ice cream.
This amazing summer would not be amazing without our team and the help of other supportive people:
Our team’s coaches: Chiara, Dani, David, Glauber, Jano and Laura, thank you so much for all you help, time, energy, patience, white-board sessions, source-code sessions, exercises and so much more.
Other coaches: Alon, Andrey, Liron and Remi for helping on specific topics and substituting for coaches on vacation.
Our supervisor: Fanny, thank you for caring for our well-being throughout the summer and always being there for questions.
Our mentor: Lisa, thanks for your availability for questions and tips about diaspora*.
Diaspora community: Thank you for being so responsive and helpful, and for keeping such a pleasant communication with your contributers. Special thanks for members who reviewed patiently and commented on our code- Flaburgan, SuperTux88 and svbergerem.
Our coaching company: thank you SoundCloud for hosting us and suppling us with a brilliant learning and working atmosphere, as well as amazing coffee.
Image by [MyCuteGraphics](http://www.mycutegraphics.com/)
Our third month with the RGSoC is already coming to an end, even though it seems like we’ve just started. We are happy to be a part of such an incredible program that attracts people to open source, and gives them an opportunity to work on important projects and to make a difference.
What tasks we had?
We worked on a social network for Persian LGBTQI+ community – JoopeA Club. It is a safe space for people of any gender and/or sexual orientation. We were trying to make it a safe space for speakers of any language, because right now JClub is only available in Persian, and we were building support for other languages.
What we learned
Vcs: Mercurial, some Git
Challenges we faced
The most difficult part for us was planning our tasks, and then sticking to our plans. It seemed like the obvious thing to take care of, but most of the tasks took more time than we planned for them. We tried to listen to our coach Katya’s advise and to plan 3x more time than seemed right to us for each task, and sometimes it even worked, but sometimes even that amount of time wasn’t enough. But we think we’ve got better with planning by the end of the summer, so we would probably call it a progress.
What we did
For all this time we have added many features to the site:
Add language model
Add language to the language-depended entities: users, pages, posts and communities
Users can choose language on registration form
Users can update their language through settings
Did our own middleware for language dynamically changing
Added many dependencies based on the language status
In addition to working on the project, we had a lot of different fun activities.
For example, Sasha’s hair evolution in one month:
Sasha's hair. Photo taken by other Sasha.
We also have attended many meetings of the local Python community (and other programming communities).
Sasha at the meetup. Photo taken by Mail.ru photographer.
Sasha took a picture of the other Sasha while she was eating we were working on our project at @Google.
We want to say thanks to our dream team
Thank you, our coaches Katya and Ildar, for being there for us whenever we needed help with Django or just moral support. Thanks to Maria, our supervisor, who helped us getting through this summer without troubles of any kind with RGSoC or with our team. And, of course, we would like to thank our mentor Raham for giving us this opportunity to work on the project and for helping us throughout the summer.
And we’d like to thank each other for being awesome teammates and friends to each other. :)
We still have a lot things and features on the site to do, so we would like to continue contributing to the repository after RGSoC ends.
We’re happy and proud of our work this summer, and we feel more confident in programming world now. We’re both convinced that coding will be the right career choice for us, and we’re thankful for the opportunity to prove ourselves as coders.
Our summer is like a song, sometimes we don’t know the lyrics, but we still enjoy the song. 🎶😌 And then we sing the song till we are familiar with the lyrics. Just like that, we were struggling with some concepts but we enjoyed learning and using those concepts in the best way possible. Just like some songs introduce you to new styles and make you in love with them, our RGSoC journey was a starting point to many important things that made us more passionate about what we do. And even though our summer song is going to end soon, we will always enjoy its music.😇 So let’s see how interesting our summer song is so far..
Enjoy the song.. (Image : Her.ie)
How challenging it is?
So far, throughout the RGSoC journey, we’ve faced many challenges.
Finding a place to work – This was not a challenge at all. We asked from APIIT Sri Lanka, because we always knew, universities will never say “No” to the real need of students, and they did say YES.!! So finding the room was a success!
Finding coaches – This was also not a problem since we first contacted coach Kasun, and he helped us to find the other coaches. Thank you Coach Kasun.
Time management – Since one of us has to deal with the lectures and we participate in many tech events, together and as individuals apart from RGSOC, we had to find time to cover the working hours that we are going to miss. Actually we had a great option for that. Working during weekends from home. But that doesn’t mean we didn’t enjoy our weekend. Visiting your friend’s home during weekends, means, Fun!! It is very relaxing and we are enjoying it a lot. And look what we had to deal with.. 😹
Working from home be like.. (Image : Janakshi’s Tab)
Learning new technologies and contributing to Open Source Projects – Since we were new to most of the concepts used in this project, sometimes we were stuck having no clue what to do to solve some problems. So we had to learn them from scratch.
This was us when we were stuck, looking miserable..
The struggle was real.. (Image : Google images)
To overcome situations like above, we helped each other in our learning curve and got lots of help from our coaches, mentor and our supervisor. We worked on many hands-on tutorials together and helped each other to learn fast. So it was not that difficult to complete our learning curve and head back to the implementations.
This is our first Open Source project contribution and summer project. So we also had to learn the best practices of contributing to open source projects.
Learning was our biggest earning!
At first, we were completely new to Git, since it was our very first summer project and we weren’t familiar with most of the git concepts. So during the first two weeks, we learned a lot through tutorials and our coaching sessions. So here we are now, playing with Git in style.. 😎
The Git Bosses.. (Image : giphy.com)
We were selected for the project OpenDF , since both of us were familiar with Java EE and were ready to solve some of the issues with that knowledge. But our mentor had a different plan for us. So we were given the task to develop a file browser using ReactJS. Actually we think it was an opportunity. Because both of us had no clue about developing a react component. Not even a little! But now we can, at least a bit.😅 So our mentor opened a door for us to learn something new.., which we think was a blessing.
Since we were new to the world of ReactJs, we were struggling to figure out how React works, how to work with react boilerplates, how to test react components, what Redux-saga is and etc. So we learned about each of them while working. And we still do. Thanks to our study hours, our mentor and our coaches, now we can work with react components and understand how it works. From each tutorial, each code reviewing session, each coaching session and from each demo session we learned something new and we could improve our work.
Achievements so far..
So far we’ve learned many new things about Git, ReactJS, React boilerplates, Redux-saga, Testing react components, API documentations, Swagger and etc. And the best thing is, we’ve already been able to apply most of these concepts successfully.
We used Trello as a project management tool to manage our tasks while Git as a version control system. And we must mention our cool daily logs 😎. There are 58 daily logs already! 📝✅ They made our work more organized. And so far we’ve developed three react components called SearchView, TreeView and DetailView for our file browser and have got two of them merged already with the FileBrowser container! 😇🎉
So this is how our project work looks like, at the moment.
The motivation you get from RGSoC is remarkable. We used this summer as a great opportunity to network with the tech community in Sri Lanka. As the first step we participated in Business, Law and Technology Conference 2017 – APIIT. And there, Janakshi presented her final year project and was awarded too. Then we participated in few other competitions and achieved some victories too. And these competitions, helped us two, to become a better team. 😇
A well spent day-off. (Image : Meetup app and Kalpani’s phone)
Next comes the competitions and achievements during RGSoC,
Participated in SheCoderess v.1.0, which was a hackathon organized by University of Uwa Wellassa, Sri Lanka. And her team won the first place.
Participated in Hackx competition, which was organized by University of Kelaniya, Sri Lanka to seek innovative ideas. Her team got selected for the final round.
Both of us:
Both of us participated in the Hacktitude competition. This was organized by 99x Technologies. The best thing is, both of us got selected for the final round too. 😇
We got a lot of help from our coaches and our mentor to learn these new things very fast while getting the help from our supervisor to manage the project work. And they were always there when we got stuck with issues in our code or any other thing.
Our mentor, Milindu Kumarage, Thank you, for your boundless patience with our work and for helping us when we were stuck with development issues.
Our supervisor,Ramón Huidobro, Thank you, for being so flexible when we got problems with managing the time, for guiding us to do the right thing and for motivating us.
And, of course, a big thank you to everyone from the Rails Girls Summer of Code Team who made our summer of code experience, a perfect one! Because of you guys we had a great summer which was full of new experiences and awesome memories.
Our coaching sessions. (Image : Kalpani’s phone, Slack and Google hangouts)
After this summer
Thanks to RGSoC, this summer is so far the best summer in our lives. And it has opened doors for, new opportunities, new friends, new way of thinking and etc.
We believe, we can do more after this summer. After RGSoC, we would love to continue our contributions to OpenDF. And we also have a long-term goal to join RGSoC as coaches to help new teams, once we’ve gathered more experience. See how impressed are we from our first RGSoC experience? 😌 And we’ll be giving our support to the tech community more and more in the future, by joining meetups, conferences, competitions and engaging in many more open source projects.
And we must mention about the Conferences! Because we will be flying to Australia in 2018 to participate in RubyConf AU 2018 🛫🇦🇺 and will be participating in DEV DAY 2017 🇱🇰 conference as well. We are so excited! 😁🎉
When everything works fine.. (Image : giphy.com)
Last but not the least, we would like to say thanks to everyone for supporting us throughout this journey. And THANK YOU RGSoC for giving us this awesome opportunity. 😇 Thank you all for letting us have a song-like summer. We will always remember our song of RGSoC.. 😌🎶
We have been working on the Servo project. Working on this project has broadened our programming knowledge especially with Rust. We have interacted with Git a lot. At this point, we cannot say that we are masters with Rust, but we are much better than when we started learning it.
We just can’t believe that RGSoC is coming to an end, time flies.
Learning and Challenges
We were absolutely unfamiliar with Rust, and it has quite a bit of a learning curve. We struggled with Rust. You need a lot of patience when you are learning something new it really takes a lot of time. We faced a lot of problems while understanding the codebase, specification, building environment etc. But yeah, Kudos to our coaches Rahul, Ravi and our Mentor Josh who were always up for the help that was the only thing helped us in keep going. We both believe, we have learned lot of things during last two months and still learning.
Initially, setting up the project on our local machines was easy but we faced the problem when it took more than 1 hr 30 minutes to build. Then our mentor came to rescue us by introducing to a tool called Janitor.
Small Intro to Janitor: The janitor is a web app which uses cloud9. Instead of installing, downloading servo in your machine with lots of instruction you can simply go to janitor where complete development environment is provided for Mozilla firefox, servo etc. You can simply go there, choose servo and start editing in cloud9. Thank you, Jan Keromnes for creating this cool stuff.
Everyday we got introduced to some new concepts of Rust programming language. We are glad that we chose this project because we are really loving Rust.
One more challenge was understanding the specification. The language used in the specification was hard at first to understand but with help of our mentor and coaches, it was easy.
During the review of PR, we got to know that there are few bugs in the specification for which Josh opened the issue.
Matching the standard of code in the servo was tough for both of us at the beginning. But with the suggestion of our coaches and mentor we started writing our own code and then refactored it to match the codebase of servo.
So now we came up with this: We wrote more than 50 logs(more to come).
Number of comments on Github: 122(more to come). We discussed most of the things on IRC but still, we are getting lots of comments and suggestions from different developers. It’s really nice to see that other community members are taking an interest in our project and helping us. That’s why people says open source is filled with cool and awesome people.
Number of Files created + changed: 15.
We both were familiar with Git before starting the project but in last two months believe us, we messed up while rebasing and learned some new things about it. Big thanks to coach Rahul and Ravi(They both were our pillars of strength and support)- you people are awesome.
We Learnt the importance of implementing a peer to peer reviews. Also had lot of meetings with our Supervisor Vaishali. She is awesome and very supportive :)
We are looking forward to contributing more towards the project. Also, we want to thank, RGSOC organizers for facilitating everything and providing us tickets for JSFOO conference. We will look forward to giving back to the community.
It’s incredible how fast the summer has gone! (literally as well in Berlin). Choosing a project wasn’t easy at first. After researching and consulting our coaches, Discourse seemed the right one to go. In the beginning it was an unknown for us and soon we would discover the immensity of it! A big and beautiful deep ocean of Rails and Ember code hanging around the internet in every discuss corner.
Discourse is great to start to contribute to open source. The community in http://meta.discourse.org is willing to help and answer any question you might have. It comes full of information to get to know the project and a Beginner’s tutorial to build something locally and get familiar with their particular way to add plugins to the main app.
Kaja has also written some posts in our blog about what it is to contribute here, and we will try to add up more info to make it a complete guide.
What we built
Our project was based on creating plugins to let the admins back up the information of the forum in some cloud provider.
We didn’t know how long it would take us to build one plugin. I thought we would have one or two at the end of the summer, but we ended up enabling 4 possibilities as well as a base class plugin from which all of them inherit (Google Drive, Nextcloud - Jan from Nextcloud left a message in our repo suggesting it, we were super happy to get it and built it right away! - Box, and a new version of the existent backups to Dropbox by falco). After this, our mentor eviltrout found another cool task to give us: downloading these files directly from Discourse and send an email to the user when it’s done, which we are on the way of building.
We’ve learnt so many things this summer: inheritance, injecting code through class_eval and then through event listeners, git git git, a lot of interaction with APIs, the power of gems, how they’re built, code structure, the “super” keyword, memoization, triggering Jobs, executing stuff in the console, debugging with puts, byebug, Rails.logger.debug, some testing, drawing routes from the outside, Ember basics and the importance of proper documentation!
Absolventa - Kaja, Markus and Jen
We also participated in a RG beginners workshop in August, Kaja is part of the organization and proposed me to coach. It was a great feeling to see so many women (around 40) curious to code and many coaches happy to share their skills.
Our in and offsite coaches for volunteering in this life-changing project. Robin, Markus and Carsten at Absolventa who’ve answered passionately so many questions the moment we’ve asked them, and took the time to guide us and use the whiteboard to explain the universe of Rails. To Rojo, the most active online coach who’ve challenged us with his answers to find the solution by ourselves, chapeau! To Robert, who’s been there in our team events and found some time to help out online too.
photo by Markus @ Absolventa
To Lucas, our super easy going supervisor who had a very positive attitude and pinged us when we were about to miss some organizational stuff, oops! To the Discourse community, Sam and specially eviltrout), our mentor, who’s very clever at the time of dropping hints about the way to go with the requested features and cheered us up when we got stuck on the way.
We have been assigned our first-choice conference GOTO and are looking forward to it :) !
We will both start as junior in different companies and will continue our coding journey. Here’s an all-code-art-creation to not let the inspiration decay after the summer, cheers!
live coding laptop band Benoît and the Mandelbrots with Visuals by cappel:nord