>> Hi, welcome to another episode of the One .Net Show.
Today we're going to be talking to Avi Avni,
who's a .Net Community Developer.
We're going to be talking about what it's like to work
with the .Net team on GitHub.
Okay, welcome Avi.
Avi quickly tell us a little bit about
yourself and then we'll dig into the topic.
>> Okay.
Thanks Richard.
So, my name is Avi Avni,
and I am a consultant at the company called SELA,
for consulting for the .Net developers.
And in my free time,
I am contributing to open source projects.
And it's really amazing to get the feedback
from the community and it's really
exciting to do this contribution
and you get the pull requests match to
the repository for source
that was closed five or four years ago.
>> That's true. It's true,
it's a major change.
So, maybe we should talk a little bit about what
the community is like to interact in.
One day you weren't
participating and weren't contributing,
and the next day you were.
What that transition's like
and what have you found the community like to work
with and the various .Net teams like to work with?
>> Okay, so first of all using C#.
So, people have lots of ideas to improve C#,
and someone will open
issue in the repository of the design of the C# language,
and he asks for
a feature and I wanted to check if I can implement it.
And I successfully did it and open the pull request in
the Coursera repository and the Roslyn compiler.
The pull request for
the Coursera already merged two weeks ago.
And now I am working with the Roslyn team to finish
and to merge the pull request to the C# compiler.
>> I see. So, you're like the owner of C# feature.
>> Yes, it's really exciting.
>> Yeah, you can definitely print
a T-shirt for that or put that on your resume.
Yeah, so what kind
of level of satisfaction does that give you?
>> From the beginning,
20 years ago when I started to program,
after hitting F5 and see the program run,
I ask, how do I write
something that take my code and run it myself.
And I wanted to do this in a real project,
like a real compiler.
So since then, I've tried to do something like this,
and when I saw that the compiler was open source,
I said this is my open opportunity to
do something like that for a real compiler.
And I started to investigate how I
can participate in this open source party.
>> Right. So, you're clearly a smart guy.
What did you have to learn to make it so that you could
build this change and make it good enough such
that the repo maintainance were accepted?
>> I didn't learn any university or
college degree in computer science, but I'm self-learner.
So, I tried to read a lot of
books in this issue of compilers,
and also did a course
called NAND to Tetris that you build
a computer from NAND gate and then you
write operating systems and compiler.
In the end you have
the Tetris that run on
computer that you created from scratch.
And after that, I did it.
I really wanted to do something
like that in a real compiler.
And as part of
the F# Support Foundation mentorship program,
I got a mentor that called Lincoln Atkinson.
He was F# compiler engineer in the F# team,
and he showed me how to start doing.
And we started doing it with improving
performance of some of the functions of the list models.
After that, we work on the big features called
color member attributes that was introduced in
the C# file and we implemented for F#.
And he showed me the first attribute how we implement and
I filled the rest of
the attribute and we work on it together.
And now in the Visual Studio 2017,
we have this feature.
>> That's awesome. Yeah, I know Lincoln,
super nice and smart guy
seems like his investment and you really paid off.
>> Yes.
After working with him,
I continued to contribute more features to F# compiler.
And then, I started to look how I
can contribute also to C# compiler.
>> Right. So, Avi you shared this with me earlier.
I have that pull request up.
Let's see if we can go here.
So, you won't be able to see this
because I don't have screen sharing turned on with you.
But I'm on the wrong one.
Right, this is visual F# for requests 1,025.
I think that's the one you were talking about.
>> Yes.
>> Yeah. So, looks like this was
merged almost exactly two years ago.
>> Yes.
>> You can see LinkedIn is there
kind of trying to help you.
Yeah, looks like he gave you a ton of feedback,
and you even got feedback from Don Syme, who's like-
>> Yes. It was really exciting to get
feedback from the creator of the F# language.
>> Yeah. I can see how that would be super great,
and then it was merged by Kevin Ransom,
and then made part of the language.
>> Yes.
>> Right. This one didn't
necessarily change the language,
but certainly it's the compiler.
So, there's this other one you were talking about,
I think now we're on course CLR 9189,
which was just just made tough a month ago,
and it looks like you created it on the start of 2017.
So, this process was quite lengthy.
>> Yes. I finished it in the middle
of polishing the 2.1 .Net core.
They wanted to wait until it would be finished,
and this feature will be in
the next version after 2.1 .Net core.
>> I see.
So, that's part of the reason why it took so long?
>> Yes.
>> Okay. Right. Let's looks
like here you were working with Young,
it looks like he was kind of like
your mentor, and also Avi.
I know both of them quite well.
So, it looks like this was quite a lengthy conversation.
>> I have something to say.
After Lincoln mentored me,
I became a mentor for three guys,
and teach them how to contribute to the F# Compiler,
and in the last round,
I'm working with someone called William,
he is working on a really great feature for F# Compiler.
>> Okay. So, you're the teacher now?
>> Yes.
>> Very nice.
>> I really have to do it.
>> LinkedIn's investment it's just
like paying off like crazy here.
>> Yes. I also told William.
>> Go ahead.
>> I also told William that I
want him to be a mentor in the next round of F#.
>> Nice.
>> So, I see this nice message from Young.
He's saying, "After all this,
thank you for your persistence in pushing this through.".
I find that to be quite encouraging.
>> Yes. It was hard to implement that.
The first fix was simple,
but there was a lot of things around
to fix that the .Net core asked,
and it takes time to figure out how to do it,
and I continue to work on it until I finished it,
and until they approve it.
>> Right. So, it looks like here you have a work in
progress PR on the Rez repo of the same name,
and I already have that opened up here.
So, it looks like this is kind of a counter
like the the related chains to go on Rez compiler,
and now you're kind of working with
a different set of folks on this.
>> Yes.
>> Maybe you can kind of talk
about building a feature
that spans repositories and team,
sounds like quite a challenge for
someone in the community,
but it seems like you're actually
being successful doing that.
So, could you talk a little bit about that process?
>> Yes, because locally, on my computer,
I can compile both of
the Coursera and the Roslyn compiler,
and check that my feature works.
There are screenshots in the pool request,
that show that my feature works.
>> Right. I saw them there, and [inaudible]
>> I need to wait for the first preview of
the next Coursera to be released.
So, I can use it in the test of the Roslyn repository.
>> Right. So, do you know which version
of C# this going to get added to?
>> Yes. In the repository of Roslyn,
there is tables showing
what features will be in every version,
and they wrote a line in
the day that the generic attributes first
chair will be in the version eight of the session.
>> Okay. That's all I would have expected.
So, it sounds like this has been pretty positive.
Could you tell us a little bit
about which parts you wish could have gotten better?
And also how you'd like to see .Net
core and or C# evolve going forward.
Two very different questions.
>> Yes. One thing that
need to be better is the build time.
Today, to compile the whole Coursera,
it's taking a lot of time,
and to check simple change
is taking a lot of time to wait for the build to finish.
>> Okay.
>> What was the second question?
>> Yeah. Well, so, was that
the primary thing that you wish had been
different about your experience or anything else?
>> I think no.
Individual F# Compiler, because
it's more smaller than the Roslyn,
then the feedback is really fast.
In the Roslyn compiler, it's less fast.
So, it's a little slow.
So, more fast response.
>> Okay.
Makes sense.
So, how would you like to see,
now that you're one of the compiler designers,
and product contributors.
How would you like to see .Net and C# evolve.
Do you have any any thoughts on that?
>> I don't know.
I love to see what people ask,
and if I ask to change C# or in Coursera,
and to see if something is interesting to me,
I'll try to implement it.
>> Okay.
Maybe a different question then.
So, you must have gotten some sense of working with
the language designers when you've got this feature.
Well actually, was this generic attribute feature,
was it already designed by the time you got to it?
>> No.
Someone wrote issue that
he want to use something like that.
>> I see.
>> There was a problem that involved with
the Coursera and Roslyn.
So, I started with the Roslyn
and solve the problem in
the Coursera and then I debug the Coursera,
and fix the problem.
>> Makes sense.
I guess.
What's your take on the kind of feedback you've been
receiving from the folks on the team?
>> As you can see in the comments,
it's really exciting, and people love it.
You can see also in the reactions of the GitHub.
They have lots of thumbs and hearts.
>> Right.
So, I think what you're saying
is there's a lot of encouragement and positive attitude.
>> Yes. In the F# community for example,
there are some blogs that show that they use the feature.
>> Nice.
>> Yes.
>> Right. So, that brings you more satisfaction then?
>> Yes.
>> Cool.
So, I kind of hear that you
started from not being a community contributor.
You had a really positive help
and mentorship from someone
who was already in the community,
and in that case on the team,
and then you've kind of risen up through
the ranks as a way of saying it,
and you now kind
of have the confidence to take on more features.
>> Yes. I have more confidence and I need more time,
but if something is okay with my time,
then I will go for it.
>> Nice.
Okay.
Well, thanks so much for your time in talking today.
I don't know what time it is where you're at.
>> 8:00 PM.
>> Okay. Yeah. It's almost 12 hours difference here.
Thanks for making those contributions
that your story is a great one.
And clearly, you're helping to make the product better.
>> Thank you for doing this talk.
I was really excited about it.
>> For sure.
Okay, and thanks everyone for listening
to another On .Net Show.
And today, we learned about
community contribution from Avi Avni. Thanks.