impress / impress.js

It's a presentation framework based on the power of CSS3 transforms and transitions in modern browsers and inspired by the idea behind prezi.com.
http://impress.js.org
MIT License
37.64k stars 6.66k forks source link

State of the project #435

Closed FagnerMartinsBrack closed 6 years ago

FagnerMartinsBrack commented 9 years ago

Hi @bartaz, is this project going to be actively developed?

In several threads you stated no time for working into this project and the latest commits were just regarding grammars.

Impress is impressive (!!), and there are many useful pull requests waiting to be landed. Any news if this project is going somewhere or if you are willing to handle it to someone else to continue active development?

Why do I ask this? Well, maybe I am not the only one, but its sad to see fragmented projects with useful features that could be centralized. If there is any chance that this project is going to get on track, it would be nice to disclose the information, so one may not jump into creating another repository and potentially reinvent the wheel.

Also, I noticed there is a lack of general documentation, so it is hard to know exactly what is supported and what is considered an implementation detail (although the code is pretty well documented and one can have a very good basis).

Anyway, with > 1k watchers and > 22k stars it is unlikely not to exist at least one willing to take over or be an active collaborator. Is there any news regarding the project state? Just to get into the context.

Thanks.

HacKanCuBa commented 9 years ago

I totally agree to this +1

HacKan & CuBa co. On 22 Oct 2014 17:24, "Fagner Brack" notifications@github.com wrote:

Hi @bartaz https://github.com/bartaz, is this project going to be actively developed?

In several threads you stated no time for working into this project and the latest commits were just regarding grammars.

Impress is impressive (!!), and there are many useful pull requests waiting to be landed. Any news if this project is going somewhere or if you are willing to handle it to someone else to continue active development?

Why do I ask this? Well, maybe I am not the only one, but its sad to see fragmented projects with useful features that could be centralized. If there is any chance that this project is going to get on track, it would be nice to disclose the information, so one may not jump into creating another repository and potentially reinvent the wheel.

Also, I noticed there is a lack of general documentation, so it is hard to know exactly what is supported and what is considered an implementation detail (although the code is pretty well documented and one can have a very good basis).

Anyway, with > 1k watchers and > 22k stars it is unlikely not to exist at least one willing to take over or be an active collaborator. Is there any news regarding the project state? Just to get into the context.

Thanks.

— Reply to this email directly or view it on GitHub https://github.com/bartaz/impress.js/issues/435.

Pierstoval commented 9 years ago

Totally agree too, I'd really like to see more stuff like full-size-background sliders, new events listeners and more incredible parameters ! :) :+1:

bartaz commented 9 years ago

Hi guys. Thanks for starting this discussion.

As much as I'd love to move this project forward on my own - especially that I had a vision how it can move forward - I'm pretty sure it's not likely to happen in any predictable future.

I was never very quick about accepting feature pull requests, because I've seen how quickly impress.js would be bloated with dozens of options just to make it work for various edge cases. That's why my approach was rather - if you have an idea how to make impress.js work better for you, then fork it and make it better for you.

Anyway, for my surprise even that project is couple of years old and honestly speaking wasn't actively developed for almost whole this time it's still very popular, people are interested in it and discover it as something new and fancy. And three years in web industry is ages!

Probably one of the things that makes me proud most about impress.js is that has a tendency to attract people and make them interested in web technologies even if they didn't program before. So for sure I wouldn't like this project to just slowly and quietly die. Which would likely happen if it is left in my hands ;)

Some time ago I already had an idea to open impress.js for community, add more collaborators and let them build impress.js how they would like to see it. For that reason I got created impress organisation to move project there from my personal github account and make it a new home for impress.js and related repositories - because 'my vision' was to make impress.js core as small as possible (focused on positioning steps in 3D and moving between them) and implement rest of the features as optional extensions.

So maybe it's time to start making it happen. The biggest problem I see for myself now - is how to find people who will not only just want to add new stuff to impress.js but will take a good care of the project.

Any suggestions welcome.

afterdesign commented 9 years ago

I think that moving impress.js to impress organisation is the right move. But I have no idea how to choose people to manage it.

MarcoDVisser commented 9 years ago

I completely agree with Bartaz, keep impress.js core as small and efficient as possible. That should be the main objective.

Nevertheless I believe implementing a simple package/library model would accomodate both advanced features as well as keep the core clean and functional. Many succesful opensource community projects use this approach, users may contribute packages and extend functionality without major changes the core project, I don't see why this wont work here. Maybe even with minimal adjustments to the core?

Just my two cents

bizmate commented 9 years ago

