|
| 1 | +# September 11th 2017 |
| 2 | + |
| 3 | +Proactive week: RLS clients, irc meeting in #rust-dev-tools |
| 4 | + |
| 5 | +## Notes |
| 6 | + |
| 7 | +* RLS is basically 'done' for now, feature-wise |
| 8 | + - current effort mostly around more complex project configurations, e.g., Cargo workspaces |
| 9 | + - and stability/bug fixing |
| 10 | + - aiming for 1.0 around the new year |
| 11 | + - big internals improvements from compiler after that |
| 12 | +* VSCode extension is looking good! |
| 13 | +* Good time to focus on wider editor support |
| 14 | + - Some support already for Atom and NeoVim - kinda active |
| 15 | + - beginnings of things for emacs |
| 16 | + - xi: work hasn't seriously started yet (i think there may be an initial prototype) but would like to later this fall |
| 17 | +* Vim is most popular editor in Rust world, followed by VSCode, Sublime, Atom, Emacs (these three roughly equal shares) |
| 18 | +* In wider world Visual Studio is most popular |
| 19 | + - https://insights.stackoverflow.com/survey/2017#technology-most-popular-developer-environments-by-occupation |
| 20 | + - Potential for recruiting users |
| 21 | + - Necessary for being a serious Windows platform |
| 22 | + - However, no LSP client implementation, so harder work (but still do-able) |
| 23 | +* Some discussion of useful things in the RLS, see action items below. |
| 24 | + |
| 25 | + |
| 26 | +## Action items |
| 27 | + |
| 28 | +* Improve documentation (nrc) |
| 29 | + - config options |
| 30 | + - LSP coverage (i.e., which parts we use) |
| 31 | + |
| 32 | +* Website (nrc) |
| 33 | + - finish |
| 34 | + - where to host? |
| 35 | + |
| 36 | +* For impl period |
| 37 | + - issues for editor implementations (nrc) |
| 38 | + - write-up of what needs doing for Visual Studio (jntrnr) |
| 39 | + |
| 40 | + |
| 41 | +## Follow-up |
| 42 | + |
| 43 | +Atom announced atom-ide - first-class LSP support in Atom: https://blog.atom.io/2017/09/12/announcing-atom-ide.html |
| 44 | + |
| 45 | +rovar missed the meeting, but has done some work using RLS with Vim8: https://github.com/rrichardson/rustlangserver.github.io/blob/vim8/files/install_vim_rls.sh |
| 46 | + |
| 47 | + |
| 48 | +## IRC log |
| 49 | + |
| 50 | +``` |
| 51 | +8:02 AM <•nrc> hello! |
| 52 | +8:03 AM <•nrc> today we are talking RLS clients (in irc) |
| 53 | +8:03 AM <•nrc> the agenda is here: https://public.etherpad-mozilla.org/p/rust-dev-tools |
| 54 | +8:03 AM <•nrc> I'll just give people another couple of minutes before starting... |
| 55 | +8:03 AM <jntrnr> k |
| 56 | +8:05 AM <vlad20012_> o/ |
| 57 | +8:05 AM <matklad> btw, vlad20012_ now also works on IntelliJ Rust :) |
| 58 | +8:05 AM <jntrnr> cool :) |
| 59 | +8:06 AM <•nrc> hi vlad20012_ ! |
| 60 | +8:06 AM <•nrc> OK, so |
| 61 | +8:07 AM <•nrc> today I want to go over the current status of the RLS quickly, talk about prioritisation of work for new RLS clients, and get a handle on what work on clients is underway and what is blocked on what |
| 62 | +8:08 AM <•nrc> If anyone working on clients wants to bring something up, pop it on the agenda - we should have time for extra stuff, if not I can stick around to discuss after the meeting |
| 63 | +8:09 AM <•nrc> to start with, very quickly, the RLS is (I think) in a pretty good place - it's use of the LSP is pretty stable, most core features are implemented, and it is fairly stable (i.e., doesn't crash too much) |
| 64 | +8:09 AM <jntrnr> did it make it onto the train? |
| 65 | +8:09 AM <•nrc> information is till imperfect - a lot of that is bugs in the save-analysis layer of the compiler |
| 66 | +8:10 AM <•nrc> jntrnr: yes, although we are not quite installable on beta yet |
| 67 | +8:10 AM <•nrc> ^ this means we should be able to use the RLS with stable in 5 weeks time |
| 68 | +8:10 AM <•nrc> the biggest remaining feature is workspace support |
| 69 | +8:11 AM <•nrc> that brings with it some more stability for projects which are a bit more complicated than a single bin or library (which is where we currently have the most problems) |
| 70 | +8:11 AM → llogiq joined ([email protected]) |
| 71 | +8:11 AM <•nrc> the reference client is also working pretty well - still some bugs, but pretty well |
| 72 | +8:11 AM <jntrnr> this is the vscode plugin? |
| 73 | +8:11 AM <•nrc> so, I think it is a good time to be thinking about other clients |
| 74 | +8:11 AM <•nrc> yes |
| 75 | +8:12 AM → vlad20012_ joined ([email protected]) |
| 76 | +8:13 AM <•nrc> hopefully we'll have a 1.0 release of both the RLS and reference client (VSCode) early in the new year |
| 77 | +8:13 AM <•nrc> anyone have questions/comments about the RLS status? |
| 78 | +8:14 AM <raph_rc> comment: yay! |
| 79 | +8:14 AM <jntrnr> yeah, one question - do we have a sense from the compiler team when the frontend work will land that will let us drive more straight from the compiler? |
| 80 | +8:15 AM <•nrc> around the end of the year |
| 81 | +8:15 AM <•nrc> so, to expand on that |
| 82 | +8:15 AM <•nrc> there are some big changes to the compiler that will improve RLS latency and hopefully make it useful with large projects |
| 83 | +8:15 AM <•nrc> incremental compilation to type checking and demand-driven compilation |
| 84 | +8:16 AM <•nrc> they should also allow us to do compiler-driven code completion, which should be more complete |
| 85 | +8:16 AM <•nrc> however, there are some big changes to take advantage of this |
| 86 | +8:16 AM <•nrc> so it is going to be a post-1.0 thing |
| 87 | +8:17 AM <•nrc> ok, other editors |
| 88 | +8:17 AM <•nrc> there is a tracking issue here: https://github.com/rust-lang-nursery/rls/issues/87 |
| 89 | +8:18 AM <•nrc> Gnome Builder seems to be the most actively developed extension atm |
| 90 | +8:18 AM <•nrc> see this comment https://internals.rust-lang.org/t/interested-in-editor-support-for-the-rls/5873/4?u=nrc |
| 91 | +8:19 AM <raph_rc> i'd like to see xi added to the client list, even though work has barely started |
| 92 | +8:19 AM <jntrnr> Christian is also very responsive. If we have questions and want to reach out to him for comment about working with RLS, etc |
| 93 | +8:20 AM <raph_rc> i found the proof-of-concept impl here: https://github.com/google/xi-editor/issues/160#issuecomment-294995411 |
| 94 | +8:20 AM <•nrc> added :-) |
| 95 | +8:21 AM <•nrc> Otherwise, Atom and NeoVim have plugins and are somewhat active |
| 96 | +8:22 AM <•nrc> Anyone know of other work going on? |
| 97 | +8:22 AM <•nrc> oh emacs too |
| 98 | +8:22 AM <jntrnr> is emacs active? |
| 99 | +8:22 AM <•nrc> it does not seem active |
| 100 | +8:22 AM <•nrc> https://github.com/emacs-lsp/lsp-rust |
| 101 | +8:23 AM <jntrnr> unfortunate |
| 102 | +8:23 AM <bkchr> I use rls with emacs |
| 103 | +8:23 AM <•nrc> although it has had a couple of PRs recently |
| 104 | +8:23 AM <•nrc> ah from bkchr :-) |
| 105 | +8:23 AM <•nrc> bkchr: how is support? |
| 106 | +8:24 AM <bkchr> it is "okay". Most things work |
| 107 | +8:25 AM <bkchr> Currently there are some bugs with parsing the message headers |
| 108 | +8:26 AM <bkchr> I use spacemacs with the following layer: https://github.com/bkchr/rustrls/tree/my_branch |
| 109 | +8:27 AM <•nrc> you use that and the RLS/LSP support? Do they conflict? |
| 110 | +8:28 AM <bkchr> No, that layers uses the lsp-mode ^^ |
| 111 | +8:28 AM <bkchr> It is just an integration of the lsp-mode |
| 112 | +8:28 AM <bkchr> With shortcuts etc |
| 113 | +8:28 AM <•nrc> ah, ok |
| 114 | +8:28 AM <•nrc> is the lsp-mode just in your branch, or upstream too? |
| 115 | +8:29 AM <bkchr> just my branch. |
| 116 | +8:30 AM <bkchr> for upstream it is not stable enough, in my own opinion^^ |
| 117 | +8:30 AM <bkchr> Currently I'm using it daily |
| 118 | +8:30 AM <•nrc> because of the bugs parsing message headers? |
| 119 | +8:31 AM <bkchr> yeah and the overall quality of rls :D |
| 120 | +8:31 AM <bkchr> https://github.com/rust-lang-nursery/rls/issues/470 this one for example |
| 121 | +8:34 AM <•nrc> so, that leads pretty well into my big open question - what we can do on the RLS side to help client devs? |
| 122 | +8:35 AM <•nrc> that kind of issue (470, etc - stability with different build setups) is high priority for me, once we riding the trains properly |
| 123 | +8:36 AM <bkchr> Hmm good question, maybe good documentation for the options for example? |
| 124 | +8:36 AM <llogiq> I think making it as easy as possible to set up (and keep up to date) with various editors/IDEs is the way to bring in more testers. |
| 125 | +8:36 AM <jntrnr> nrc: I want to talk about this, but I think we also skipped the bullet between them |
| 126 | +8:37 AM <•nrc> jntrnr: the stackoverflow link? |
| 127 | +8:37 AM <jntrnr> basically that that Visual Studio, vim, and Sublime need some level of support |
| 128 | +8:37 AM <jntrnr> but it seems like currently we don't have that |
| 129 | +8:37 AM <jntrnr> (I didn't really phrase the bullet well) |
| 130 | +8:38 AM <•nrc> llogiq: do you have suggestions for how to do that? Beyond better docs? |
| 131 | +8:38 AM <•nrc> jntrnr: ok, yeah, I didn't get that :-) lets come back to that in a sec - it meshes with prioritisation |
| 132 | +8:38 AM <jntrnr> kk |
| 133 | +8:39 AM <•nrc> bkchr: by options to do you mean the specific configuration options? |
| 134 | +8:39 AM <bkchr> nrc: yeah |
| 135 | +8:39 AM <bkchr> nrc: I know where to look in the code, but for others it is maybe more complicated |
| 136 | +8:41 AM <llogiq> nrc: better docs, perhaps install scripts per editor/distribution/OS combination, advertising the possible options via blogs, etc. |
| 137 | +8:43 AM <•nrc> good ideas! |
| 138 | +8:44 AM <jntrnr> nrc: have we talked about the rls website? |
| 139 | +8:44 AM <•nrc> raph_rc: anything you think that would help you later with RLS support? |
| 140 | +8:44 AM <•nrc> ah, yes, booyaa[ has been working on a website for the RLS |
| 141 | +8:45 AM <•nrc> it covers a few of the clients |
| 142 | +8:45 AM <•nrc> https://github.com/rust-lang-nursery/rls/issues/261 |
| 143 | +8:46 AM <•nrc> it is pretty great! We need to figure out where to put it online and then advertise it a bit |
| 144 | +8:46 AM <jntrnr> you can play with it here: http://rls.booyaa.wtf/ |
| 145 | +8:46 AM <jntrnr> not sure if 100% up to date but you get the idea |
| 146 | +8:46 AM <raph_rc> nrc: i'm not aware of anything right now, but am happy to provide feedback as it comes up |
| 147 | +8:46 AM <•nrc> raph_rc: thanks! |
| 148 | +8:46 AM <raph_rc> we're in the fortunate place where we can make design decisions in xi to support rls |
| 149 | +8:49 AM <•nrc> OK, so in terms of moving forward |
| 150 | +8:49 AM <•nrc> we have the impl period coming up |
| 151 | +8:49 AM <•nrc> which is meant to be a few months where the Rust community is very implementation-focussed |
| 152 | +8:49 AM <•nrc> and a good time for getting new contributors involved and people working on new things |
| 153 | +8:50 AM <•nrc> which seems like a good time to try and move the needle a bit on clients |
| 154 | +8:50 AM <•nrc> I wonder how many clients we should focus on? |
| 155 | +8:51 AM <•nrc> and how to pick the clients |
| 156 | +8:51 AM <jntrnr> I think finishing what we have is important |
| 157 | +8:51 AM <•nrc> as jntrnr pointed out above, the stackoverflow survey showed VS, Vim and Sublime to be basically the most popular |
| 158 | +8:52 AM <jntrnr> and also three we don't have good support for |
| 159 | +8:52 AM <•nrc> but none of those have extensions started |
| 160 | +8:52 AM <jntrnr> right |
| 161 | +8:52 AM <jntrnr> just one data point: VS had 66% of the stackoverflow survey, but only 1.5% of the Rust survey |
| 162 | +8:52 AM <•nrc> so, I'm not sure how much weight to give new clients, vs pushing on existing ones |
| 163 | +8:52 AM <jntrnr> that's a *ton* of potential new developers getting onboard |
| 164 | +8:53 AM <mw> does VS integrate with the LSP? |
| 165 | +8:53 AM <jntrnr> no |
| 166 | +8:53 AM <jntrnr> I tried to ask around to see if they'll ever do that but didn't get any straight answers |
| 167 | +8:53 AM <•nrc> ah, so that would be a lot of work then? |
| 168 | +8:54 AM <jntrnr> no more than a normal plugin |
| 169 | +8:55 AM <•nrc> I guess you'd only have to implement the parts of the LSP you need, which is I think is like 50% |
| 170 | +8:56 AM <raph_rc> nrc: so _that_ would be helpful, if there is only a fragment of the LSP that's need, documenting what that is |
| 171 | +8:56 AM <raph_rc> obviously not as important for clients (like vs code) that already implement ~all of it |
| 172 | +8:56 AM <•nrc> OK, I can def add that |
| 173 | +8:57 AM <raph_rc> i imagine it might be a moving targets, more coverage as more features get added |
| 174 | +9:03 AM <•nrc> sorry, internet cut out |
| 175 | +9:03 AM <•nrc> it is moving, but not that quickly - we're more using existing parts and adding custom extensions, rather than using more of the existing parts |
| 176 | +9:04 AM <•nrc> tools team - is anyone interested in getting more involved with RLS clients? Either implementation or coordination (testing, tracking status, etc.) |
| 177 | +9:06 AM <•nrc> jntrnr: would you be able to write up some info about VS? If someone is interested, where to find info on VS extensions and the RLS, what language they'd be using, etc.? |
| 178 | +9:06 AM <jntrnr> jntrnr: I wish I had the information. I never worked on that side myself |
| 179 | +9:06 AM <jntrnr> but I could try to dig around and find it |
| 180 | +9:08 AM <•nrc> that would be great, thanks! Doesn't need to be super-details, just so someone can see whether they'd like to get involved |
| 181 | +9:09 AM <•nrc> OK, we're already a bit overtime, thanks everyone! |
| 182 | +``` |
0 commit comments