Stream: wg-traits

Topic: structure of the working group


nikomatsakis (Feb 22 2019 at 19:59, on Zulip):

OK, @Aaron Turon -- so, I think we're in agreement that the "traits" effort includes a lot of subprojects and subtasks, some of which are clearly compiler, some lang, and some in between

nikomatsakis (Feb 22 2019 at 19:59, on Zulip):

you mentioned the idea of "what is the right way to update community", I think that's an interesting angle

nikomatsakis (Feb 22 2019 at 19:59, on Zulip):

I'm trying to decide how to write out those "subprojects" etc

Aaron Turon (Feb 22 2019 at 20:00, on Zulip):

Yep -- and I think it often turns out that "updating the community" and "updating relevant teams" are extremely well-aligned :)

nikomatsakis (Feb 22 2019 at 20:00, on Zulip):

I see e.g. a feature-based division

nikomatsakis (Feb 22 2019 at 20:00, on Zulip):

but I also see that within one of those, there are divisions

Aaron Turon (Feb 22 2019 at 20:00, on Zulip):

ah, one sec, i have some thoughts from the lang side

Aaron Turon (Feb 22 2019 at 20:00, on Zulip):
Aaron Turon (Feb 22 2019 at 20:01, on Zulip):

cc @centril

nikomatsakis (Feb 22 2019 at 20:01, on Zulip):

/me reads :)

nikomatsakis (Feb 22 2019 at 20:02, on Zulip):

specialization is an interesting case

nikomatsakis (Feb 22 2019 at 20:02, on Zulip):

it feels like it could be subdivided

Aaron Turon (Feb 22 2019 at 20:02, on Zulip):

hm, potentially yeah

nikomatsakis (Feb 22 2019 at 20:02, on Zulip):

it has a kind of zoo of extensions etc

Aaron Turon (Feb 22 2019 at 20:03, on Zulip):

ah yes, true

nikomatsakis (Feb 22 2019 at 20:03, on Zulip):

not to mention the "soundness fix"

Aaron Turon (Feb 22 2019 at 20:03, on Zulip):

so i sort of think there's a fractal structure here, where what we want for the WG is similar to what we're trying to do for Lang/Compiler itself

nikomatsakis (Feb 22 2019 at 20:03, on Zulip):

I suspect we can ignore intersection impls (lattice impls)

nikomatsakis (Feb 22 2019 at 20:03, on Zulip):

so i sort of think there's a fractal structure here, where what we want for the WG is similar to what we're trying to do for Lang/Compiler itself

yes

nikomatsakis (Feb 22 2019 at 20:03, on Zulip):

I was thinking similar things

Aaron Turon (Feb 22 2019 at 20:03, on Zulip):

that is, we have this big list of potential topics for the WG, and i think we want to designate some of them as "active" (with clear list of folks working on it) and some on the "short list"

nikomatsakis (Feb 22 2019 at 20:03, on Zulip):

right

nikomatsakis (Feb 22 2019 at 20:04, on Zulip):

and I think we may want to even split a bit more

nikomatsakis (Feb 22 2019 at 20:04, on Zulip):

I guess I'd prefer not, to start

Aaron Turon (Feb 22 2019 at 20:04, on Zulip):

similarly, WG meeting probably wants updates from the various projects, and then periodically gives an overall summary to compiler/lang

nikomatsakis (Feb 22 2019 at 20:04, on Zulip):

but you could imagine, if we get sufficiently "empowered", that we kind of split out "folks on specialization", who have their own meeting

nikomatsakis (Feb 22 2019 at 20:04, on Zulip):

but I definitely think we want to start out focusing on one or two things

Aaron Turon (Feb 22 2019 at 20:04, on Zulip):

yeah

nikomatsakis (Feb 22 2019 at 20:05, on Zulip):

your list of course ignored things like "chalk transition"

nikomatsakis (Feb 22 2019 at 20:05, on Zulip):

which isn't really a lang team consideration

Aaron Turon (Feb 22 2019 at 20:05, on Zulip):

right, my list was purely on the lang side

nikomatsakis (Feb 22 2019 at 20:05, on Zulip):