About "how to find people who will not only just want to add new stuff to impress.js but will take a good care of the project". Very difficult in distributed projects unless you implement high standards and processes both to design and code new features. In brief my suggestion is to choose an architecture, expect a certain code standard to be enforced and use TDD or even better BDD for each new feature/request/bugfix. To guarantee the BDD/TDD process you can also use a CI environment like https://travis-ci.org/. Javascript is not my strongest so I could only help around BDD/TDD and CI.

FagnerMartinsBrack commented 9 years ago

... how to find people who will not only just want to add new stuff to impress.js but will take a good care of the project.

My suggestion is to keep this thread open with a specific label to get more attention in the issues tab, look in the pull requests and forks for people whose implementations share the same vision or wait until someone pops up in this thread.

To make your vision clear it would be nice maybe to start closing a few issues or pull requests with the reasoning (also for triage) and provide some written stuff that clarifies your vision in detail. As it stands, the only doc I have found if in the readme:

But remember that I only accept code that fits my vision of impress.js and my coding standards ...

It doesn't specify in details your vision (useful even for impress users) and for coding standards it is possible to use grunt/jscs/jshint and enforce this at build level with travis-ci, like mentioned in the last comment.

bartaz commented 9 years ago

To make your vision clear it would be nice maybe to start closing a few issues or pull requests with the reasoning (also for triage) and provide some written stuff that clarifies your vision in detail.

The thing is that I don't think that my "vision" should be that important anymore, because that what was basically stopping impress.js from getting new features.

So right now my 'vision' is to make impress.js more open and extensible. So people could more easily build new stuff for it and on top of it. But I'm sure that what it means is deep refactoring, new API, some 'plugin' mechanism maybe... That's quite a lot of work.

joescii commented 9 years ago

I'm a huge fan of impress and use it regularly. Personally, I really dig it's current basic state. I feel it's a launching pad for ideas, and for my purposes that is more than sufficient. However, I see where it would be great to have other people's ideas for extensions gain some exposure in the impress community. I believe your vision to make it an extensible base is spot on. If I didn't already have significant roles in other OSS projects, I would quickly dive headlong into this opportunity to help with a great project.

I vote for plugin mechanism, from a technical and community standpoint. Who to do it? Unfortunately I won't have the bandwidth to be much more helpful than this comment at this time.

MattNewbill commented 9 years ago

Is it possible to embed a presentation inside a static html page?

FagnerMartinsBrack commented 9 years ago

@MattNewbill, the question is not related to this discussion, please open a new issue.

FagnerMartinsBrack commented 9 years ago

Hi @bartaz,

A few hours ago I created a fork of impress JS for personal purposes and it may be of your interest to take a look and see if that is the direction that you expect impress.js should go.

https://github.com/web-stories/impress.js

This is not actually a fork, in github terms, but a new repository built from the master code. I did this in order to enable issues and control the implementations I need to make to adapt to the project I am developing.

Anyway, I have this project where impress is going to act as the core, but it is not possible to implement impress as it stands due to several factors, including the lack of a proper automatic build, test/ci, style pattern, module split, etc. For that reason I started this fork, below is the changes I made and the reasoning behind each of them.

Note: Those changes are not trivial regarding code diff, so I took advantage of that to enhance a lot of points I believe should be enhanced to make it easy for maintenance.

Code Style

In the actual code base, although most parts of the code use a consistent style, there is still some parts that exhibit some inconsistencies (like the () and [] notations). Also, since this is a unique code style, it would be necessary for new contributors to adapt, which may not be ideal.

To solve this with minimum work, we need a build system that uses JSCS and a fixed code style model to be developed into, so we don't waste time discussing useless stuff. We need to think with the reason and adapt to the reality.

The I choose jquery code style model from jscs preset. Why? because jquery code style is widely used and represents the code style used by the most known and successful JS project out there. In my fork I made a change for personal purposes, but that can be easly modified:

"requireMultipleVarDecl": null Not sure if this project uses multi var declaration, because in some parts (usualy when there is comments) it uses multiple var, in others it uses single var. According to http://benalman.com/news/2012/05/multiple-var-statements-javascript/ there is at least one reasoning for using multi var, so let's stick with that.

Default rule: Rule not enforced? Be consistent. Rule not consistent? Follow jQuery style. Rule not consistent and not following jQuery style? do what you must and discuss a consistent pattern to be enforced using jscs.

JSHint

The pattern here is the following: Leverage jshint defaults. If defaults break code, use the impress JSHint source comments.

EDIT: I was using this link as a reference: https://github.com/jshint/jshint/blob/master/examples/.jshintrc, but it seems to be incorrect with grunt jshint defaults, I fixed it.

