zooniverse / zooniverse-readymade

Apache License 2.0
1 stars 3 forks source link

Configuration of subject sets per workflow / task #44

Open freen opened 7 years ago

freen commented 7 years ago

Hi there,

I'm just spinning up a new project using this boilerplate, which is really great so far, and I have two questions. I've dug through the documentation and the source code but haven't found solid clues yet, so I thought I'd ask here.

I'm defining my project.coffee with several different workflows (each will have multiple tasks,) and it's not clear to me yet how I can define / provide, for each workflow, a subject set.

In the base / example initialized settings, these are obviously defined in the offline/subjects.json file. What is the standard approach for configuring / loading subject sets per workflow task dynamically?

I'm also noticing that all calls to dev.zooniverse.org endpoints are yielding 500s. On the other hand why doesn't the app connect instead to the Panoptes API -- unless I'm mistaken and this is simply another gateway to the same endpoints?

Thanks in advance for any insight you can offer! freen

srallen commented 7 years ago

@freen zooniverse-readymade is built to work with our previous generation API, Ouroboros, and unfortunately not with Panoptes. If you are looking to build a project with Panoptes, we have a GUI project builder at https://www.zooniverse.org/lab. Alternatively, if for some reason you have a need to write your own custom front end application, this is the javascript client we've written to work with Panoptes: https://github.com/zooniverse/panoptes-javascript-client.

We don't have any kind of starter repository that more or less "works out of the box" like this one does for Panoptes yet. We hope to get there someday :)

freen commented 7 years ago

Thanks for your reply, @srallen.

It's good to know that zooniverse-readymade uses legacy architecture and shouldn't be used by newer projects / projects which require the Panoptes API. The project I'm building will need to use the Panoptes architecture.

We do need to build out a custom front-end due to the need for special classification and image cropping functionality (per previous questions https://github.com/zooniverse/Panoptes-Front-End/issues/3554 and https://github.com/zooniverse/Panoptes-Front-End/issues/3640.)

My preference would be to use React / Redux for the front-end, so I've done some digging and found zoo-reduxify, Zooniverse-React-Components and at least one project which is using each of these, liberating-the-liberator.

However I don't see very many ready to use classifier tool components / containers in the Zooniverse-React-Components and that's a concern for me. I want to start with the most mature / richest library so I'm not doing unnecessary amounts of generic interface work (e.g. building out generic classifier tools for the front-end.)

Whereas there are quite a few AngularJS-based projects, like Annotate and Shakespeare's World.

It seems like the AngularJS libraries / examples might have a more mature collection of ready-to-use generic interface components, esp. where classifier tools are concerned. Is this correct? Or am I possibly overlooking some available React libraries? For example the React components in the classifiers/tasks folder of Panoptes-Front-End include the full array of classifiers (obviously!), but is there precedent for a custom front-end built using React to dynamically load classifier components from PFE?

Thanks in advance for your insight!

srallen commented 7 years ago

@freen Thank you for sharing the related issues. Looking over them, I'm not sure if a custom front-end app will be necessary, though, of course I could be wrong since I may not be aware of all of the project's requirements. From what I'm reading, what you need is:

If there are other requirements that do necessitate the creating of new subjects from the crop mid-classification or any others generally, then here's what I'd suggest doing is fork zoo-reduxify and copy and refactor any code from PFE's classifier that you might need.

zoo-reduxify is as close to a React based starter repository we have. I updated it this last month, so it's running the latest major versions of webpack, react-router, and other dependencies.

Our goal with Zooniverse-React-Components is to have a repository of reusable react components. It's being built out as needed. It currently probably doesn't have any useful components to you at the moment.

We have plans to extract out the classifier (as you found in PFE's code) into its own reusable module, but this is still in the planning stages. You probably won't want to wait for us to do this.

The few custom projects you've found like AnnoTate are specifically built just for those projects' requirements. I'm not sure if they would be a good reference for you to start from with that in mind.