looking at it from the compiler team side, I remain pretty interested in trying to look specifically at lazy normalization and generic associated types

Aaron Turon (Feb 22 2019 at 20:05, on Zulip):

i personally have a lot less clarity on how the compiler side should get broken down

nikomatsakis (Feb 22 2019 at 20:05, on Zulip):

and try to see if there is some "short path" to be made there

nikomatsakis (Feb 22 2019 at 20:06, on Zulip):

which, in fact, might be a good candidate for some technical work on my side:)

Aaron Turon (Feb 22 2019 at 20:06, on Zulip):

:)

nikomatsakis (Feb 22 2019 at 20:06, on Zulip):

(I sort of feel an itch to do things, but it has to be something I can do in an hour or two here or there)

nikomatsakis (Feb 22 2019 at 20:06, on Zulip):

so I'm wondering about this

Aaron Turon (Feb 22 2019 at 20:06, on Zulip):

yep, i expect this would be a high-leverage activity

nikomatsakis (Feb 22 2019 at 20:06, on Zulip):

I feel like the list you started on above is a bit too high-level

nikomatsakis (Feb 22 2019 at 20:07, on Zulip):

I'd be interested in trying to push down to more granular tasks

nikomatsakis (Feb 22 2019 at 20:07, on Zulip):

(ps, this is something I've been thinking about for a lot of projects)

Aaron Turon (Feb 22 2019 at 20:07, on Zulip):

yeah -- it was basically like "what are all the features we're thinking about wrt traits"

nikomatsakis (Feb 22 2019 at 20:07, on Zulip):

basically geting down to a kind of "sea" of next steps

nikomatsakis (Feb 22 2019 at 20:07, on Zulip):

and then trying to see if we can pick one or two that seem compatible

nikomatsakis (Feb 22 2019 at 20:07, on Zulip):

I'm not exactly sure what that means :P

nikomatsakis (Feb 22 2019 at 20:08, on Zulip):

i.e., you could imagine saying "we'll do some very compiler focused and some very lang focused"

nikomatsakis (Feb 22 2019 at 20:08, on Zulip):

since those are like .. nonoverlapping

Aaron Turon (Feb 22 2019 at 20:08, on Zulip):

feels like the "Getting Things Done" methodology :)

nikomatsakis (Feb 22 2019 at 20:08, on Zulip):

basically geting down to a kind of "sea" of next steps

every time I try to do this, I kind of get stuck trying to figure out how to "represent" those

nikomatsakis (Feb 22 2019 at 20:08, on Zulip):

I guess for now just some big paper document or something is the way to start

Aaron Turon (Feb 22 2019 at 20:08, on Zulip):

now you're talking my language ;-)

nikomatsakis (Feb 22 2019 at 20:09, on Zulip):

yeah I mean I always start there, and it kind of works

nikomatsakis (Feb 22 2019 at 20:09, on Zulip):

but after a while I find I want a spreadsheet

nikomatsakis (Feb 22 2019 at 20:09, on Zulip):

then I convert it

nikomatsakis (Feb 22 2019 at 20:09, on Zulip):

then I find, oh, wait, I want to write more

nikomatsakis (Feb 22 2019 at 20:09, on Zulip):

then I convert it back

Aaron Turon (Feb 22 2019 at 20:09, on Zulip):

lol

nikomatsakis (Feb 22 2019 at 20:09, on Zulip):

then I think "I want to assign these to people"

nikomatsakis (Feb 22 2019 at 20:09, on Zulip):

and I start making issues

nikomatsakis (Feb 22 2019 at 20:09, on Zulip):

and they get out of date

nikomatsakis (Feb 22 2019 at 20:09, on Zulip):

etc

nikomatsakis (Feb 22 2019 at 20:09, on Zulip):

but whatever that's life :P

nikomatsakis (Feb 22 2019 at 20:09, on Zulip):

"welcome to project management, kid"

nikomatsakis (Feb 22 2019 at 20:09, on Zulip):

"an endless stream of converting lists of tasks from one format to another"

Aaron Turon (Feb 22 2019 at 20:10, on Zulip):

this all feels very validating lol

nikomatsakis (Feb 22 2019 at 20:10, on Zulip):

