impress / impress/impress.js

Major Refactor

Open
#863 19 comments 4 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
JavaScript
Stars
38.2k
Forks
6.6k
PR merge metrics
No merged PRs in 30d

Description

V3.0

Since I will again have much more time to spend on other projects in the near future, I wanted to do something I had wanted to do for a long time, which is making impress.js much more flexible. Since this requires some major rewrites, I am strongly in favour of making this a breaking change, meaning that some APIs will go away / be replaced by new ones as well as some additional ones coming to impress.

New features

  • For example, to enable more flexibility in transitions, I would like to expose a movement API such that all the positioning / transitioning (I haven't thought about how exactly to do it just yet) will be handled in plugins to allow for more versatile transitions like zoom-in zoom-out or zoom-out zoom-in between the movement.
  • Work to reduce the amount of open issues by trying to address all suggestions and bugs in them
  • Migrate to eslint from jshint
  • Update all plugins to the new api
  • Update all the unit tests to work with the new APIs
  • Update the demo
  • Update the examples
  • Update website to allow for switching between impress.js versions for docs
  • Optimize docs building script by enforcing certain md restrictions like only allowing for absolute links to other docs
  • Add option to customize mouse-navigation (click to go to next step or click onto a step to go to that one (like a simple toggle))
  • Clean up plugins (merge similar ones)
  • ensure that keylisteners are in the main impress function (or one of them) and it calls functions in plugins if they request a certain key.

Other considerations

  • I would argue that still supporting the V2.0 series would be something that is required to do, but only for bug fixes.
  • I will be adding a guide to migrate both plugins and presentations to the new version. Though, presentations will NOT be needed to update to still work, they should continue working in the same way as they do now with the new version, only that there will be more features available.

Final thoughts

If you have any suggestions or concerns, please let me know. I am planning to start on this in December 2023 or January 2024.
I am also planning to use this as an opportunity to drop support for IE and use more modern web APIs to make it more flexible and to speed things up.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing the current public APIs, plugins, unit tests, demo, examples, website, and documentation-building script named in the issue. Done would require agreeing on the V3.0 API and completing the breaking-change migration, plugin and test updates, documentation, examples, demo, tooling, and compatibility decisions described here.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript
Domain
frontend
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
15/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.