The last five weeks have been full of learning and surprises (good and bad). We have a better understanding on how Refine is used and how it behaves with different browsers and data set sizes. Some things worked as expected, other completely broke. This post highlights the coming technical points we plan to address to improve RefinePro.
As we plan to commit back to the OpenRefine community on a regular and consistent basis, we want our roadmap to be open and transparent. We want our progress to benefit all and so comments on our roadmap are welcome. This conversation can take place on the official OpenRefine developer discussion list.
We are looking for talent to join us in deploying this roadmap (and everything coming after). Contact us if you want to take Refine to the next level.
We are looking to:
- Deploy multi-user support on RefinePro
- Develop a plugin directory for OpenRefine and RefinePro
- Work on a separate roadmap to separate user data from the application in Refine.
- Get feedback from the community regarding upgrading Jetty and migrating away from ant.
1. Multi User Support
We plan to develop this feature in two steps. In the first place, through the RefinePro Dashboard, you will be able to share your instance with another person of your choice. When in use, the instance will be locked to all other users to prevent editing conflicts on a particular project. With our current architecture this is an easy enhancement we can deploy quickly.
Meanwhile, we want to support multiple users on the same instance. We know some developers have already worked or thought through this feature for OpenRefine. We are ready to help to develop it and do what it takes to make it part of the OpenRefine core so everyone can take advantage from it.
2. Develop A Plugin Directory
There are eight plugins for OpenRefine available. We believe that a plugin directory will help Refine users to easily discover install and manage their plugins. Developers will have more incentive to create extensions for Refine core with a growing user base and managed installation and maintenance process.
RefinePro needs this functionality since our users don’t have access to the machine and we cannot support custom installations for each user. We think the best option is to let user cherry pick which plugins they want to use through the Refine interface.
We want to take the WordPress plugin management system as an example where users can
- Explore all plugin available directly from Refine;
- Install and update them through the same interface;
- Choose to activate or not each plugin. A deactivated plugin will be physically installed on the user machine but its functionality won’t be available.
3. Separate User Data from the Application
This is something we want to achieve in a near future at RefinePro. We currently maintain an instance per user. This was an easy set up to test things out but quickly became an nightmare to maintain and administer.
We will start to list all the user settings saved by Refine and see how they can be moved to an independent configuration file that can be loaded at the beginning of the session. Having user data separated from the application will help with any upgrades of Refine on every local installation.
This might have an impact on how the Refine core and existing plugins work. We want to gather as much feedback as possible from the community before making a decision. The floor is open to discussion and feedback.
4. Upgrading Jetty and moving away from ant
Most of the back end architecture in Refine dates from 2009 and hasn’t been updated since.
Jetty 6 is not supported anymore and the version Refine is using was released in 2009. There was already some discussion and a Github Issue on this topic. This is something we would like to address early on if the community wants to move away from ant to something else (maven or gradle).
Is it time for Refine to update?