imjs and im-tables GSoC project
Background:
InterMine results are currently displayed on JSP pages using im-tables, a coffeescript-based table displayer. You can read more about the features in the InterMine user guide. The communication layer is powered by imjs, also written in coffeescript.
im-tables was last updated in late 2014 or early 2015, and right now the only way to update it is to install an incredibly old version of node - it won’t build under any modern versions. Your jobs as a GSoC student would be to give these repos some of upgrade love they need and modernise the libraries.
Some of the tasks we’d like to address
Minimum required features
- Upgrade the dependencies for both libraries and ensure tests still pass.
- The imjs tests are directly coupled with intermine and function more like integration tests than unit tests - without a running local intermine test instance, imjs tests can’t pass. It would be nice to create mock testing objects that we could use instead of a full InterMine. See the imjs testing docs for more info, as well as the GitHub issue discussing possible options.
Bonus features
- imjs & im-tables are both quite large packages, even minified. They use browserify to convert them from node-ready packages to browser-ready packages.
- Pure Javascript is probably easier to maintain, and ES2015 supports a lot of the features that made coffeescript popular. It might be nice to use Decaffeinate to migrate to javascript instead.
- Better documentation. We have a few examples of imjs in use (demo, code), but it would be nice to add other methods and maybe link to them directly from our api docs.
- Any open issues in the GitHub repos, such as:
- im-tables: add logarithmic view to numeric column summaries
- [imjs: fix bundled CORS error] (https://github.com/intermine/imjs/issues/19)
Getting started
- Get familiar with InterMine and InterMine queries. We have a Javascript-oriented tutorial you might like to try first.
- Clone imjs and im-tables.
- You might want to use nvm to manage your node version, if you don’t already.
- Follow the set-up instructions for each repo and take a look through the code. Don’t worry if you can’t get im-tables to build! It requires a very old version of node. If you really like, you use nvm to try to roll back to an old version of node - maybe v0.10? - and see if that fixes the build.
- Start thinking about your project proposal: Use the repos you’ve installed to explore the features we’ve discussed above so you can get a feeling for the things we’d like you to address. How long do you think each task might take and what would your preferred approach be? You can discuss this with mentors and/or start writing your proposal. Always share our proposal drafts with your mentors so they can offer feedback, and take a look through our advice for applications to find tips and a proposal template.
Need help? Questions?
Try asking in the GSoC chat. The mentors for this project are:
- Yo Yehudi
- Aman Dwivedi