es-analysis / plato

JavaScript source code visualization, static analysis, and complexity tool

Repository from Github https://github.comes-analysis/platoRepository from Github https://github.comes-analysis/plato

Project maintenance

cadavre opened this issue · comments

Hi,
I'm CTO of Jazzy Innovations company, based in Poland. Our company is using plato in several JS projects to track code quality over time. It's a great tool but we find more and more cases when it would be lovely to have plato extended here and there.

My question to @jsoverson (I blamed you on "Needs maintainer" entry in README :p) is: what are your expectations on maintenance of this library? I was thinking about making this project go forward with our team, we want to keep it open-source of course.

My question to community is: would you like to have this lib maintained? What are you missing or what you'd like to have changed?

Maybe there's already another tool to use? Or another fork of this lib which is growing and have potential?

I'm also interested in maintaining this. Our needs are really to do with support for larger projects, such as:

  • aggregate values through a directory structure for project overview
  • search for files
  • export different formats (e.g. HTML as now, JSON) so we can use different reporters and open up/separate the visualisation side of things
  • pass history to CLI, so we don't have to keep history either in git or build server or whatever
  • support for JSX out of the box (sorry it feels dirty, but it's so damn common these days)
  • support for custom evaluators (essentially a plugin system)
  • constraints for CI integration (fail if a file is particularly unmaintainable for example, or if overall project maintainability reaches a threshold)

I would definitely contribute if someone was actively maintaining

If you look under the forks of plato, you will see that there is a more recent, maintained version of the tool: https://github.com/the-simian/es6-plato. I haven't tried it out yet, but it is worth looking into it.

There are a few things I'd like to see:

  1. The ability for it to see () => {} functions. As it stands right now, unless the word function is used, I can't see what exactly the cog icons are pointing to.
  2. The ability to use non .js file extensions (ex: .jsx, .sh, no-ext)

@sradevski - Respectfully, I took a look at the repo you mentioned (as well as the one it's forked from) and neither seem to have a release later than 2014.

@eshinn Yeah, it seems that is true for the releases, but there are recent commits and I just judged based on that. I will try it out when I find the time and let you know if it is any good.

@es-analysis could we get some more contributors added to the organization? I'd be willing to contribute, along with a few individuals above.

I tried the fork https://github.com/the-simian/es6-plato and it works great! The last release on npm was 4 months ago, and there are no open issues with the project. I ran it on 2 of my React projects and it worked without any problem. I suggest you to look into it.

@zephraph this project needs a new maintainer, not just a few contributors. I can offer no time at all.

If someone wants to be the new maintainer, then submit a PR that incorporates any of the existing pull requests + new changes required and I'll add them to the group and give them publish access on npm.

@jsoverson it might make sense to ping @the-simian to see if will merge this changes into the main project?

Sorry, I've wanted to do this for some time, but I've been really overwhelmed. I've gotten my fork stable, and working, and I've fixed issues at they have come up, but I've been having a hard time to find time to make a possibly difficult PR (there could be a lot of merge conflicts at this point).

I appreciate the ping, I'll do it when I can, but I've had a challenge finding time to re-integrate to this one. I think that's a big job

So is this project maintained? or there are other forks actively maintained and updated.
@the-simian are you actively maintaining this project.

@jjpatel361 I am maintaining es6-plato right now, and I keep it up to date. I've not merged it into this projected mainly because I've heavily refactored the code to be simpler and I've added a lot of important things over time, its diverged enough

At some point I'd like to merge it all back in. I think since I forked some time ago, this project did add back in some es6-compatibility and stuff, but I havent taken the time to analyze all the updates since I forked.

SO the short answer is : I am actively maintaining my branch. The project lead here did make me a contributor and I've unfortunately not taken advantage of that yet and pulled the efforts i've made back into this 'more popular' repo.

Just a note... I have updated the underlying complexity reporting module, typhonjs-escomplex to 0.1.0. I've moved to Babel parser and all of the latest edge JS code should work. Bonus is that Typescript is now supported as well. I'll be submitting a PR soon to plato with the updates necessary. Some of the report structure has changed, so I'll be glad to do the update. @jsoverson Plato lives! ;P

What is the current status?

@DanielRuf Speaking for myself, I'm still maintaining es6-plato atm. Over time I've done so much refactoring here and there its been hard to consider re-merging into plato. I currently keep that up to date, handle its issues and so on. Right now a lot of folks are using that, myself included so I'm keeping the wheels on the bus on that front.

@DanielRuf I need to make another update to some of the metrics changed in the 0.1.0 update of typhonjs-escomplex. It would be good to get the attention of @jsoverson so when a patch is made it can be published. I'm still on a tail end of a sabbatical, so I plan to get started on updating typhonjs-escomplex Feb 12th/13th then can make a patch that week to Plato. It greatly updates the underlying code parser so all current / edge JS should be able to be parsed.

@the-simian there are issues as well seemingly with your fork es6-plato and latest Node versions as I checked out both to figure out how hard a current update would be. You downgraded grunt-casper to a significantly earlier version. I'll have more visibility on specific concerns in a couple of weeks.

The main issue is that the Plato source code itself is long in the tooth. The dev testing infrastructure no longer works with the latest version of Node. Particularly grunt-casper is no longer supported properly; see top 3 issues. So this needs to be stripped out or replaced. It's a lot of work to replace in general, but no so bad to just strip out, but then web based tests are not performed. No big deal IMHO given that just getting Plato to work with the latest JS standards keeps it alive for longer.

While Typescript can now be supported by typhonjs-escomplex of course there are various limitations built into how files are handled and usage of jshint / eslint is not valid. This also could be easy (1-2 hour change) or quite a bit more on how much needs to be gutted.

It would be great to get some communication going w/ @jsoverson to discuss how much of a scalpel I can take to things.

Of course @the-simian I'll be in touch as well. Perhaps it's time to think of a merge back into this repo more or less making es6-plato the canonical plato.

@typhonrt you're right, grunt casper is pretty old, and like I said before - the building/testing is really the part that needs the most help. The source code itself (not the testing infrastructure) is not so bad, but I'd do it differently now given a fresh start. That why I didn't explicitly downgrade grunt-casper, but rather I did not upgrade it due to some compatibility problems in later versions. Judging from your link its only gotten worse, and yes that needs to just be fully ejected from the project.
For now I might just remove it entirely. I'm honestly not interested in grunt at all as a taskrunner. I haven't used it myself in many years now, nor its successor Gulp in many years either.

You're right about eslint, at least on this code in this repo. In my own fork, I've made some changes over the months related to the eslint concerns. I can't remember them all offhand, but you're right that some attention was needed there. I believe its working properly on my fork right now.

I'm not opposed to making es6-plato the canonical plato, but you know what I really want to do? Start over on top of your parser. I'd rather build something with a modern build system in a framework like React. Should I even call that thing plato? Not sure, but I'll spend some time thinking about that.

@jsoverson
thanks for great tool plato
i wonder how is going on maintenance plan!
still do you looking for active maintainer?

i try to use plato in my es6 project however i failed because of some bugs.
of course, I solved the problem by forking, updating typhonjs-escomplex to 0.1.0, customizing the running eslint, and so on.

so i wanna send PR to fix some issue, but I do not know whether to choose your repo or @the-simian's.
i prefer to yours that is original and popular, but no more maintain.

if you want to keep going your project and still look for maintainer
I’m not sure if I have enough time to do this, but I will try your suggestion.

If someone wants to be the new maintainer, then submit a PR that incorporates any of the existing pull requests + new changes required and I'll add them to the group and give them publish access on npm.

if you don’t care about your project no more, how about you formally inform in README your followers to send the-simian’s repo after archiving yours?
wish others do not waste time worrying like me.

@the-simian if you're still actively maintaining es6-plato then you might as well just take this over and replace it with whatever state your fork is in.

@jsoverson
check it out #218

@jsoverson I saw this message, and I won't be able to look at this until after the 4th of July. I think that's a pretty good idea, tbh. Let me think about it. I know a project of this size, with all the Babylon ecosystem changes and things requires some close attention, tbh. I want to make sure I can stay atop of things if I do this.

@kyungilpark thanks for the PR but what this project needs is a full maintainer.

@the-simian seems best suited for it.

@jsoverson
Yes, I think so.
But he has not yet given a clear answer.
And es6-plato also has some issue for my project.

It's up to you. So I will not bother you anymore. 😭

plato is a great tool. Thank you.
We have developed a tool that has fewer features than plato, but can perform static analysis of JavaScript.
You can use it if you like.

https://github.com/ytetsuro/sabik