actually, omnioutliner ...

nikomatsakis (Feb 22 2019 at 20:10, on Zulip):

did you ever use that?

nikomatsakis (Feb 22 2019 at 20:10, on Zulip):

of course, I can't use it now

nikomatsakis (Feb 22 2019 at 20:11, on Zulip):

/me sheds a tear for all the great mac apps

nikomatsakis (Feb 22 2019 at 20:11, on Zulip):

also, it was not on the internet

nikomatsakis (Feb 22 2019 at 20:11, on Zulip):

anyway...

Aaron Turon (Feb 22 2019 at 20:11, on Zulip):

did you ever use that?

i didn't. only ever omnigraffle (which was pretty cool)

nikomatsakis (Feb 22 2019 at 20:12, on Zulip):

basically I feel like what I want is sort of a spreadsheet where I can expand to write text

nikomatsakis (Feb 22 2019 at 20:12, on Zulip):

so I can reorder rows and hide details etc

nikomatsakis (Feb 22 2019 at 20:12, on Zulip):

but anyway

Aaron Turon (Feb 22 2019 at 20:12, on Zulip):

"welcome to project management, kid"

this is somewhat offtopic, but i do wonder if this is an area where we could call for help from people with more experience, or who particularly like this kind of tracking work

nikomatsakis (Feb 22 2019 at 20:12, on Zulip):

it does feel like there must be a better answer

nikomatsakis (Feb 22 2019 at 20:13, on Zulip):

but then again most people seem to just hate on the tools i've heard about

Aaron Turon (Feb 22 2019 at 20:13, on Zulip):

could be worth looking at GitHub projects again

nikomatsakis (Feb 22 2019 at 20:13, on Zulip):

I was wondering about it

nikomatsakis (Feb 22 2019 at 20:13, on Zulip):

well, for now I created a DropBox paper document that contains the stuff you added before

nikomatsakis (Feb 22 2019 at 20:13, on Zulip):

I mean what I sort of want is to like buy a bunch of index cards

nikomatsakis (Feb 22 2019 at 20:13, on Zulip):

and spread them out into big piles

Aaron Turon (Feb 22 2019 at 20:14, on Zulip):

that... sounds like GitHub projects :)

nikomatsakis (Feb 22 2019 at 20:14, on Zulip):

yeah, I know

nikomatsakis (Feb 22 2019 at 20:14, on Zulip):

but I am skeptical of that particular incarnation

nikomatsakis (Feb 22 2019 at 20:15, on Zulip):

maybe I am wrong to be so skeptical

nikomatsakis (Feb 22 2019 at 20:15, on Zulip):

worth another try

nikomatsakis (Feb 22 2019 at 20:18, on Zulip):

@Aaron Turon I don't really remember, how close do you think the "sound and ergonomic specialization" blog post is to a real proposal?

nikomatsakis (Feb 22 2019 at 20:18, on Zulip):

I need to re-read, clearly

Aaron Turon (Feb 22 2019 at 20:19, on Zulip):

@nikomatsakis i think it's pretty close

Aaron Turon (Feb 22 2019 at 20:19, on Zulip):

i'm sure there's missing detail of course

Aaron Turon (Feb 22 2019 at 20:19, on Zulip):

but the overall idea is pretty clear

nikomatsakis (Feb 22 2019 at 20:20, on Zulip):

that's my memory

nikomatsakis (Feb 22 2019 at 20:24, on Zulip):

ok, so I sort of sketched out what I see as the next steps for specialization -- it's an interesting case in that they are almost entirely on the chalk side right now

Aaron Turon (Feb 22 2019 at 20:26, on Zulip):

yes, that was my impression also :+1:

nikomatsakis (Feb 22 2019 at 20:30, on Zulip):

@Sunjay Varma man, do you remember, a long time back we kind of walked through what was needed to implement GATs in rustc -- I don't recall where we took notes, though..maybe you do?

Sunjay Varma (Feb 22 2019 at 20:32, on Zulip):

Yes let me find them

Sunjay Varma (Feb 22 2019 at 20:32, on Zulip):

These notes are probably SUPER outdated

Sunjay Varma (Feb 22 2019 at 20:34, on Zulip):

