Git Product home page Git Product logo

openreview-matcher's Introduction

The OpenReview documentation and issue tracker

The intention of this repository is to provide an issue tracker and discussions for OpenReview. We will also be using this repository to create a better documentation of OpenReview. You can find the documentation at https://docs.openreview.net/.

Before submitting an issue, please refer to the guidelines

openreview-matcher's People

Contributors

aarshpatel avatar ameyagodbole avatar carlosmondra avatar celestemartinez avatar haroldrubio avatar justinpayan avatar marshall62 avatar melisabok avatar mohituniyal avatar mspector avatar openreview-iesl avatar purujitgoyal avatar sjecmen avatar yixuanevenxu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

openreview-matcher's Issues

Add a Revert Changes button

Perhaps there should be a “Revert Changes” button in addition to the Save Changes button in case a user messes things up and wants to simply reload the latest model from the server.

Stats: Remove hard-coded score names

If the score names that are defined in the configuration note.

To know if the score represents a bid, we could try to search the word 'bid' in the score name. The same happens for recommendation.

Update Constraints Button appearance should be different

I suggest renaming the button to “Save Changes” and only displaying the button when there are changes to the model.

Justification:
As the user edits the draft with veto and lock, it isn’t obvious that these edits are not actually taking place until a button is clicked. The button has a rather ugly tooltip that comes up if you attempt to click it when no changes have been made.

The name of the button (“Update Constraints”) assumes that the user conceives of the vetoing/locking as adding constraints which I believe is somewhat abstruse.

Preprocessor class

think a little bit about how the preprocessor class is going to work. right now it's incomplete

Fix breadcrumb menu

Only the stats page is showing the breadcrumb menu to go to the conference home page.

Do we want to show it?
The browser is not showing it, we should unify the criteria.

We can leave it and go to 'All assignments' instead.

@zbialecki thoughts?

screen shot 2018-12-07 at 9 10 50 am

Assignments: display a button to create a new configuration note

Given that the schema of the configuration note is more complex, we would need to build an specific UI to enter the following values:

screen shot 2018-11-07 at 1 29 13 pm

Other option is to try to make it work with the current mkNotePanel that we have now.

  • General parameters can be strings.
  • Weights can be predefined score fields also saving strings.
  • custom maximum loads: could be a list of comma separated values?

We can set the invitation.reply to display these fields.

@zbialecki thoughts?

Placement of vetoed/locked users is confusing with respect to use of Update Constraints button

Currently the location of the green/red user boxes depends on the state of update of the model.

Before “update constraints” button is clicked:
Vetoed primary users are displayed in the alternates list as red.
Locked alternates are displayed in the primary list as green

After the “update constraints” button runs (successfully without a warning)
Vetoed primaries are shown in the primary list
Locked alternates are shown in the alternates list

A couple problems with this:
What’s especially confusing about this is that the UI is actually displaying the REVERSE of what is currently true of the model as it exists in the server side.
As the user edits and clicks “update”, there can be confusing combinations of green and red boxes in the different lists where non-updated ones are in different list than ones that have been persisted.

Would there be a problem in keeping the display of locked/vetoed reviewers as they are in the BEFORE-update-button state regardless of whether update has occurred?

Run solver of an existent completed configuration note

I would suggest to create a new configuration note with different assignment notes and DON'T REMOVE any data.

From the UI perspective:

  • When the user clicks on 'Run solver' from the matching browser it will appear a popup to give a new name to the configuration note.

Soft delete assignments notes

Program chairs don't have permissions to delete notes from the database.

The matcher should delete the notes using ddate.

Shouldn't use config-note to hold status of match

I had a config-note that had values in its content fields that were not compatible with the invitation reply specs (I had created the config-note prior to creating the specs on the invitation). When the matcher tried to set the status of the config-note OR rejected the POST request and the matcher died. I wasn't able to see an indication that the run was in a failed state though because the note wasn't alterred and remained with status initialized.

Remove assignment data: filter by content.label

Otherwise it removes all the assignments of all the existent configuration notes.

I would like to don't remove data and don't save the assignments below the same invitation. Use another invitation? or create a forum note to represent the config note and then all the assignment notes should point to this forum note.

Sort papers list

Posting this on behalf of @marshall62

Would like to be able to sort list of papers by:

  • alphabetically by title
  • number of assigned reviewers
  • min reviewer score
  • average reviewer score
  • other criteria?

Would like to be able to sort reviewers by:

  • alphabetically by user name
  • user load (number papers they are assigned to)

Stats: doesn't show the users with no papers assigned

It should show a bar with amount of users with no papers assigned:

Screen Shot 2019-04-24 at 2 10 39 PM

Left chart should show a bar in the x = 0 and y = # of papers with no assignments.
Right chart should show a bar in the x = 0 and y = # of users with no assignments.

Enable support for "permission-constrained browsing"

What I mean by permission-constrained browsing: browsing assignment drafts when the user does not necessarily have permission to view all of the paper matching data.

This issue is motivated by a use-case that ICML would like us to support: many ACs using the interface to browse their assignments simultaneously, while preventing information leak and excess collisions. In this scenario:

  1. ACs should be able to see information about their assigned papers and to suggest changes on their assignments. They should not be able to see information about other papers, or ideally even see other assignments.
  2. ACs should be able to see or infer the current global reviewing load for a particular reviewer, even under the constraints of point 1.
  3. Many ACs (i.e. ideally on the order of 100's) should be able to use the system at the same time.

This is what I had in mind:

  • Create references for every submitted paper that "masks" most (all?) of the paper note's fields. The mask will be visible by the entire pool of area chairs, but the underlying paper note (the "original") will have its permissions set to include only the assigned AC. (This construct is similar to the way we implement anonymous submissions).
  • Modify the paper entries in the assignment browser to show the paper's information if the underlying original note is visible to the user, and if not, show the mask.
    • or alternatively: if the underlying original note is not visible, show a placeholder that doesn't reveal any information about the paper at all -- not even forum IDs.
    • The idea is to prevent any kind of inference about papers that are not assigned to the user -- all they can see is that a reviewer is assigned to some unidentifiable paper that is not their own.
  • If the mask is shown, disable the lock/veto buttons on that paper to the user.
  • Disallow clicking through masked papers entirely (the idea being that users shouldn't be able to see the assigned reviewers of a masked paper by clicking on the paper)

The above should achieve the three objectives in the following ways:

  1. Hides information from users based on permissions of notes
  2. Users can estimate reviewer load when suggesting reassignments (by clicking on the reviewer and counting the number of paper entries; some of these entries will have paper information, some will be "masks")
  3. Disallowing users from adding suggestions (locks/vetoes) to masked papers should reduce the number of collisions, because constraints are keyed on forum ID in the configuration note's conflicts field (and if each user is assigned a non-overlapping set of papers, there shouldn't be collisions)

@zbialecki @melisabok @marshall62 please try to poke holes in this and/or ask clarifying questions if you have them!

Change lock/veto to upvote/downvote

Curious what @melisabok @zbialecki @marshall62 think of changing lock --> upvote up arrow and veto --> downvote down arrow. (Created a new issue label "feature proposal")

Advantages:

  • The upvote/downvote mental model is both more general and more common for users than lock/veto Up/down arrows are more general than lock/veto. I would argue that they're more likely to understand that their selection is a suggestion or request, and not necessarily guaranteed, which is useful in a multi-user scenario.
  • It still supports the original case in which a handful of program chairs want to apply hard constraints. We can modify the impact of upvotes/downvotes up/down arrows in the matching system itself so that they are treated like hard constraints, when necessary.
  • Upvote/downvote is more flexible Up/down arrows open up potential for interesting things in the future (e.g. what if people could upvote/downvote a paper-person pair multiple times? what if they could rank assignments? etc.)

Disadvantages?

EDIT: Sorry if I confused the issue by talking too much about voting. To be clear, what I'm proposing here is making the symbols more general so that it can support a wider variety of uses.

Update Constraints Dialog mixes saved vetoes/locks with non-saved

screenshot from 2019-01-15 09-59-54

To create this issue:
I worked with Michaels branch that demonstrates how the matcher UI could mask papers from users who don't have read access (which helps reveal part of this issue)

  1. I logged in as an AC and locked Dirk W. to a paper and vetoed Sebastian P. from that paper and saved the constraints.

  2. Logout and login as a different AC

  3. I locked Dirk W to a paper ( a different paper than in step 1) and clicked "Update Constraints"

The dialog is showing the complete list of constraints and says that all of these will be saved.

There's a few issues with this:

The dialog doesn't distinguish those constraints that are unsaved (i.e. the ones I just added) from those that are already saved. The last row is only one that is newly added.

Is it really necessary to show all the constraints in this dialog when I click "update"? In this case, there are constraints saved by other ACs that the current AC can do nothing about because they don't have access to the paper in which those constraints apply. Also, as the list of constraints gets really long, this issue is magnified.

Wouldn't it be better if this dialog only showed the newly added constraints it is about to save?

If it needs to show all of them would it be better to show constraints in two groups: Previously Saved, Newly Added

Errors during matcher are not reported with any detail. Just says "error" as status

The https://openreview.net/assignments?venue=ICLR.cc/2019/Workshop/DeepGenStruct
has a configuration where the max number of reviews a reviewer can give is too low so that the supply of reviews is less than the demand. An assert catches this error, but the assert exception is not caught and returned to the main UI with a message (Melisa removed the way I was putting messages into the status). We need to create a second field for the error message so that the UI can give details about why things fail.

Return 'No Solution' when there is a supply/demand inconsistency

Currently it is showing 'Error' when we got this error:

matcher.assignment_graph.AssignmentGraph.AssignmentGraphError: the total supply of reviews (55) must be greater than the total demand (99)

It should be 'No Solution' and give us a clear idea that we need to change the parameters.

Rename 'Failure' status to 'No Solution'

Failure is being used only when there is no solution. No Solution is more descriptive and there is no need to save an error_message in the configuration note.

After Flask is stopped all running Threads are stranded and left with Running state in config notes.

If Flask is stopped, any config notes that were in a running task will be left with status="Running". This will cause future runs for this config to fail because it checks to see if there is a config with status="Running".
So we want one or both of the following:

  1. On flask stop, go clean up config-notes that are left in a running state and set them to some other status.
  2. On flask start, clean up config notes similarly.

This will mean that the match server needs to keep a list of config_notes that it is processing. Only when a note is complete, can it remove it from the list.

Stats page: fix bid charts

I think it is related to the range of numbers that bids supports.

ICLR is using a range between -1 to 1.

screen shot 2018-11-07 at 2 56 51 pm

minimum number of papers per user not working correctly

minimum papers per user constraints aren't being honored in all cases. I think I understand what the issue is - right now, assigning fewer than the minimum number of papers is highly "costly" but not strictly impossible.

Assignment list: render the configuration table even if it is empty

Render always the configuration table even if there are no configuration notes for that venue.

This will fix the issue where the first note is created it should refresh the table too. Now it is still showing "No assignments have been generated yet for this venue." and it doesn't refresh the table because it doesn't exist in the DOM .

Clone a match configuration

Within Assignment list add an action "clone" that would add a new configuration row that clones this config (set the label to be the same with -clone appended, set its status to initialized)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.