gsoc-2014
[GSoC] Final Report (mparuszewski)
URL for my report on Google Drive: https://docs.google.com/document/d/1KL_aSBfdnwuqZ4zhFrukZplk3v3DMut9_GvX-cUPZMw/edit#
GSoC Final Report
GSoC Result Summary
Original goals
My goal was to create an awesome developer`s website for TimVideos Community. The website had to be generated using Jekyll (Ruby) and pushed to GitHub Pages without usage of GitHub Automatic Generation, because of custom plugins.
What awesome developer`s website had to have?
- Nice, clean and unique design
- Blog part with news aggregated from developers blogs
- Code statistics information (charts from GitHub, auto-generated the People page from GitHub, etc.)
- Issues / ideas filter to merge and filter issues from all TimVideos projects
- Markup interface editor with realistic preview before commit
- Social web integration (Follow us, Like it, etc.)
You can find more information about my original goal in #20 TimVideos Issue and in my GSoC Proposal.
Final outcome
My GSoC project, in my opinion, was very succesful. Website has been created in Jekyll and every commit to the source updates the website in one minute. All website requirements has been fulfiled and final results is available on:
- http://code.timvideos.us - website with 'static' pages, all pages are editable with Prose content editor and any commit pushed to master repository triggers Travis build and website will be updated in 1 minute (you can read more about it here)
- http://planet.timvideos.us - website with 'dynamic' pages, pages from planet are loaded in code.timvideos.us with iframe. Both websites has same layout. Planet website is being updated every 1 hour.
- https://github.com/pinoss/feedbook - simple console application for social media notifications about RSS/Atom updates
I have also extracted reusable part of code (Jekyll plugins) to separate repositories:
- https://github.com/pinoss/jekyll-iframe-generator
- https://github.com/pinoss/jekyll-page-url-tag
- https://github.com/pinoss/jekyll-json-generator
- https://github.com/pinoss/jekyll-category-tag-page-generator
- https://github.com/pinoss/jekyll-opml-generator
- https://github.com/pinoss/jekyll-github-plugins
I have also written acceprance tests for
planet
and getting-started
projects to make sure that website is running and every, future change will not remove old functionalities:Community outcome
My GSoC project was independent from other TimVideos projects. By completion of this project TimVideos community received:
Getting Started Developers Website
New look'n'feel with same, old content. TimVideos Community received updated website with 'static content', with totaly new and fresh design, very easy content editor with real preview and 'dynamic' content loaded from http://planet.timvideos.us. New website with 'static' content, easy content editor, 'dynamic' content loaded from planet and totaly new and fresh design.
I have also created project with acceptance tests for getting-started website (you can find more information about it in README files): https://github.com/pinoss/getting-started-tester.
Planet Website
Part of Getting Started website, contains 'dynamically' generated content fetched from many sources. Planet website has same layout and look'n'feel from Getting Started Website.
Planet website contains:
- Blog with news fetched from developers blog (with planet.rb)
- People page with information fetched from GitHub
- Issues/ideas filter with issues fetched from GitHub
- Code statistics with charts based on GitHub data
- GitHub Activities of TimVideos developers
I have also created project with acceptance tests for planet website (you can find more information about it in README files): https://github.com/pinoss/planet-tester.
Feedbook
Feedbook is a simple console application that allows to notify on IRC, mail and social media (like Twitter and Facebook) about RSS/Atom updates.-- My Feedbook description on RubyGems
During my GSoC project I've created new and fresh application that automates social media updates about new posts. With feedbook you do not need to worry about your social media sites, you can create as many notifications and notifiers as you want. Feedbook is very easy to configure and extend. I will continue working on that application after the end of GSoC. You can find more information about Feedbook on my GitHub: https://github.com/pinoss/feedbook.
Others
I wanted to share all my work and projects not only with people from TimVideos, but with all OpenSource community. That's why I've extracted all reusable Jekyll plugins into separate GitHub projects:
- https://github.com/pinoss/jekyll-iframe-generator
- https://github.com/pinoss/jekyll-page-url-tag
- https://github.com/pinoss/jekyll-json-generator
- https://github.com/pinoss/jekyll-category-tag-page-generator
- https://github.com/pinoss/jekyll-opml-generator
- https://github.com/pinoss/jekyll-github-plugins
All plugins have README files and examples, so it is easy to reuse it on your own blog.
How to replication results
How to test the code?
Every part written in Ruby has tests writen in RSpec 3. If you want to run tests you need to download/clone the repository and run
$ bundle install
and run tests with command
$ bundle exec rspec
In Feedbook, Getting Started Tester and Planet Tester you can also run tests with command:
$ bundle exec rake spec
Getting started website
If you want to test if getting started website is working properly only what you need is to usehttps://github.com/pinoss/getting-started-tester project tests.
In README file you will find information how to run tests.
Planet website
If you want to test if planet website is working properly only what you need is to usehttps://github.com/pinoss/planet-tester project tests.
In README file you will find information how to run tests.
Feedbook
To run tests in Feedbook clone repository and type:
$ bundle exec rake spec
Jekyll plugins
To run tests in Jekyll plugins just clone one of the repositories and type:
$ bundle exec rspec
How to deploy the website and use other gems?
Getting started website
If you want to deploy Getting started website just use instructions from Getting Started Wiki pages:http://github.com/timvideos/getting-started/wiki/How-to-fork-and-run-own-getting-started%3F. If you want to know how to contribute and edit website content, you will find information about it onhttps://github.com/timvideos/getting-started/wiki/From-change-to-generated-website---how-does-it-work%3F.
Planet website
To deploy website just use script from main repository:https://github.com/timvideos/planet/blob/master/_generate.sh. Make sure that you have Ruby 1.9.3, bundler gem and ssh keys in proper places and everything will work automatically. Current cron job with planet generation runs every 1 hour.
What still is left to be done?
All website work is done and is ready for new content. I have not found any bugs on websites. There is some work required in
feedbook
application: add ability to edit post if there was update in RSS/Atom feed.Links for documentation and help
Other services and accounts
During my GSoC project I have created new user on:
- http://monitor.us - for website monitoring
- http://github.com - for user to use GitHub API on Planet website
- http://heroku.com - for Prose editor gatekeeper deployment
- http://gmail.com - to be able to create accounts on pages from above
I will give login and password to Tim.
What did I learn during my GSoC project?
Actually I have learnt a lot, I would like to list it below:
- Jekyll plugins development - I have learnt more Ruby and how to create static website with dynamic content,
- Bash - thanks to Leon and generation bash script finally I have learnt some bash scripting and crontab gotchas.
- Gem - I have created my first, public released gems: Feedbook and Timeloop. I have added nice README files, tests, YARDoc documentation, automated build with Travis, code coverage with Coveralls and lots more
- Writing documentation
- Managing project with Agile software
- English and Open Source community
- and lots more
How to improve experience with new students?
That was awesome experience working with Leon, Tim and whole TimVideos Community, thank you for opportunity to work with you, that was great!
In my opinion TimVideos has awesome work organization: daily snippets, weekly summary posts, weekly meets with mentors, daily contact on IRC, etc. That was great not only for us, developers, but in my opinion it helps TimVideos working with many students and know their progress every day. There is nothing what TimVideos could improve in future!
Thank you again!