# 2018.03.02

More refined list:

To do list copied from gitter:

Here's what I have on my personal to-do list for GATs:

1. Implement type checking things from call with Niko
- https://github.com/sunjay/rust/commit/2098edd0a2b9b2ffbb55d56bb5e31ca8d0576410
2. Check if lifetime shadowing should be supported and if so, make sure it is. Either way, add a test case.
trait Foo<'a> {
type Item<'a>;
// Self::Item<'a> refers to the 'a defined below, not the 'a in Foo
type Item2<'a>: Iterator<Item = Self::Item<'a>>;
}
3. Add parsing for additional forms of GATs (e.g. in trait bounds) -- see commented out portions in tests
4. Make sure turbofish/universal function call syntax works with GATs

Sunjay Varma (Feb 22 2019 at 20:34, on Zulip):

From almost a year ago!

Sunjay Varma (Feb 22 2019 at 20:34, on Zulip):

Those are the last notes we made when we had that call and I handed off the work

Sunjay Varma (Feb 22 2019 at 20:34, on Zulip):

I'm not sure what happened after that

Sunjay Varma (Feb 22 2019 at 20:34, on Zulip):

Maybe @tmandry knows?

nikomatsakis (Feb 22 2019 at 20:38, on Zulip):

@Sunjay Varma where did those notes come from? :)

nikomatsakis (Feb 22 2019 at 20:38, on Zulip):

I sort of remember writing them together

nikomatsakis (Feb 22 2019 at 20:38, on Zulip):

anyway, that's pretty helpful

Sunjay Varma (Feb 22 2019 at 20:38, on Zulip):

From our sunjay-nmatsakis document

Sunjay Varma (Feb 22 2019 at 20:38, on Zulip):

Very bottom

nikomatsakis (Feb 22 2019 at 20:39, on Zulip):

ah, awesome

Sunjay Varma (Feb 22 2019 at 20:39, on Zulip):

(thank goodness we kept all those notes lol)

nikomatsakis (Feb 22 2019 at 20:39, on Zulip):

:)

nikomatsakis (Feb 22 2019 at 20:39, on Zulip):

notes ftw

nikomatsakis (Feb 22 2019 at 20:39, on Zulip):

I just realized that although I removed myself from highfive

nikomatsakis (Feb 22 2019 at 20:39, on Zulip):

I have not been keeping up with my reviewing

nikomatsakis (Feb 22 2019 at 20:39, on Zulip):

that is, the existing assignments I had

nikomatsakis (Feb 22 2019 at 20:39, on Zulip):

sigh

nikomatsakis (Feb 22 2019 at 20:39, on Zulip):

I will do better next wek

nikomatsakis (Feb 22 2019 at 20:40, on Zulip):

but in particular, in there, there was a PR IIRC for one of these trait working group items

nikomatsakis (Feb 22 2019 at 20:40, on Zulip):

@Aaron Turon I may change the reviewer on that PR to you...

nikomatsakis (Feb 22 2019 at 20:44, on Zulip):

I...think I misremembered. I was thinking of https://github.com/rust-lang/rust/pull/57545

nikomatsakis (Feb 22 2019 at 20:56, on Zulip):

@Aaron Turon @centril y'all put "Inherent associated types" as "implementation" side -- do we have an RFC on this topic?

nikomatsakis (Feb 22 2019 at 20:56, on Zulip):

was that part of the original associated items RFC even? I can't recall

centril (Feb 22 2019 at 20:56, on Zulip):

@nikomatsakis yep; blocked on lazy norm?

nikomatsakis (Feb 22 2019 at 20:58, on Zulip):

@centril probably, feels like it'd be better to start there, as inherent associated items are not super high priority or anything

nikomatsakis (Feb 22 2019 at 20:59, on Zulip):

now I have to check, did you all put the whole type alias work on this list...

centril (Feb 22 2019 at 20:59, on Zulip):

@nikomatsakis i.e. "fixing the bugs" we wanted to fix for 2018?

nikomatsakis (Feb 22 2019 at 20:59, on Zulip):

yeah, and transitioning the impl to one based on lazy norm

