Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ElixirSense Roadmap #42

Open
msaraiva opened this issue Feb 21, 2019 · 10 comments
Open

ElixirSense Roadmap #42

msaraiva opened this issue Feb 21, 2019 · 10 comments

Comments

@msaraiva
Copy link
Owner

@JakeBecker @axelson @slashmili @untra @OvermindDL1 @akash-akya @lukaszsamson @Trevoke

Hi folks!

I'm bringing you guys to this discussion based on the most recent issues/PR. So I believe you still maintain a project that is somehow related to this one. If that's not the case, please just ignore it. If you know anyone else that might be interested, just bring him/her in.

I decided to create this issue to discuss the future of ElixirSense, but first I need to leave a few words so we can all have a good understanding of the current state of this project.

As many of you have noticed, I haven't been maintaining this project for a few months. Since I started this project, the only way I could find to maintain it was working on my spare time. Unfortunately, spare time was something that became very rare over the last couple of years. The demands of the job along with other projects took all of my energy and I ended up completely burned out. After that, I decided to take a break and spend more time with family and friends, as well as with other non-dev activities. During this period of time, I barely read issues or PRs, so I apologize to all of you that tried to contribute and didn't get a proper answer. I know how frustrating can be to dedicate time and effort to something you're excited about and don't get the recognition it deserves.

So what has changed since then? Well, I've changed a lot of things in my life, including a new job. Now I spend 100% of my working hours dedicated to Elixir, mostly open source projects, which gives me the perfect opportunity to get back to this project. I truly believe this project is extremely important to the Elixir community. Before ElixirSense, editors were not capable of retrieving context-based information to the user, which provides a poor experience, especially to newcomers. I believe most Elixir developers are using editors that depend somehow on this project (although they don't even know this project exists). So, here is my plan:

First, I need your help with:

  • Listing all active projects that depend on ElixirSense and for each project:
    • Identifying what part they depend on. For instance, do they access the library directly through the API (like ElixirLS) or they are using the server (like atom-elixir)? This is important since I'm considering extracting the server from the project.
    • Is there any additional features/fixes implemented that could be pushed to ElixirSense?
  • Identify the most wanted features requested by users. I really need your help on this one since most of those requests will be directed to the editor's project, not to ElixirSense.

