Ferry is a command-line tool rubygem designed for data migrations and manipulation, maintained as an open-source project by the students of Carnegie Mellon's Information Systems department since August 2014. The inspiration for Ferry was kindled from collective internship experiences and from the growing prevalence of big data migration and manipulation challenges that companies, corporations, universities, and organizations face in today's information age. A large thanks in part to CustomInk's Technology Team and their blog articles for advice and guidance during the first semester (Fall 2014) of development.
What can I use Ferry for?
See the ferry_demo for some extra documentation and sample use cases of using Ferry!
Data Migration & Manipulation
Exporting data to and from various file formats (.csv, .yml, .json, .sql etc.)
Importing data to and from various file formats (.csv, .yml, .json, .sql etc.)
Migrating data to and from various 3rd party storage services (Amazon S3, Google Cloud Storage, Rackspace, MS Azure, etc.) and other databases via customizeable scripts using a custom built DSL (see below).
COMING SOON ...
Configurable Migration Scripting; The idea behind this feature is for developers to provide options for arguments in an executable script that contains the configuration and necessary tasks/ actions for the operations of whatever data migration or manipulation they are seeking to carry out. Similar to how capistrano configures their deploy.rb. In order to do this we are investigating and building a custom DSL for Ferry that will allow developers to write simple yet robust code in order to accomplish complex migration and manipulation strategies in just an afternoon of development.
Data Visualization; With inspiration from d3, we are hoping to create functionality that allows developers to deploy informative and visually appealing graphs and documents that can be shared over an internal network to be broadcasted to servers for display either on internal office displays or to URL's ... all from executing a simple command-line statement. We will be making use of d3 for visualizations and are looking for current solutions to this business need and if there are any successful or not-so-successful solutions out there to compete with. We are still considering the possibilities of either integrating this into the DSL or creating a completely separate gem that handles data processing and visualization all on its own.
Community Interaction & Engagement
We are proud to be acquainted with CustomInk Tech for advice on Ferry's developent for code review, user testing, and feature suggestions.
Some of our community goals entail ...
Having Ferry included in a large production product, site, or system that is outside of the Carnegie Mellon Information Systems department.
Have Ferry forked by multiple users once open-sourced.
Continue to have the students of the Carnegie Mellon Information Systems department develop Ferry in the future to provide lasting value and increase visibility of the CMU IS program in the professional and open-source community.
Documentation & Support
The easiest way to contribute and learn how to use Ferry is to fork the code at our GitHub repo and start hacking along with us. Feel free to post issues and PR's as frequently as you like. Detailed documentation about how ferry works can be found in Ferry's readme.