nikomatsakis (Feb 22 2019 at 20:59, on Zulip):

at least those are the two sides of the coin for me

centril (Feb 22 2019 at 21:00, on Zulip):

no, I omitted those

centril (Feb 22 2019 at 21:05, on Zulip):

@nikomatsakis chalk + lazy norm seem to be the general unblocker for an assortment of language features and fixes

centril (Feb 22 2019 at 21:06, on Zulip):

(type aliases, inherent associated types, generic closures, GATs, ...)

nikomatsakis (Feb 22 2019 at 21:15, on Zulip):

well, I think GATs at least can be done another way

nikomatsakis (Feb 22 2019 at 21:15, on Zulip):

but definitely it would be helpful

scalexm (Feb 22 2019 at 21:19, on Zulip):

@centril I saw you wrote this in the paper: "we should weaken these to only work inside a crate to begin with so that we don’t have problems with GADTs"

scalexm (Feb 22 2019 at 21:19, on Zulip):

could you elaborate?

scalexm (Feb 22 2019 at 21:19, on Zulip):

I think you already did some time ago but I cannot remember :)

centril (Feb 22 2019 at 21:19, on Zulip):

@scalexm on the problems?

scalexm (Feb 22 2019 at 21:19, on Zulip):

yes

centril (Feb 22 2019 at 21:21, on Zulip):

Consider:

enum Foo<T: Bar> {
    Baz(u8),
    Quux(T),
}

if we have implied bounds that work cross-crate, then this cannot be later changed to:

enum Foo<T> {
    Baz(u8),
    Quux(T) where T: Bar,
}
scalexm (Feb 22 2019 at 21:21, on Zulip):

ok but the same is true for, e.g.:

enum Foo<T: 'a> {
    Baz(u8),
    Quux(&'a T),
}
centril (Feb 22 2019 at 21:21, on Zulip):

I know :frown:

scalexm (Feb 22 2019 at 21:22, on Zulip):

but yes I see the problem

centril (Feb 22 2019 at 21:24, on Zulip):

The lifetime thing is even worse, because we have lifetime elision and accept:

enum Foo<'a, T> {
    Baz(u8),
    Quux(&'a T),
}

but ideally we would really want this to mean:

enum Foo<'a, T> {
    Baz(u8),
    Quux(&'a T) where T: 'a,
}

and not:

