As GSoC final evaluations have been started, this post will summarize the project experience and the tasks I worked on. I will also provide the links to the code and the challenges I faced.
You can see all the commits merged during GSoC here
Features Implemented in TSP during GSoC
Migrating to Bootstrap 3
TSP was built on Bootstrap 2 but as there has been a significant amount of changes in the latest version of Bootstrap it was necessary to migrate to the latest framework, so writing a new theme does not imply using an outdated CSS framework. This was my first task in which I updated TSP to Bootstrap 3.
You can visit my previous post for more information here.
To check the Pull Request for this task click here.
Challenges: In TSP user can choose between two themes the default bootstrap theme and bento theme. So I had to make the changes while keeping both the themes in mind and also had to update the bento theme to work on Bootstrap 3, but I think it was worth as Bento theme looks pretty nice you check it out here.
There was no Style Guide defined for TSP. And as a style guide is very important for an open source project. We added Rubocop, a static code analyzer which enforce many of the guidelines outlined in the Ruby Style Guide.
Pull Request: #55
With this feature tsp members and event organizers can easily notify the event participants based on their travel requests state. You can choose the participants easily based on the states like submitted, incomplete, approved,etc and don’t need to select each user one by one. Also you can use the markdown syntax in the email body.
Blog Post having details for this feature: Event Email.
To test and preview your emails you can use letter opener web which has been added in TSP. Letter opener web can be used on heroku also.
Check out the Pull Request here #73.
Now the TSP members and the event organizers can view the list of participants for an event with their details and request status. This makes it easy for event organizers to keep track of the participants.
Challenges: To complete this task we needed to fetch the users details participating in the event but fetching them directly could have void the user’s privacy. So to maintain their privacy we needed to fetch records based on the logged in user’s ability but users doesn’t had the ability to view some user’s details. So to accomplish this we fetched the requests accessible by the person and then the user details with the help of the request.
Implementation of Event Organizer concept
Now in TSP you can create event organizers for an event. An event organizer can view the participants list and notify them with the help of the event email feature. An event organizer can be easily added or removed by a tsp member.
Blog Post having more details for this feature Event Organizer.
Challenges: We wanted to have the event organizer as a local role to an event. So we had to create a many to many association between the user & the event and use nested resources in the ability file to accomplish this. It was a little tricky but it was fun playing with cancancan. For more details regarding the implementation you can check out the above mentioned blog post.
We have created a demo version of travel support program on heroku. There you can try out the above mentioned features and many more. Have a look at them here: http://travel-support.herokuapp.com/ .
The experience of working in openSUSE during Google Summer of Code was full of learning and joy. I learned about better code practices, Test Driven Development and a lot about Ruby on Rails.
I will continue working on Open Source projects and of course on TSP. I would also recommend other people to work on open source projects as they help you a lot in developing your skills and also you get to meet some really amazing people. If you want to work on Open Source projects you can have a look at some great projects provided by openSUSE.