Join GitHub today
GitHub is home to over 31 million developers working together to host and review code, manage projects, and build software together.Sign up
GSoC 2016: CoCalc Project Ideas
CoCalc is an online web-service. It serves various open-source software applications for mathematical and scientific computing in managed projects, provides documents with real-time collaboration support (SageMath, Jupyter, LaTeX, Markdown, ...), course management utilities, chat, and much more.
Make an account here and check it out!
All GSoC projects require knowledge about modern web-technologies and its underlying technological stack.
In particular, the CoCalc is comprised of:
- back-end: Linux, Node.js, Python, RethinkDB
- userland: Scientific Python stack, SageMath, Jupyter, hundreds of libraries, ...
- front-end: CoffeeScript, React.js, websocket, jQuery, ...
Do these buzzwords sound familiar, are you excited to work this summer with us on a project, that will have immediate impact on all our users? We hope so!
Our source code: https://github.com/sagemathinc/cocalc
Below are our project ideas. Together with the template, they should guide you in writing your application. We are equally happy with a well thought through idea of your own or a detailed write up of one of these projects.
For more ideas: check out our open tickets.
Scientific work is increasingly data-centric. So far, CoCalc only supports text documents and interactive worksheets. The goal of this project is to help scientists at their daily work for entering data, modify existing data tables, and cleaning up datasets.
- The basic structure is to write an interactive real-time synchronized editor for typed columnar data.
- This should be based on top of the already existing infrastructure of the CoCalc webapp.
- Regrading storage, as a first approximation a file-based approach is sufficient, e.g. CSV, HDF5 or SQLITE.
- Once a minimal working prototype is functional, extend this by UI elements to filter, aggregate data, show plots of the data, convert it, annotate entries (rows), etc.
skills: python (scientific stack), coffeescript, react.js
CoCalc runs hundreds of projects and thousands of application instances for thousands of daily active users simultaneously across the globe. Monitoring and optimizing resource usage is key in operating the site. The goal is to keep the administrative work in check, while the service scales up.
Aspects for this project:
- collect and record machine and project metrics over time in the database.
- analyze recorded metrics: give operators real-time full situation awareness -- while also providing context by aggregating past data (daily/weekly patterns, statistics)
- make predictions and compute confidence intervals to find out if some parameters are no longer nominal.
- based on recorded project data, design a work load balancer for distributing projects (linear optimization, ...)
- tools like command-line utilities or an interactive dashboard would complete this project.
Feel free to bring in your own ideas!
skills: rethinkdb, coffeescript/node.js, python, statistics, operations research
Android Tablet or iPad UI
So far, the entire CoCalc UI has been built as a modern web-application, relying on responsive design to accommodate for smaller form factors. To improve the user experience on mobile devices, especially tablets, native applications are the key.
- Design and code the basic infrastructure for connecting a native app to CoCalc (authentication, socket, protocol, ...)
- Explore react-native about how to build an interface.
- It's not expected to finish everything at once. Work in small incremental steps in order to build a solid foundation for further enhancements.
- Ideally, this approach should allow to share code, by reusing components, etc.
- Clearly work out which aspects are hard to do, where are the current limitations, what needs to be done to overcome them, etc.
skills: java/android, iOS, websockets, ...
This project is comprised of a set of ideas to improve the user experience.
We have ample of issues and ideas how to incrementally work on the UI.
interactive help: figure out how to extend the UI to give users interactive help, guide them what they are doing, (variable introspection, suggestions what to do, toolbars, tutorials, ...)
support: give users the ability to "call someone into their project". this means, they can press a button, express their problem, and available tutors are then dropping right into the file the user has problems with.
templating: build the infrastructure to give users a head-start how to accomplish certain tasks. there are three levels of granularity to explore this:
- projects: add a directory tree to a project (or create a new project with such a tree of files). design a way to change the default behavior of a project based on a central configuration file. etc.
- files: extend the UI and back-end to offer file templates for various tasks. how to organize this?
- code-snippets: build on existing work for inserting code snippets as templates, etc.
skills: html, coffeescript, jquery, react.js