My priorities:

  • Review and, hopefully, merge all submitted PRs.
  • Add some new features that were never released. Yes, I have some on local branches. Like:
    • Suggestions for function arguments that are keyword list (options). Example:
        GenServer.start_link(__MODULE__, [], <-- cursor
      
      suggests:
        [
          %{
            name: :debug,
            spec: "debug :: [:trace | :log | :statistics | {:log_to_file, Path.t}]",
            summary: "Debug options supported by the `start*` functions",
            ...
          },
          %{
            name: :name,
            spec: "name :: atom | {:global, term} | {:via, module, term}",
            summary: "The GenServer name",
            ...
          },
        ...
        ]
      
  • Review all pending issues
  • Split the project into two different projects: the library and the server.
  • Refactor tests that depend too much on the source instead of the features (I think there's a PR already addressing this)
  • Create a blog post + Elixir Forum so we can reach more people interested in contributing.
  • Rewrite the parser in order to get more context information.

There are more features I want to add but first I need to make sure the project is back on track before start working on them.

Thank you all for contributing!

Cheers!
-marlus

@slashmili
Copy link

It's good to hear that you are back and can spend more time on this project 🎉

As for alchemist.vim, it is the client of the ElixirSense server. it works the same way as atom-elixir

As for the feature, I'm not sure if it's the scope of this project or not but some people asking for dialyzer support. Some of the Elixir editor plugins have implemented their own way. Would be nice that we all use the code base to provide dialyzer reports to the users

@axelson
Copy link

axelson commented Feb 21, 2019

@msaraiva Hi! It's great to hear from you and I'm super glad/excited that you are back and have more time/energy to work on Elixir open source projects! 🎊

The demands of the job along with other projects took all of my energy and I ended up completely burned out

A few months ago me and a few others (namely @Trevoke and @asummers) noticed that both you and @JakeBecker had gotten burned out (or at least were no longer active) and bugs and PR's were piling up. And we all agreed with you that "... this project is extremely important to the Elixir community". So we wanted to exert our efforts to sustain these important projects going forward and we felt that the best way to accomplish that goal was to create an organization (https://github.com/orgs/elixir-lsp) to house and maintain the repositories.

The benefits of housing the repositories under an organization are that by sharing the maintenance burden of a project under multiple people it helps prevent the type of burnout that both you and @JakeBecker experienced. In addition we feel that it gives users more confidence in the future of the project because it raises the bus factor of the project.

So with that said if you are willing we would like it if https://github.com/elixir-lsp/elixir_sense was the canonical location of the elixir_sense repository (with you as the owner of the repository). However, if you do not want the repository moved then we totally respect that and we have no intention of being a hostile fork. In that scenario we would still like to support you in maintaining the project however we can, whether that's through bug triaging, PR testing, or whatever else.

(if I said anything that anyone in the elixir-lsp org doesn't agree with then please feel free to correct me)

@msaraiva
Copy link
Owner Author

if you are willing we would like it if https://github.com/elixir-lsp/elixir_sense was the canonical location of the elixir_sense repository (with you as the owner of the repository). However, if you do not want the repository moved then we totally respect...

@axelson I have absolutely no problem with that! Actually, I think it's a great idea. I'll take a look at your fork to see how it has diverged from the original one and start working there.

some people asking for dialyzer support. Some of the Elixir editor plugins have implemented their own way. Would be nice that we all use the code base to provide dialyzer reports to the users

@slashmili I think @JakeBecker has developed support for dialyzer for ElixirLS. I'm not sure if we could bring some of that to ElixirSense. We need to take a closer look at it. My intention is to keep ElixirSense as simple as possible, focusing on the introspection features. I'll add it to our list so we can get more details and make a decision.

@axelson
Copy link

axelson commented Feb 23, 2019

@axelson I have absolutely no problem with that! Actually, I think it's a great idea. I'll take a look at your fork to see how it has diverged from the original one and start working there.

Great! I have added you as an admin on the https://github.com/elixir-lsp/elixir_sense repository so feel free to create/merge PR's and what-have-you! 🎊

@mpmiszczyk
Copy link

@msaraiva Have you considered Transferring Ownership. It might help with note about project being moved and elixir-lsp/elixir_sense would not show up as fork. Only downside would be merger of isssues, but since there are only 9 of those, it shouldn't be a big problem.

@msaraiva
Copy link
Owner Author

@mpmiszczyk I'd be glad to transfer the ownership of the project to elixir-lsp, however, I'm not sure how would the merging of issues and commits work. Would the transfer keep all new commits intact?

@axelson WDYT?

@OvermindDL1
Copy link

As far as I've seen in the past, a transfer will transfer everything, issues, PR's, history, wiki, everything.

@mpmiszczyk
Copy link

It seems I've misread the documentation. Somehow I believed that transferring would mean just change the root of the project, but it is more like moving the project to another user/organization. And somehow I imagined something merge ...

The target account must not have a repository with the same name, or a fork in the same network.

I guess that this complicates a lot such process, and makes it not worth it.

@Trevoke
Copy link

Trevoke commented Jan 22, 2020

For whatever it's worth, I would support transferring the repository over entirely.

On the fork side, we only exist because we can't have the original repository, I'd be happy to transfer the open issues and PRs and help match the project states.

@msaraiva
Copy link
Owner Author

On the fork side, we only exist because we can't have the original repository, I'd be happy to transfer the open issues and PRs and help match the project states.

Alright, folks.

What would be the steps to get this done? Is the following the way to go?

  1. Merge all commits from elixir-lsp/elixir_sense/master into msaraiva/elixir_sense/master
  2. Move all open issues from elixir-lsp/elixir_sense to msaraiva/elixir_sense
  3. Remove elixir-lsp/elixir_sense
  4. Transfer msaraiva/elixir_sense to elixir-lsp/elixir_sense

Is that our only choice? What about the history of issues and PR's in elixir-lsp/elixir_sense? Can we just lose all that? We also need to review any incomplete work that might exist in other branches and decide what to do with them. Thoughts?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants