frangoud / ZoteroDuplicatesMerger

A zotero plugin to automatically merge duplicate items
Mozilla Public License 2.0
316 stars 10 forks source link

Not compatible with Zotero 7 #14

Open quinn-p-mchugh opened 1 month ago

quinn-p-mchugh commented 1 month ago

Hi all, creating this issue as an extension of #12 & #9. I am not the original developer of this add-on - I'm just an enthusiastic user and potential contributor that would love to see this plugin made compatible with Zotero 7.

I'm happy to offer $50 to the developer that is able to complete a majority of this work.

Background

Zotero 7 is now in beta and will be released sometime in 2024. This update introduces breaking changes that will require all Zotero add-ons to be updated in order to maintain compatibility. This means some updates will have to be made to this plugin for it to be used with Zotero 7.

Zotero 7, which will be released in 2024, includes a major internal upgrade of the Mozilla platform on which Zotero is based, incorporating changes from Firefox 60 through Firefox 115. This upgrade brings major performance gains, new JavaScript and HTML features, better OS compatibility and platform integration, and native support for Apple Silicon Macs.

While this upgrade required a massive rewrite of the Zotero code base and will require many plugin changes due to technical changes in the Mozilla platform, going forward we expect to keep Zotero current with Firefox Extended Support Release (ESR) versions, with comparatively fewer technical changes between versions.

Summary of Updates Required

Zotero provides some instructions for updating plugins to ensure compatibility with Zotero 7.

Below, I've used an LLM to summarize the required updates. Depending on the architecture of this plugin, some of these updates may not be required. See the Zotero 7 developer instructions for more info.

A: Manifest Files

A1. Replace install.rdf with manifest.json. A2. Replace update.rdf with updates.json.

B: Functionality Changes

B1. Transition from XUL Overlays to bootstrap.js for DOM manipulation. B2. Replace chrome.manifest with runtime chrome registration. B3. Update localization to Fluent (.ftl). B4. Move default preferences to prefs.js in the plugin root.

C: User Interface Changes

C1. Use Zotero's built-in function to register preference panes. C2. Directly bind preference keys in preference panes (remove tags). C3. Use official APIs for custom item tree columns, item pane sections, and reader event handlers.

D: Platform Changes

D1. Replace Mozilla CSS with standard CSS. D2. Update module import lines. D3. Handle changes to Zotero platform APIs. D4. Replace the use of OS.File, OS.Path, and OS.Constants.Path with IOUtils and PathUtils. D5. Use Zotero.isWin/isMac/isLinux for platform conditionals, Zotero.getOSVersion() for the OS version, and Zotero.arch for the architecture.

Contributing

Any and all contributions are appreciated towards upgrading this incredibly useful add-on to Zotero 7.

If you are interested in contributing to this effort, please:

  1. Comment which of the updates above you intend to implement
  2. Post a link to the fork where you're working from
  3. Ask any clarifying questions that others might be able to help answer.

Thank you for your interest!

algora-pbc commented 1 month ago

💎 quinn-p-mchugh0 is offering a $50 bounty for this issue 👉 Got a pull request resolving this? Claim the bounty by adding @algora-pbc /claim #14 in the PR body and joining algora.io