enum Foo<'a, T: 'a> {
    Baz(u8),
    Quux(&'a T),
}
nikomatsakis (Feb 22 2019 at 21:25, on Zulip):

I don't know that this is true

nikomatsakis (Feb 22 2019 at 21:25, on Zulip):

You might want that, but you might want (e.g.) the freedom to change between variants

nikomatsakis (Feb 22 2019 at 21:25, on Zulip):

( I'm mostly just saying, it's pretty complex )

centril (Feb 22 2019 at 21:27, on Zulip):

@nikomatsakis not having cross-crate retains the freedom :slight_smile:

nikomatsakis (Feb 22 2019 at 21:27, on Zulip):

This reminds me -- on a separate note -- we were thinking at some point about trying to revisit things like AsRef

nikomatsakis (Feb 22 2019 at 21:28, on Zulip):

likely targeting the next edition, as it would likely be a backwards incompatible change

nikomatsakis (Feb 22 2019 at 21:28, on Zulip):

basically giving a way for traits etc to "opt out" of fragile inference

centril (Feb 22 2019 at 21:28, on Zulip):

more problematic is perhaps that you now need logic to avoid inferring where T: 'a on enum Foo<'a, T>

nikomatsakis (Feb 22 2019 at 21:28, on Zulip):

(if we had such a mechanism, it might be applicable here too)

nikomatsakis (Feb 22 2019 at 21:28, on Zulip):

that feels like something that should be on a list

centril (Feb 22 2019 at 21:29, on Zulip):

(avoiding to infer when Quux(&'a T) where T: 'a is written explicitly)

centril (Feb 22 2019 at 21:29, on Zulip):

@nikomatsakis say more re. opt out?

centril (Feb 22 2019 at 21:29, on Zulip):

sketch?

nikomatsakis (Feb 22 2019 at 21:34, on Zulip):

@centril I had imagined some form of attribute on a trait that basically instructs us not to pick an impl unless the input types are fully known (to some extent)

centril (Feb 22 2019 at 21:35, on Zulip):

ok hmm; I'll need more than that... ;) e.g. a snippet or something

centril (Feb 22 2019 at 21:35, on Zulip):

with "problem to solve", "here's how we solved it", and "why the solution worked"

Aaron Turon (Feb 22 2019 at 21:46, on Zulip):

@centril here's some elaboration:

struct Foo { .. };
struct Bar { .. };
impl AsRef<Bar> for Foo { ... } // this is the only AsRef impl for `Foo`

fn main() {
    let foo = Foo { .. };
    let bar = foo.as_ref(); // this will *infer* that bar: Bar because it's the only impl.
}

The inference here is brittle because if any additional AsRef impls are added for Foo, inference will stop working

Aaron Turon (Feb 22 2019 at 21:47, on Zulip):

we hit this in std a lot, where adding "innocent" conversion impls ends up breaking people's code that was relying on the inference

centril (Feb 22 2019 at 21:47, on Zulip):

@Aaron Turon oh yes; it seems to me that we'd want some sort of "don't assume it's the only impl" attribute

centril (Feb 22 2019 at 21:47, on Zulip):

(don't assume even if it is)

Aaron Turon (Feb 22 2019 at 21:47, on Zulip):

what @nikomatsakis is proposing is something like:

trait AsRef<#[do_not_infer] Out> { ... }
nikomatsakis (Feb 22 2019 at 21:50, on Zulip):

yep, sorry @centril, got pulled off to look at some beta backport things :)

centril (Feb 22 2019 at 21:51, on Zulip):

@Aaron Turon well, at least we have the syntactic support ready due to #[may_dangle] :D

centril (Feb 22 2019 at 21:56, on Zulip):

@Aaron Turon so... let's see if I understand this... #[no_infer] Bar means that when we have a unification var ?T, the inferencer will avoid equating ?T = MyBar due to constraints such as "only impl" and require that e.g. let bar: &MyBar = foo.as_ref(); or <_ as AsRef<MyBar>>::as_ref(&foo) be written explicitly?

centril (Feb 22 2019 at 21:56, on Zulip):

in a sense, #[dont_infer] is intentionally dumbing down the inferencer?

Aaron Turon (Feb 22 2019 at 21:56, on Zulip):

@centril yep!

Aaron Turon (Feb 22 2019 at 21:57, on Zulip):

when we first introduced type parameters to traits, we didn't intend for them to be inferred in this "clever" way, but it turned out to be pretty essential

Aaron Turon (Feb 22 2019 at 21:57, on Zulip):

IIRC @nikomatsakis wrote about this at length here

centril (Feb 22 2019 at 21:58, on Zulip):

This makes me wonder whether Haskell will infer Bar or not given MPTCs and a single instance

centril (Feb 22 2019 at 22:05, on Zulip):

@Aaron Turon

{-# LANGUAGE MultiParamTypeClasses #-}

data Foo = Foo
data Bar = Bar
data Ref a = Ref a -- Let's pretend...

class AsRef self to where asRef :: Ref self -> Ref to

instance AsRef Foo Bar where asRef = undefined

foo :: Foo
foo = Foo;

refFoo :: Ref Foo
refFoo = Ref foo

refBar = asRef refFoo

{-
main.hs:17:10: error:
    • Ambiguous type variable ‘to0’ arising from a use of ‘asRef’
      prevents the constraint ‘(AsRef Foo to0)’ from being solved.
      Relevant bindings include refBar :: Ref to0 (bound at main.hs:17:1)
      Probable fix: use a type annotation to specify what ‘to0’ should be.
      These potential instance exist:
        instance AsRef Foo Bar -- Defined at main.hs:9:10
    • In the expression: asRef refFoo
      In an equation for ‘refBar’: refBar = asRef refFoo
   |
17 | refBar = asRef refFoo
   |          ^^^^^^^^^^^^
-}
Aaron Turon (Feb 22 2019 at 22:08, on Zulip):

hah!

Aaron Turon (Feb 22 2019 at 22:08, on Zulip):

NB i've regularly abused our stronger inference to work around limitations

Aaron Turon (Feb 22 2019 at 22:08, on Zulip):

e.g. you can fake "mutually exclusive traits" that way

centril (Feb 22 2019 at 22:10, on Zulip):

(MPTCs are not that frequently used in Haskell I think... when they are, it's combined with fundeps which practically equal to associated type families, e.g. for monad transformers and such)

centril (Feb 22 2019 at 22:20, on Zulip):

@Aaron Turon @nikomatsakis wrote down the AsRef stuff in the paper doc

nikomatsakis (Feb 22 2019 at 22:21, on Zulip):

So I was thinking

nikomatsakis (Feb 22 2019 at 22:22, on Zulip):

we have our normal meeting scheduled on Monday

nikomatsakis (Feb 22 2019 at 22:22, on Zulip):

basically I was thinking it would be pretty valuable to try and go furthre with this roadmap and try to turn it into something more concrete

nikomatsakis (Feb 22 2019 at 22:23, on Zulip):

maybe extend the meeting to 1hr

nikomatsakis (Feb 22 2019 at 22:23, on Zulip):

I would say maybe use Zoom for more bandwidth, but I think many folks prefer Zulip, not sure about that part. With enough prep I think a Zulip meeting can do really well for these sorts of things but sometimes I also find it hard, because it's hard to keep the doc + the chat kind of both visible at once

nikomatsakis (Feb 22 2019 at 22:24, on Zulip):

anyway, I'm prob going to stop for now but I feel like I'm starting to see a picture here --

nikomatsakis (Feb 22 2019 at 22:25, on Zulip):

could also try to do a kind of "pre-call" to work some of this stuff out (maybe in our regular slot, @Aaron Turon?)

Aaron Turon (Feb 22 2019 at 22:25, on Zulip):

basically I was thinking it would be pretty valuable to try and go furthre with this roadmap and try to turn it into something more concrete

strong :+1: -- however, if we go with the monday meeting, we should be sure to ping additional stakeholders (e.g. the lang team)

Aaron Turon (Feb 22 2019 at 22:25, on Zulip):

that is, we had been thinking about making a WG-lang-traits group; that's getting folded into this one but we need to make sure to contact everybody

nikomatsakis (Feb 22 2019 at 22:25, on Zulip):

yeah. This is the time when I'm annoyed about the discord-zulip split :)

Aaron Turon (Feb 22 2019 at 22:25, on Zulip):

could also try to do a kind of "pre-call" to work some of this stuff out (maybe in our regular slot, @Aaron Turon?)

yep, that was pretty much what we were planning (on a more individual level) anyway

nikomatsakis (Feb 22 2019 at 22:26, on Zulip):

Right

nikomatsakis (Feb 22 2019 at 22:26, on Zulip):

I could just go ahead and throw that on the calendar with a zoom meeting

nikomatsakis (Feb 22 2019 at 22:26, on Zulip):

I'm trying to decide how much homework I want to do

Aaron Turon (Feb 22 2019 at 22:26, on Zulip):

hah

nikomatsakis (Feb 22 2019 at 22:26, on Zulip):

I feel like I need to do at leats some :)

nikomatsakis (Feb 22 2019 at 22:27, on Zulip):

Anyway, I'll create the event, we can ping lang team about it

Aaron Turon (Feb 22 2019 at 22:27, on Zulip):

i'm definitely game to help organize, since ultimately we want to grow me into helping lead this group

centril (Feb 22 2019 at 22:41, on Zulip):

@nikomatsakis is https://github.com/nikomatsakis/fields-in-traits-rfc/blob/master/0000-fields-in-traits.md the last work on FITs?

nikomatsakis (Feb 22 2019 at 22:41, on Zulip):

Yes basically, at least the last bit that's been written down :)

nikomatsakis (Feb 22 2019 at 22:42, on Zulip):

I feel like my thoughts have shifted some since I wrote it but I've not really revisited

centril (Feb 22 2019 at 22:47, on Zulip):

@nikomatsakis probably intersects with ideas in https://github.com/rust-lang/rfcs/issues/1215

Last update: Nov 12 2019 at 15:40UTC