Bower

I don't work with bower, so I have no idea how to better integrate with the build process. See here

Shift + Tab

I implemented shift + tab for consistency with the current tab behavior in the default navigation: https://github.com/web-stories/impress.js/commit/1453e353448d812118baee1a72fc182491a9d867

In the comment it says: "And yes, I know that for the sake of consistency I should add [shift+tab] as opposite action...", but it is not clear why you didn't do it at the time.

AMD Support

I have added AMD support. In case you don't know how AMD works, I have used this implementation to create a test environment using qunit and testing AMD support with requireJS. Other loaders support are going to be added on demand.

The AMD support hides the "impress" from global scope if detect AMD present, and allows the use of "impress" in a local scope:

require( [ "impress" ], function( impress ) {
  impress( "id" ).init();
});

More details here: https://github.com/web-stories/impress.js/pull/4, or more specifically here: https://github.com/web-stories/impress.js/commit/c9d1078ffd5ab79f1c85c16b0eabe8d98b4b3ff4

Additional coolness

Tell me what you think about this.

Core: https://github.com/web-stories/impress.js/blob/master/src/js/core.js Navigation (optional): https://github.com/web-stories/impress.js/blob/master/src/js/navigation.js

To run the build:

FagnerMartinsBrack commented 9 years ago

By the way, thumbs up for the initial impress presentation using Simon Sinek's golden circle principle and Steve Jobs ;D

Pierstoval commented 9 years ago

As the project is still loved by many, it could be good to conclude about the state of the project :)

Is it stored on an "impress" organization, does @FagnerMartinsBrack become the new "project leader" of impress.js ?

I'm trying to develop some frameworks based on impress.js, and I'm certainly not the only one, so it could be good to have an "official reference" to impress.js :)

FagnerMartinsBrack commented 9 years ago

My current project is not just about a regular slide presentation, it should be scalable and impress.js does not seems to be the best fit for it.

I switched to jmpress, a jquery plugin that handles advanced features that impress currently doesnt, with the potential to develop plugins for it. Since I am using angular, I also created an angular-jmpress prototype. It is just a prototype of a basic usage, since I didn't find any repository containing an angular port of jmpress.js or impress.js.

Any help is appreciated. jmpress need contributions and angular-jmpress is just something that, if evolved, could be eventually ported to the jmpress organization.

Pierstoval commented 9 years ago

When I'll have more sliders to make, I'll try jmpress thanks for the notice @FagnerMartinsBrack :)

regebro commented 9 years ago

You probably meant to link to https://github.com/jmpressjs/jmpress.js

It's demo page is completely broken on Firefox and Linux, unfortunately, I might look at it when they fix that. :-)

FagnerMartinsBrack commented 9 years ago

@regebro Yeah, I fixed the link.

By the way, Firefox is pretty broken for impress itself, at least on Windows. A few days ago Firefox 34.0 wasn't working, several artifacts in the screen when changing a step. It is related to a known issue: https://bugzilla.mozilla.org/show_bug.cgi?id=1098266.

If you are having any troubles at linux you could send a pull request. Like I said, jmpress is a very good initiative with a pretty robust codebase, but need contributions.

regebro commented 9 years ago

I should report an issue, you are right.

audreytoskin commented 9 years ago

At the very least, it would probably help if the impress.js README was updated with a note about how @bartaz can't work on it anymore, and then maybe link here, so users can find forks and plugins if they want to see some of the more recent developments. bartaz could probably avoid a lot of repeat questions that way.

bobintornado commented 9 years ago

@bartaz maybe the project should adopt Open-source governance, following the path of io.js

FagnerMartinsBrack commented 9 years ago

@bobintornado How that type of governance would help this project in its current state? I agree there should be a way to keep the efforts more centralized, if that's what you are suggesting, but I realized the problem here is about maintainers availability and not governance type (this is already MIT licensed so anybody here could take over).

There is also the option for the interested parts to finance this open source project if there's enough ppl willing to pay for it.

regebro commented 9 years ago

Open source governance could help by having more maintainers.

audreytoskin commented 9 years ago

If we want to do it, then let's just do it. I've started a GitHub Organization -- impress-js -- so anyone who wants to can participate. For now, anyone who wants to join will be put into a team with write access. If we have enough members, we could hold a small election to see who will get admin access, and maybe figure out a more formal organization structure.

Pierstoval commented 9 years ago

:+1: I'd like to :)

bartaz commented 9 years ago

@Terrycloth there is already an organisation impress that I created for the very same reason. I'm planning to move impress.js repo there and open it up for maintainers.

audreytoskin commented 9 years ago

@bartaz Oh, I did see the impress username was taken, but it was empty, and there's a user called impressJS who doesn't seem affiliated with impress.js the presentation framework. However you want to do it is fine.

I'll probably remove the impress-js organization once yours goes public.

Pierstoval commented 9 years ago

@bartaz Nice for the @impress organization! Can't wait! :smile:

seyisulu commented 9 years ago

I'd love to join in helping but I the impress and impress-js organizations are empty. How can I assist?

FagnerMartinsBrack commented 9 years ago

@seyisulu Unfortunately this thread has been drifting for a while, it's all up to @bartaz to document some API ideas and start triggering the action.

As a sidenote: It would be easier first to document the API with the community participation before changing any code, just a suggestion.

I am also totally up to help contributing here, it is of my interest to have a robust and stable API that could be used to build port for frameworks such as angular and extend for each particular use case. Impress is not just about presentations, it is a framework to create 3D artifacts in an infinite canvas leveraging all HTML5 and CSS3 features.

bartaz commented 9 years ago

@seyisulu @FagnerMartinsBrack

Hi guys, thanks for the interest. Yes, the impress org is still empty - I want to test the move with some dummy repo before I move whole impress there, but I have other priorities now.

Very good suggestion about documenting API - I guess both in a current state and the 'dream' API with possible use cases. If any of you have any ideas for that feel free to start writing things down somewhere on the wiki https://github.com/bartaz/impress.js/wiki Don't worry about the structure too much at the beginning, we can treat it as kind of a brainstorm now and clean it up when we see where it is going.

Thanks!

Pierstoval commented 9 years ago

If you just "transfer ownership" to the impress organization, the old repo will redirect to the organization automatically, no worry about the old one as long as you don't recreate a similar repo in your own account

bartaz commented 9 years ago

@Pierstoval thanks for confirmation.

Actually I was thinking about forking it back to my account from organisation, to keep 'my copy', but I'm aware that that will break link redirection.

Pierstoval commented 9 years ago

Yep it'll break the link, but a simple message in the README.md file might be useful enough to redirect users to the correct repository :)

Or you can still use a simple branch in the new org to avoid putting this warning message in the repo.

DuncanMacWeb commented 9 years ago

Hey @bartaz, how about transferring ownership of the repo to the impress org today and adding @Terrycloth @seyisulu @FagnerMartinsBrack and @Pierstoval as owners/admins, as they seem motivated to work on it? I think that would be great for the future of impress. Carpe diem! :wink:

bartaz commented 9 years ago

Hi, things are hopefully going to happen quite soon.

Impress.js will be part of Rails Girls Summer of Code this year, so (assuming that at least one team will be accepted) some work is going to happen during summer time. For sure I hope to get some bugfixes and maybe some new features implemented.

Anyway, for me it will be at least good motivation to move the project to organisation and do some work around it.

So sorry for all the delays and thanks for the patience ;)

Pierstoval commented 9 years ago

We'll wait, it's great that it's part of this event!! :+1: :+1:

DuncanMacWeb commented 9 years ago

Hey, I think it’s great that impress will be part of RGSoC. Wouldn’t it be a good idea though to move impress into the impress org and invite contributors to be owners of the org now, which would help move the project forward before April turns into May? It would be fantastic to get some significant improvements merged in before RGSoC starts.

@bartaz, about your problem with link redirection if you transfer the repo to the impress org and then fork it back into your account, how about this solution?

  1. Transfer the repo to the impress org and add your prospective key contributors as owners
  2. Use a different account to fork the repo, or ask someone else to do it (I’d be happy to help with that)
  3. Rename the fork while it’s sitting in the other account (new-impress, for example)
  4. Transfer the fork back into your own account

That way, when the fork is transferred back into your account it would have a different name, so shouldn’t break GitHub’s redirections. I agree that the redirections are very important to maintain existing links etc.

It would be very encouraging to see some progress on impress before RGSoC..... :pray: :smile:

bartaz commented 9 years ago

@DuncanMacWeb Just to clarify some things.

Project plan created by RGSoC teams for the applications was based on current state of the project. So (unfortunately) I don't want to many changes to happen before the summer starts. I'm not sure if I'll be able to mentor RGSoC teams when at the same time other changes will be happening in the project.

For me RGSoC is a potential way to move project forward and find future contributors.

As far as I remember in the beginning of May RGSoC teams will be announced, so I'll not if and how many people will be working during the summer and I'll be able to make further plans.

henrikingo commented 9 years ago

Some time ago I wanted to up my game when doing talks, and have found impress.js and now I'm using it. Since I use it and I know JavaScript, I'm willing to help. In fact I'm sitting on some to-be-published code already.

About me: I'm a good programmer, with knowledge of many languages, including JS. However I'm not so deeply involved in the modern JS toolchains of bower, grunt, cucumber, npm, jquery or jscs, and most importantly I'm totally ignorant of modern JS plugin and dependency injection models. So clearly I cannot help there. (In other words: Javascript frameworks evolve with a higher frequency than I use JavaScript...)

As all of us, I'm busy with family and real work, so my contributions are likely to be spotty, but experience from maintaining a Drupal module for 7 years tells me it still works when we all help each other.

What I'd like to contribute:

More ideas, to be implemented:

TL;DR: count me in either as maintainer or contributor

Klerith commented 9 years ago

Im working in a impress maker, so far so good right now. When is finish I will post it in here, of course is going to be free.

Right now I can add slides dynamically and move objects. So I thing two or 3 months of hard work and it will be ready to use.

Pierstoval commented 9 years ago

@Klerith => Is it already open-sourced? We might all take a look, and you can propose to add this future app in the Impress wiki

Klerith commented 9 years ago

As I said before. Is under development. I want to create a website to give every body access to make impress presentations easily and free.

The code I'm not sure if will be open source, but we will see how it goes. Wish me luck.

Pierstoval commented 9 years ago

Good luck then ;)

2015-05-20 15:47 GMT+02:00 Fernando notifications@github.com:

As I said before. Is under development. I want to create a website to give every body access to make impress presentations easily and free.

The code I'm not sure if will be open source, but we will see how it goes. Wish me luck.

— Reply to this email directly or view it on GitHub https://github.com/bartaz/impress.js/issues/435#issuecomment-103893698.

bartaz commented 9 years ago

Hi folks, impress.js has now a new home at https://github.com/impress/impress.js

Also Rails Girls Summer of Code is starting soon, so I hope to make some moves and updates during next couple of months and hopefully this will allow me to make impress more open to contributions and invite some collaborators to the organisation.

Pierstoval commented 9 years ago

Yeah, can't wait! :+1:

FagnerMartinsBrack commented 9 years ago

:dancer:

FagnerMartinsBrack commented 9 years ago

I just want to point out that @bartaz should make it clear what "presentation" means in impress context. I can interpret "presentation" as a bunch of slides that form a website with form controls, etc. Not just public presentation in slides format.

One thing I realized looking through several issues is that the value of impress is not just for static presentations, but to be used as a core framework that uses CSS 3D transform to provide a simple API with the concept of "steps" instead of "slides". A step may contain a slide, or may contain nothing.

The contract of the public API must be really low-level, in a way that it could also be conveniently integrated with frameworks like AngularJS, while making it clear that the project cannot handle all use cases in a single repository.

FagnerMartinsBrack commented 9 years ago

Here are some suggestions:

  1. Create a principle that express in one or two sentences the purpose of this project, that might close a lot of issues that seems unrelated for what this project specifically is meant to. "It's a presentation framework based on the power of CSS3 transforms and transitions in modern browsers and inspired by the idea behind prezi.com" is too broad, that should be the definition of the organization, not the core.
  2. Make it clear beforehand that it should be low-level enough for anyone to integrate with angular and other MV* Frameworks or libs (I am familiar with Angular only, sorry) or use it standalone.
  3. Create an abstract UML-based architecture to expose the design and let other people suggest enhancements based on specific purposes inside the principle (1) and with practical obvious usage.
  4. Create the API docs first to have an idea of how the thing is going to work.
  5. In the end, start developing.

Just remember the cost of change, it also applies to OSS projects:

Here is an example of what I am talking about, it was continued from another project, and it's API was practically rewritten leaving the core intact. The same could be done for impress.js, but with a stronger participation from the community.

and3rson commented 9 years ago

@bartaz This is really a very interesting discussion - the moment when the project has to somehow continue its existence and decide a path for future.

Personally I agree @FagnerMartinsBrack that we can make some minor changes to impress.js that won't affect its functionality, but rather make it expose its API functions and internal state variables to make writing plugins easier.

I suggest just to make everything kept in a global prototype so that it can be easily changed or decorated. E.g.:

Impress.prototype.impress = function() { /* constructor */ };
Impress.prototype.api = {next: {}, prev: {}, goto: {}, init: {}, ...};
Impress.prototype.values = {currentState: ..., ...};

Personally I already have a contribution for cool swiping support (which I can implement if @bartaz decides to proceed with this kind of solution.)

I would really love this. Having a project with plug-ins is always cool and flexible.

P. S. I think I'm a bit late (by few years or something) :) P. P. S. 25k starts - that's so damn cool.