A Sneak Peek at the Future of GitHub Copilot - GitHub Copilot X

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
I think this is it I think this is good looks like we've got some people here um if somebody wants to say um something in the chat to let me know that everybody's connected but in the meantime we can go ahead and get rock and roll in here so uh good morning good afternoon good evening depending on where in the world you happen to be my name is Christopher Harrison I'm a senior Enterprise Advocate at GitHub and today I'm really excited to chat about the future of generative Ai and GitHub co-pilot and in particular talk about GitHub co-pilot X What It Is What It Isn't what all it encompasses and sort of lay out where we think the future of generative AI is going when it comes to supporting developers now this is live so please feel free to ask all the questions that you want you may notice that I'm looking down periodically that's because that's where my instance of the chat is is I'm down here on my second screen um so if you want to ask questions feel free to go ahead and throw them on into the chat let me just open up the public screen um here we go and ensure that people are out there Yes No Maybe there we go perfect all right here we go excellent Okay cool so let's get on into it now I want to talk real quickly about kind of what the flow is going to be today so I'm going to go through a couple of intro slides and I'm going to talk a little bit kind of very quickly about copilot X but before I really dig into copilot X I actually want to take a step back talk a bit about GitHub co-pilot and then we'll go ahead and transition more into chatting about uh GitHub copilot X I'm also going to do off a lot of demo today I'm going to do an awful lot of coding because I think that that's really the best way to kind of understand what it is that we're looking to accomplish here and how it is that we think that this technology can help best support developers so you're going to notice a lot of live demos now what that also means is that I'll be doing live demos and I'll be doing live demos with products that are still in development so it is very likely that something is going to break it is very likely that things might not work exactly as expected and that's simply the nature of the beast that's simply the nature of live demos working with a beta product and also working with AI because it's not going to be deterministic so things might behave a little bit differently so for that I apologize but that's just sort of the the way that things flow so yeah exactly somebody says uh nothing works is planned on a on a demo absolutely and that will almost certainly be the case today so with all that being said let's kick right on into it and I always like to start basically every presentation that I do with this slide right here so I've been at GitHub for just shy of a year now and this slide has changed about four times in the amount of time that I've been here in particular that top left number of a hundred million developers the reason that I like to start with this slide is because you don't hit 100 million developers by solely focusing in on business customers by solely having developers that have been told go use this tool that instead what happens is these are developers that are choosing to use GitHub they're looking at the tool set that we we've built the tool set that we've provided and they're going hey this gives me what I need to be most successful at my job and that's because that is our primary focus our primary focus is around the developer that we want to make sure that the developer has the best experience that's going to enable them to do their best work and the biggest place that we've seen this change certainly over the last couple of a few months has been when it comes to GitHub co-pilot now a couple months ago we announced this thing called GitHub copilot X and so let's talk a little bit about what GitHub copilot X is first of all this is not a product and it's also not necessarily a suite of products but really what this is is our vision that when we released GitHub co-pilot what we saw is the power of generative AI when it comes to code creation of how it is that it can help support developers how it can make developers more productive and so we looked around and we went okay where else could this help what other interfaces are developers looking for and of course one of the biggest places and one of the places that we'll be spending the most amount of time on as we go through into our demos is looking for some form of interactive chat that chat GPT of course kind of set the world on fire if you will that there was a lot of excitement around this chat bot that I could go in I could ask questions and I could get human style answers but back from that and that's something that we as developers want to be able to have we think interactively and so being able to embed that right there inside of an IDE right there where I'm writing code that's going to be really big that's going to be really important and so that's one of the places where we're thinking about when it comes to generative Ai and how it can support Developers so GitHub copilot X is our vision that's really what we were announcing there is that these are all the different places that we see right now where generative AI can help out so this is not a an individual product this is not a roadmap necessarily but really it's an announcement of our vision and we'll get into some of the specifics some of the specific areas and some of the potential products that you might see shipped out at some point but the big thing that I want to make sure that I highlight here is that all of this is still very much in development all of this is still being explored so things very well may change that some of the products that we talk about today might not actually get released that some of the products that we talk about today might find themselves as part of separate products or might get rolled into other ones and so forth so please do keep in mind that all of this is very very very early on so before we get into GitHub copilot X though I think we want to take a step back and talk about GitHub copilot because this is really kind of where it starts so what is GitHub co-pilot GitHub copilot is an AI pair programmer that what GitHub called pilot will do is it will look at your context as you are writing code as you are adding in comments and start to make suggestions that probably the the most famous feature the most powerful feature that we see when we're talking about GitHub copilot is the ability to write a comment that a developer can write out a comment explain a natural language what it is that they're looking to do what it is they're looking to accomplish and then GitHub co-pilot can then make a suggestion of the next line of code of the next class of the next function of the next block of code that it thinks matches what that comment is looking for and then basing it around the context that it sees so for example if it sees that you're using a particular naming strategy for your variables or that you're using a particular tabbing strategy or that you're always using a particular feature that copilot will then use that context to help shape these suggestions that it is then going to make and what's really nice about that is that now that can allow me to offload boilerplate code that can allow me to offload repetitive code that when we think about writing code these days we've got all of these Frameworks that can really help us out but there's only so much that you can abstract away and that at some point you've got to write some level of code and sometimes that winds up being relatively boilerplate and so by being able to offload that out to GitHub co-pilot that allows me as the developer to be able to focus in on the bigger picture to be able to solve the bigger problems to allow me to better stay in the zone one of the other very big places and we'll actually come back and talk more about this later is when it comes to test creation that I don't think that there's an organization that's out there that feels really comfortable in the amount of tests that they have and if we're being honest as developers we don't necessarily always like writing tests but at the end of the day unit tests end-to-end tests they're just code and since GitHub co-pilot can write code for me then it can in turn write my unit tests for me as well that I can say hey create a unit test for this function or create a set of tests that's going to test for this this and this and GitHub copilot can help me out in that Arena now the way that it does its magic behind the scenes here is as I'm doing things inside my IDE it's going to send that context up to copilot it's going to use this custom model that we've built that's been trained out on billions of lines of publicly available code and then eventually send those suggestions down for me right there inside of my IDE so this is GitHub copilot and chances are you've probably already played around with this you've probably already seen some demos on this and and hopefully especially since you're connected you're kind of excited about this now GitHub called pilot is wonderful and I want to make sure that I'm very clear here in highlighting that what I'm about to say is a no way shape or form trying to downplay or poke holes at GitHub co-pilot because in my mind I have not seen a developer tool that's been released in in my programming lifespan that has had a greater impact on my productivity than GitHub co-pilot but that being said GitHub copilot is a tool and it's specifically built for me writing code inside of my IDE and so what we've seen is that's great and it's wonderful and it's wonderful to be able to support developers there but that's not the only place that developers I'm going to kind of kick ahead a little bit with my slides here that's not the only place where developers are looking to interact with the system or are maybe looking for the support of generative AI so GitHub co-pilot as it's currently built is a wonderful tool for my developer going in writing code and getting a little bit of support as they go but let's talk a bit then about some of the other places that my developers are going to be interacting with the system and might be looking for some level of support and so one of the biggest places is going to be co-pilot for the CLI so the power of copilot but they're inside of the terminal I am a big big fan of the CLI I love using the CLI um and there's a few different reasons for this that part of it is because I like to be able to create scripts that are going to make my life easier part of it's because I type relatively quickly and so being able to just and get right to exactly what it is that I'm looking for is extremely powerful and of course another very big part of that is the fact that when we look at a lot of the Frameworks that are out there and especially for me I'm I'm primarily a web developer when it comes to development there's so many CLI tools that are out there that basically every single web framework it seems has their own custom CLI and so trying to remember all of those little bits of syntax can become a little bit of a pain and so it'd be nice to be able to get some level of support right there as I'm doing my thing so Adam says um uh uh no more uh man than Google uh man being of course the uh the little help that you could get from the command line that's that's from the goal here that's that's where we're pointing to is to be able to interact with uh generative AI right there on the CLI so how does this work well let's go ahead and take a real quick look at a at a demo here so let me see can I get my layout here to just go full screen and get rid of me um let's see um no speaker videos there we go okay I knew I could do it all right just took me a minute to find it okay so let's go ahead and and take a look here and let me just um clear that out cool so what I want to do is I want to create a front end uh uh react app and I know that there's something about like create react app but I can't remember exactly what it is that I'm supposed to be doing so this is where uh copilot for CLI can come into play so this is going to start with two question marks and now I can right here naturally describe what it is that I'm looking for so I'm going to say create uh react app uh with name front end like that and oh oh [Music] um give me one second here hold on one second apparently the update that I made did not save like it should have not a problem give me two seconds here there we go okay beautiful all right sorry about that see I told you there was gonna be there was going to be a bug uh somewhere uh somewhere along the way all righty uh Brew install I love that yeah okay uh let's try this one more time here we go so I'm gonna go question my question mark and then I'm gonna say uh create react app with name uh front end there we go and then hit enter so now here's what we're going to notice is the response that I get back is here's the command npx create react app front end and then here's the explanation so npx is used to run the command uh from a package without installing it create react app is a package that creates new react app front to end is the name of the new app and then you're going to notice down below that it asks me whether or not I want to run this command so let's pause right here for a moment and let's talk a little bit about this so you'll notice that I started up at the very top with a bit of natural language this is what I'm looking to do copilot for CLI then comes back and says okay here's the command that I came up with so MPX create react app front end and then it's going to give me the full explanation one of the most important things that we always need to remember about generative AI is the fact that we're not always going to get back perfect answers we can in fact sometimes get back incorrect information now obviously this is something that nobody wants obviously uh we among many many many every other company that's doing anything in the generative AI space we are all working to help avoid that as best as we can but the simple fact of the matter is is that that can happen and when we're talking about writing code one of the very big things that we always want to remember is we need to keep in mind that any code that's been generated by generative AI should still go through all the normal processes so there should be a human review there should be automated code quality there should be Security reviews like all of the things that you would normally do to your code you want to do the exact same thing if it's GitHub co-pilot that's writing that code and in turn the same thing holds true here is that whatever it is that this is going to come up with I want to make sure that yes this is something that I want to run and especially when we start talking about the command line we definitely want to make sure that this is in fact going to do what I'm looking for it to do that if all of a sudden I'm seeing an rmfr an rmrf that I want to you know maybe be a little bit more cautious about that so that's why it's really nice to see here's the command here's the explanation and so now I can go oh okay yes this is what I was looking for I can see that's the explanation all of this looks really good let me go ahead and run that command am I sure yes let's go ahead and run that and then away it goes from there ux appears to be uh quite similar to figios um uh Al salei uh Hayden says I'm going to take your word for it I honestly have not worked with any of the tools outside of GitHub at some point I really should go back and and do that but um but I honestly uh uh haven't yet gone back and uh and and done that so um that being said can't wait to to get get your hands on it yeah I uh I I can't wait for everybody to have access to it as well uh there is back here yeah uh you'll notice that there's the waitlist URL right there so you can go ahead and uh and grab that so cool um Anna mentions that the description part is really important yeah could not uh could not agree more um and then Patrick says the default pre-selected option should probably be revised query not run command so I I absolutely hear that um but one thing you might have noticed is that even though I I hit enter on that in fact here let's just do this um our um RM RF um that front end that I just created let's just remove that real quick and then let's rerun that GitHub command okay so the default is run this command and let me hit enter on this and now what you're going to notice it gives me this follow-up it says this will execute this suggested command in your shell am I sure and the default is actually set to no here so even though that default is to run the command it's still giving me that follow-up of hey are you sure that you want to run this and the default is going to be no so I'm going to say yes because I do want to run this but the default is no so we are putting in that little bit of of a safety net there so yep yeah so Michael um uh linked directly out to the GitHub next uh location and in fact let's do this [Music] doesn't sound effects help by the way yeah so you can notice right here uh all of the different tools and so forth that we are building out and one of those is copilot for CLI uh usable prototype which is what I am currently playing around with and then you can sign up for the wait list there so if you just do a search for GitHub copilot uh sorry GitHub next do a search for GitHub next that will eventually get you to the page or you can hit the link that Michael shared out or you can come on hit that link that's right there let's see Patrick has the question does uh GitHub co-pilot or GitHub plan on allowing administrators to monitor requests logs and so forth so code Whisperer offers a more in-depth access to control management making it attractive to businesses so um I'm not able to speak to code Whisperer because again I haven't played around with the the product at all um when it comes to monitoring what's going on behind the scenes with requests and so forth first thing that I want to mention is that these round trips right here where we're setting up the questions setting up the context sending back the suggestion all of this is ephemeral meaning that it's a one-off that it's going to send up the information send it back and then none of that is going to be stored or logged anywhere so none of your code requests none of the code suggestions none of that's going to be stored there is usage data however that is stored and that's going to include thing things like the number of requests that somebody makes what the acceptance percentage is what the acceptance is but they go back and they modify the code those types of things right now we don't have a dashboard where you can see that but if you reach out to your GitHub rep they're going to be able to go pull that information for you we are working on getting out a um getting at a report screen where you could see that but as of right now that's not there so being able to see the exact uh queries and so forth that's not there and that's very much a design decision because we we want to keep all of that private so all of that winds up going away but as far as usage data goes that is something that we can provide to you and we are looking at building out a dashboard for that so cool cool all right let's see so let's go back to my uh GitHub CLI so you'll notice that it did in fact run create react app um as per uh I think almost any npm script uh there are some vulnerable packages that are installed so we'd have to go in and uh and update all of those and then it just ran that normal npx command so if I do an LS here you'll notice that I I now have that front end and if I kick on over to Visual Studio code which I already had open there is everything with my um uh with my setup just as I just as I would expect so there's my my front end my public my source to get ignored that it created because it ran npx create app so it's got all of that right there all of that through the uh through the CLI um you can also uh do something like this so I could say like get and maybe initialize uh directory I'm going to leave that typo in there um oops is it just simply one there we go one question mark okay so you'll notice that I did have a typo in there which I left in there on purpose I didn't type it on purpose but I left it in there and so now it'll come back and go hey you want to get a net and then I could go ahead and uh and run this command hit yes and then let it go from there and sure enough it it ran get a knit and you'll notice I got the uh the little change right there so pretty slick so you are able to now start to get a little bit of interactive support through generative AI right there inside of your uh right inside of your CLI and it does support being able to make uh General requests oops let me just get to the right slide here yeah uh General requests forget and then for the GitHub uh CLI as well using uh GH question mark now again this is a usable prototype this is still very much in early development so there's kind of the real quick overview of that and I'll pause here partly to take a sip of coffee and partly to see if there are any questions oh okay when can we use it uh that's a fantastic question and I don't have the answer to that so yeah one very big thing about GitHub next is anything that's there right now we don't have a roadmap and if I'm being honest not everything that Finds Its way into GitHub next will find its way out into the wild so there's still always a non-zero chance this might not be released out but it is something we're building it's something we're looking at it's something we want to ship so we'll see what happens from uh from there looks awesome thank you yeah I kind of like it I kind of dig out um how about Purge get commands like pull purse um uh pull push Branch merging Etc yeah so Tom asked this great question you know what about like um pure git commands Lin and and to kind of take this one one step further here is you know what about those um let's see let me do a split screen let me just get myself back on screen there we go so like what about those kind of more intriguing scenarios that that'll be the word that I will use there where you know maybe I've made a commit and I realized oh wait a minute I need to undo like just one file of that or maybe I pushed and I really didn't want to and I need to roll back to a prior commit and then push that out like how do I how do I start to do that and that really is kind of where we see this going is being able to support those types of commands so there's a there's a great website out there uh the the the PC version of it is I think it's oh shoot get uh that if you just fire up your favorite search engine just do a search for oh shoot get there's a a non-pc version uh on the website as well and it gives you a lot of like great help of like hey I made a mistake how do I undo that and that's kind of what we see for for the CLI is like those types of scenarios uh especially when we're talking about get because you know any developer that's been using it for I don't know more than about an hour and a half has probably made a mistake and went oh wait a minute I need to I need to do something different here uh and so being able to ask the CLI hey I made a commit but I need to roll one back roll back one file how do I do this uh would be really helpful so that's where we see this going um and and where are we seeing this this uh this being built out so yeah question uh and uh also including uh standard shell commands for like Zip folders and SSH yeah absolutely that that really is kind of where we see all of this Luigi asks a question what are the languages that are supported so get them co-pilot in general uh has been trained on publicly available code and text and at the end of the day it is a large language model and basically what's going to happen is that the more information that it has the better the suggestions are that it's going to be able to make that there's going to be a very tight relationship between those two uh between those two charts so when it comes to what languages is this going to support the more widely spoken a language is the better the support that you're going to uh that you're going to have so if you're using say English Spanish Japanese you know where there's there's a very large um uh large amount of publicly available text in those languages it's going to be able to support those languages really well if you're using a language that's not as widely spoken then you are going to notice that the support there isn't going to be as strong and that's just simply the nature of our large language models so there isn't necessarily A hey this is the language list of languages that it supports but rather you will notice that the level of support that you're going to get will vary depending on just how much of that language it's uh it's seeing so yeah um and then the follow-up question to that is is it able to understand compiler errors and give you suggestions I'm very glad that you asked that question because that leads me perfectly to do into GitHub copilot chat which I think is really where we want to kind of slide into next so you've already played around with chat GPT uh I'm I'm gonna kind of make that assumption if you haven't already you should definitely go do that and what's wonderful about chat GPT is that you get a chat bot style of experience that I can ask a question I can ask follow-up questions to it and I'm going to get information back from it so I can use it to get code Snippets I can use it to find out a bit more information about you know fill in the blank here now I love chat GPT I I can sit around and kind of play around with chat TPT for for days and days and days but when it comes to writing code I find that chat GPT is a little bit hit and miss and part of it's because that's not what the tool is built for that the tool is built to give back uh human style answers to questions and so can it do code as part of that yes absolutely but that's not what it's tuned for that's not its primary purpose the other very big thing about Chachi BT is the fact that it isn't going to have as much context that if I want to say hey create a controller that's going to be using Django that's going to be a back end for a react app that I'm gonna have to explain all of this to chat GPT before I can start to get any usable responses back from that that's going to take a little while and this is of course where GitHub co-pilot traditional GitHub copilot will really shot because it's going to have all of that context that it's right there inside of my IDE so it sees the files that I have open it sees the the Frameworks the libraries that I'm using and so when I ask those questions it's going to give me those answers in context based on all of that information but the real challenge that we wind up having when we're using our current version of uh GitHub co-pilot and again do not get me wrong I adore GitHub co-pilot but we wind up lacking an ability to kind of go back and forth so that if I write out a comment here let me do this uh to do let's create a brand new file let's call this uh server.js and let's add in a comment here um where I say uh import Express there we go oops oh you know what just oh come on um there we go and then uh cool so you're going to notice that now as I'm doing my thing it's already making those contacts right um pick your picture sorry about that thank you thank you thank you uh uh there we go there we go all right so I create my Express app there we go and then now uh at the server it's good and then let me also um use uh body parser there we go okay so you'll notice that I'm able to like add in those comments and then get my code suggestions as I go and that's wonderful like I I love that feature I love that capability but the uh but the challenge that we wind up having there is if I'm looking to do any form of back and forth here like maybe I want to find out a little bit more about this block of code or um I want to like get a suggestion if I don't like what I get I want to go back and and and ask some follow-ups and those types of things doing that with comment isn't the most intuitive way to get in in and and do things and so this is where having some form of chat really comes into play so that now I can go hey describe this code for me I can go hey um you know find the bug or help me improve this code and those types of things and I can now get those responses right here right here inside of my IDE with it knowing the context so let's say for example that what I want to do is I want to create a uh a server here so let me let's just say copilot so I want to create um a mongoose model named uh speaker with uh what do I want name email and uh LinkedIn URL I can just ask it right here and so now what it will do is it will give me the code that I want so it will give me all of that right there so there's my brand new schema and then there is the model right there so let's go ahead let's just inject that right here into my code let's just hit that little button right here insert that cursor and now that's right there cool that's fantastic that's wonderful that's that's all now right there now when I'm personally writing code this is quite frequently the way that I do things is that I will kind of do everything inside of like one file and I'll play around and I'll I'll get it to look the way that I want it to look but as we all know this is not really how I want this to eventually finish out that eventually I'm gonna want all of this Mongoose um uh information somewhere else so that I'm going to want this out on on on a separate file so what I can now do is I can highlight this block of code and I can now ask copilot I can go back to copile and say hey oops hit the right button here and go back go back and say Hey you know help me out here um how can I extract this and so it comes back and it tells me hey it looks like you want to extract the speaker schema object from the server here's the steps to do that select the uh schema object copy it uh create a new file and then go ahead and paste that in and then now I can have that out as a as a separate file so let's do that so let's come back over here um sorry right uh keystroke typical let's create a brand new file models Js and let's go ahead and uh and paste that in come on sorry so I I I use Windows locally uh but of course for for work stuff I use a Mac and my brain because of the long weekend and I was doing an awful lot of work on on my Windows system my brain is still going control X control V and I'm now having to to rewire it back to command uh X command V all right so I created my brand new models right here uh but I am noticing a bug uh I am noticing that my uh my speaker uh isn't working there so let's uh let's see let's see if there's um if this will pick it up so uh is there a problem with I don't know if this is gonna work this is literally the first time I'm doing this we're gonna find out uh is there a problem with um my code uh can't find a problem okay experiencing any issues okay um I can't access uh speaker um outside models uh there we go so now it's going to give me the appropriate code to now export that out so I went back and I said hey I can't access it if I want to access it from the outside what I need to do is export it here's how I could go ahead and modify it and it gives me the full thing and we notice down here at the very bottom that it's got that module exports so now let's go ahead and copy that and then let's paste that select now what I also really like is that it even starts to give me kind of The Next Step so with this modification I can now import the speaker model uh in other files using require all right Let's uh let's do that so let's uh come over here and then let's go ahead and just paste that code in just like that so now I've got my my speaker and now I'm even noticing that it's kind of suggesting an expression here which is how can I use the speaker model in my express route handlers all right let's hit that so now it's got a full little thing here so it's got the hey here's your Express here's your speaker here's the router here's a router.get and then here's how to export this out so it's actually creating a full routes.js file for me that's pretty slick all right so let's do it just gonna kind of keep following along with what this is telling me to do so let's say routes dot JS and then I could go ahead and just paste that code in so you'll notice what I'm doing here is that I'm kind of writing along and I'm kind of using this as a little bit of support I'm asking it uh different questions and and so forth and really kind of getting some really nice guidance here on everything that uh that that I need to uh to do which is uh which is pretty slick it's pretty slick okay um let me go back and kind of get caught up on on some questions here um so tell me ask this question co-pilot uh training that is based on open uh public GitHub repos so it's it's publicly available code and text so exactly where uh the what it's been trained on um hasn't been uh hasn't been released uh but it's publicly available code and uh and text um a bit of a follow-up is this suitable for private repos is there some implied level of access to private code that should be necessary to for this to work should be worried about code security Matthew asks okay so let's talk about a couple of things here so number one is I'm going to go back to I want this slide here we go and then I'm also going to [Music] bring myself back on there we go perfect okay so the way that gitup copilot works and this is going to be true for copilot CLI for copilot chat Etc um yeah which is that these round trips right here are ephemeral so when it's setting up that context and the suggestion is going back when you're using GitHub copilot for business this is ephemeral none of this is going to be stored so if you are using a private repository what's going to happen is that the question that you ask or the code that you have here that's being sent up as part of the context that will be sent up to co-pilot that's going to be used by copilot to generate the suggestion but then all of that will go away after that so none of this is going to be stored none of this is going to be used to retrain or to update the model or anything like that so as far as code security or anything like that goes we're not hanging on to any of your code that we we are working to keep your code safe by simply not storing it now the next part of the question is is you know things like what about say IP or what about you know code security and and so forth and there's a couple of things that I always like to highlight there number one is the fact that if you go look at the uh the terms and the license for GitHub co-pilot for business it does talk about IP it does talk about an indemnity clause and you can go find out more information there but the other part that I always like to highlight is the fact that when we think about how developers write code today that there's only some percentage of that code that's going to be written out of Hall cloth that my developer is just kind of doing their thing and they are generating all of that code all on all on their own that almost every developer I'm not even going to say almost every single developer is looking at docs and They're copying and pasting from there they're going out to coding forums like stack Overflow and They're copying and pasting from there they're going to chat gbt they're going out to to Google and so my developers are always using other sources and other resources to generate their code and so even before any other tools are are introduced we always still wanted to make sure that we had process in place to check for things like IP to check for code security and none of this changes that so whatever it is that you are currently doing you should still keep doing that and in turn if you're not already doing something like that you probably should be already again regardless of any tool like GitHub called pilot or or otherwise so yeah and then kind of the follow-up to to there when it comes to like attribution and all of that the exact same uh rules apply the last thing that I'm going to mention on all of that is there is a a post by uh Ryan Salva to do um um there we are I want this and this there we go uh so there is a post by Ryan Sava uh who runs uh helps manage everything with GitHub co-pilot who has uh talked about creating tools that will give you an ability to start to see where your code uh comes from if there are any publicly uh public matches and things like that so you can uh go check out his blog post for a bit more information on all of that and kind of get a bit more of a sense so yeah okay uh Luigi asked a question can I push company policies for example uh naming things in Pascal case or camel case to avoid uh uh or avoid specific libraries includes Etc Great question so the the short answer to that is there isn't a way to point to directly Point GitHub copilot at what you want it to try that sentence all over again at present there is not a specific way to put your thumb on the scale of GitHub copilot and specifically say always do this always do this however GitHub copilot is context aware so in other words it's going to generate suggestions that are not only based on its publicly available uh code the the model that it's got but also based on your context so if it sees that you're always using a particular style for your variables or that you're always using a particular style for like tabbing and things like that that it's going to follow along with that as well so the suggestions that it makes are going to follow along with that so if you're already using um some a set of requirements like maybe you're using Pepe let's say in in Python and you're writing your code then GitHub pilot will typically follow along with that because it's going to see that context so there isn't necessarily a way to go hey always do this but if you've got code that's already following those patterns that structure then GitHub called pilot is going to uh typically follow right along with that as uh as well um how many ask the question will it work the same way in Visual Studio 2022 um I I'm not exactly sure what it is so let me answer that in two different ways first up when it comes to the current version of GitHub copilot yes that it's going to work in line and as I'm doing my thing all of that will behave the exact same way when it comes to copilot chat as of right now copilot chat is specific to visual studio code that will eventually find its way to other Ides as it continues to mature and and hopefully gets released out but again there's no timelines on on any of that at uh at the moment Adam asked question assume there is embedded embedding of local code stored somewhere and then semantic search performed to inject context into the prompt it's very cool but one question is where the embedded searches performed I'm not entirely sure and at least based on my understanding of the way that GitHub pilot works I don't think that that's exactly how that works so that the way that I understand it is that that context that's being sent up that's all of your files uh uh that that are open that's the code that you're currently writing that's what's going to be sent up and then the suggestions are generated in the cloud sent back and again all of this winds up going away so I don't think that there's necessarily anything that's stored locally I could be wrong on that but that's at least my understanding of the way that GitHub copilot works I don't I don't have the the perfect answer to that or at least the the way that I understand the way that works doesn't necessarily work that way um uh no there's a setting on the GitHub called pilot page allow GitHub to use my code Snippets to improve product improvements not sure how this plays into uh uh if there's a difference between individual and business okay so Justin asked this question and I'm going to summarize this here real quick there is do I have the slide on this I don't have a slide on it that's fine okay um all right can I just do this fine sorry just trying to there we go all right come on there we go all right so uh just to ask a question um if you go into copilot you might notice hey I want to allow my uh my my interactions to improve Copilot with the current version of GitHub copilot there's actually two skus so two subsets if you will of it and that is get up call pilot for individuals in GitHub co-pilot for business with GitHub copilot for business so specifically the business SKU specifically the business product this transaction right here context being sent up suggesting going back down that is ephemeral so that is a one-time shot that's it none of your code none of the suggestions are ever ever ever ever ever ever used to update to retrain to improve the model none of that is being stored for copilot for individual that's different and that now becomes an option for the individual so the individual can say yes I want this to be stored and I want this to be used to improve or they can choose not so for business we just make that answer and that answer is always going to be no so that answer is this is always going to be ephemeral for individual it then does become up to the individual to decide whether or not they want that to to happen or not so totally up to the individual there so that's one of the biggest differences between the individual and the business version of that beyond that the business version uh does include a couple of other features part of it of course uh will be user management so you can control who has access to it who doesn't have access to it what orgs have access to it and eventually even what repos are going to be allowed to use it and not use it you also do have an option for co-pilot for business to choose whether or not you want to block or allow suggestions to be made that match publicly available code so you can choose whether or not you want that to just be hidden or if you want that to be shown so that's another option that you get inside of inside of copilot for business that's a that's a great question thank you for bringing that up Justin please forgive me if I mispronounced that name are there plans to make chat available in Vim as well a question applies to the rest of the products you're showing us today so there are I don't think I have the slide on on this one for the current version of GitHub co-pilot there are plugins available for neovim for the jetbrain suite of Ides visual studio and visual studio code so that is the current version of GitHub copilot for copilot chat which would be the one that would be most applicable to having a plug-in right now it's solely for visual studio code uh I assume that eventually it will become available on the other Ides but right now it's just Visual Studio code now specific to Vim uh if you're just using them unfortunately uh not available there uh even GitHub co-pilot uh it's going to be neovim so if you're looking for at least something there that's that's the way that that would work um perfect okay slab thank you thank you thank you thank you um and asked the question um can we specify which files to look for the use case would be to create a back-end API for a specific form let's say context JS in the front end fantastic question so the the direct answer is sort of I love that that was my direct answer my direct answer is sort of uh the direct answer is sort of so when uh copilot is looking to generate its context it's going to look of course at the file that you currently have and at the files that are currently open so let's talk a little bit about what GitHub co-pilot is is trying to do here it's really trying to walk a very fine line between giving you the best possible suggestions but to do so as quickly as possible so if we have like and I'm going to over exaggerate here but let's say we've got like a five second latency so I type out a comment and then it takes five seconds to get a response back from Copilot quite frankly at that point co-pilot's useless to me that it's just not going to be able to keep up that if I'm having to wait five seconds to get a response I'm already out of the Zone like my brain has already moved on to on to the next thing so we need to make sure that that latency is as low as possible so we want to get those answers back like near instantaneous but of course we want to at the same time make sure that we're giving you the best possible quality that we can and that's where the trade-off comes into play because the more information that we send up and the longer that we're going to take to process the the greater the latency is going to be but at the same time the more information that we send up the more time that we take the better the responses are going to be so there's there's a trade-off to be made here so the way that copilot works is it's going to focus its attention on the files that you have open so it is not for example like let's say that I am referencing a file somewhere else like I've got a link to a file somewhere else inside of an app that I'm building um it's not going to follow that link so it's not going to be doing like an awful lot of work on the file system and trying to get everything that it possibly can about your project to then in turn give you the suggestion because doing that is going to slow things down again we've got we've got that trade-off there so the way that it's optimized is it's going to look at the file that you have and it's going to look at the files that you currently have open so if you have let's say you know context.js there's my form and now I want to create the back end for that open that file and that now will be used by copilot as part of its context so you're not able to specifically say hey go look at this file but if you open the file if you have that open on the tab then that will help it out and help point it in in the right direction now for me personally if if you're anything like me and I know I am I have a propensity to just open up a whole bunch of files just keep a whole bunch of files open and I'm just kind of doing my thing so I find that naturally I will have the files open that are related to whatever it is that I'm working on so I think it's relatively rare um I'm not going to say never because I'm sure that I have at one point but it's relatively rare where I've ever had to stop and go oh let me open up another file and kind of help co-pilot out point it in the right direction because I just find that as I'm doing my normal development that I will have the files open that are going to help co-pilot out there so so the direct answer to the question is there isn't a way to just go hey use this but if you have the file open that's going to help it out uh with that but again I don't want to like Hammer that point home too much because sometimes when I say hey you know open up the files and that's going to help co-pilot out a lot of people will just then get tunnel visioned on that and they'll start to think oh my gosh now I really have to think about all the files that I have open and things like that and my answer to that is probably not that just through the normal course of your development that you're just going to find that you'll have the right files open you know like think about how you you do development or think about like how you your phone that chances are when you use an app and you decide hey I'm going to close this you're not just like you know closing out all the apps on your phone you're just you know moving on to the next one kind of the same thing here that when you work on a file uh chances are you're going to uh kind of keep doing your uh your same thing there okay cool cool let's see um and then Thomas asked the question um seems like a bit of a waste that larger organizations are not able to use Federated learning model or appending to extend local copilot models great question thank you Thomas um blue I want I want to go back here okay so I'm back on copilot next I'm going to scroll down on copilot next and I want right here uh GitHub copilot for your code base so the question that Thomas asks about being able to train uh GitHub co-pilot on your code base is one of the two or three most common questions that I get asked anytime that I'm doing a presentation for a business on co-pilot and this is something that we are looking at implementing that we are trying to build out so it's something that's there believe it or not though this this is something that does become a little bit tricky that there's a couple of challenges that we will end up facing the first of which is again this is a large language model and almost sort of like regardless of how big your code base is uh the training model that we have is going to be exponentially larger than uh than the amount of code that that you have and in turn it's a large language model the more that you've got the better the suggestions are going to wind up being so inherently that generic code base that we have is going to be able to offer better suggestions than training it specific to your code base now now that being said where having your code base be trained can really become helpful is number one kind of help guide it and point it in a particular direction but also number two is if you've got your own custom languages or you've got your own custom Frameworks then it can help co-pilot get a better understanding for what's going on there but at the same time there's also an additional challenge of okay so we're going to use your local code base as well to help Point co-pilot in the right direction and now there's like some throttling now there's like some dials to be said of of you know how much should we favor sort of the generic if you will copilot versus the co-pilot that's been trained on on your code base to again try to make sure that we find the best possible suggestions that we can make out there so it is it turns out it's a far more challenging of a problem than it might look at at first glance so it is something that we are investigating it is something that we are working on um but right now I don't necessarily have any more information um beyond that but I do want to follow that up I don't want to kind of close that out by kind of going back one more time to that context so let's say that you know we've got we've got a custom language or our custom Library rather a custom library that we've built and I need to use that custom Library if I've got two or three files that are already using that Library open those files up make sure that those files are open and that will then become part of that context so as it starts as copilot starts making those suggestions it's going to be able to use that context to help guide it through that so um so yeah so it's a it's a great question it turns out that it's a far more challenging of a problem as of right now what you can do again is just keep a couple of files open and that will that will help open it up yeah so you know not talking only about trading on local data but more pending the total model with your local Source yeah yeah again like and and I hear all of that and and it just it coming relatively tricky because this is an awful awful lot to try and balance out so right now the way that it's built is it's the files that you have open the code that you currently have and that might change over time that you know we're constantly looking for ways to improve the suggestions ways to improve the model ways to improve the experience and so over time that is something that might change but at least as of right now that's the way that this is built that's the way that this is going to work okay other questions I'm loving this this is great I don't know if you've noticed but I I kind of enjoy talking about GitHub Copilot talk one more sip of coffee here okay um thoughts on bias risks I'm gonna pass on that question I'm gonna pass on that question it's a good question I'm gonna pass okay um yeah um how would GitHub handle so just to ask a question how would GitHub handle subscriptions if a user has an individual license and then request a business license from the org uh with the individual subscription um and or privacy settings get canceled out uh yes this is a fantastic question this is something that comes up quite frequently is um you know developer goes off they sign up for get them call pilot on their own and then their organization goes hey we really like it I'm called pilot let's get everybody signed up for business the business subscription will override the individual so if you are if you're using uh the individuals GitHub accounts or the individual's um handle then the copilot for business setting will override their individual settings so that's a great question that's something that comes up quite frequently um so let me ask the question what's the most exciting product coming uh with copilot X in your opinion oh gosh um it's almost like asking me to pick my favorite child even though I don't have any kids um probably co-pilot chat probably co-pilot chat um I I think all of them have a little bit to offer um I do want to talk about the other two here in in a minute here but um probably co-pilot chat with honestly this copilot for for pull request is a really close second which I'll talk about in a second here but but yeah um how about I ask the question um our waiting list acceptances for everyone as profile being studied uh prior to approval I I don't know what the official answer is my understanding and I could be wrong on this so please bear that in mind my understanding is um right now uh copilot for individual uh if you sign up for the waiting list it is in order so I do not believe that it's based on the profile uh I believe that it is based on order I could be wrong on that but what I do know for right now is that copilot for individual is being favored a little bit over uh co-pilot for business for a couple of different reasons but the one part that I can say with 100 certainty is that if you are already signed up for co-pilot that that is going to get you priority in the waiting list so keep that in mind uh yeah okay cool um let's talk about um uh the other uh two features here with um uh with copilot uh copilot X so first up is call pilot for pull requests copilot for pull requests is going to do two big things so number one is it's going to be able to detect on a pull request whether or not you have unit tests and if you don't have unit tests then it will be able to create another pull request that suggests unit tests for the one that you created which I really appreciate the second is it can also then suggest and generate both a title and a summary for you of that pull request one of my biggest peeves when it comes to pull requests is a lack of information that you might get a generic title and then like nothing in the description and a lot of times that title is fixes bug okay that's great that's really helpful I'm glad that it fixes a bug kind of hope that it would fix a bug uh but what bug how did it fix it how did you detect the bug how do you how do you how are you demonstrating that it now works and that information quite frequently doesn't find its way into the description and do not get me wrong I get it there isn't a developer in the world that hasn't fought with a bug for hours and hours and hours finally found the fix they got all excited about finally effects don't get me wrong they implement the fix they go to make the pr and now they're just tired and now they're just exhausted and now their brain is just not thinking straight and so they really just want to get that PR made they just want to get through that process they want to start running whatever automation it is that needs to be run and then that's it and so that's all they're really focused on and so now they don't wind up putting in a good description I get it that happens that's where copilot for pull request comes into play is it's going to then make those types of suggestions for you which is great the other big one is copilot for docs and this is probably the [Music] the one that's I think least talked about but one of the most exciting to me I was a technical trainer for many many many many many years and so as a result I have a lot of experience in trying to help individuals learn new skills learn new languages learn new Frameworks Etc and one of the challenges that I always have with documentation is that documentation assumes a certain knowledge level so let's say for example that I've got a a new developer and they know HTML CSS and JavaScript and now I want to turn them loose on react and I'm not picking on react I could have picked any JavaScript framework that I just happened to pick react so I'm not picking on react there if I go into the react docs the react docs are going to assume that I know quite a bit and quite honestly what's going to wind up happening is I really start to get into those docs is that they're going to assume that I know quite a bit about react as I'm digging in with those docs and this is something that unfortunately just happens quite quite often inside of documentation is that a lot of times the people that are writing documentation and I and again like I'm not trying to in any way shape or form talk bad about anybody um but one of the things that just happens is part of human nature is that the people who are writing docs are writing it based on their own experience they're writing it from their Viewpoint and so in turn the target audience that they have is themselves and they wind up then sort of assuming a a level of knowledge that not everybody is going to have and so it makes it very hard for a novice developer to get in and get started on fill in framework here by going through the documentation this is where co-pilot for docs is really going to shine that what you're going to be able to do is specify hey this is the level of developer I have so I could be like an advanced developer but maybe it's my first time ever using react like maybe I'm an angular developer so I know angular but I don't know react at all then I could go ahead and I could scroll that down and say hey I don't know this really well and then over here on the response but I could say you know you can be a little bit Advanced when you're talking back to me so like I don't need things explained very low level like you can talk to me here but I just don't know really anything about react so I can adjust those sliders here and then I can ask my query and then get a response back based on the profile that I've built right here and so now it's going to help make that documentation that much more consumable for me as a developer as an experienced developer as a novice developer and what I also really like and unfortunately I don't have a demo of this but what I also really like about copilot for docs is the fact that it will also give me a link to where it found that information so if I go in and I say hey how do I create a component or how do I you know do something with um oh why could I not think of oh relax that was that was what I was trying to think of my brain just stopped there for a second like how do I do something with uh you know react redox or something like that I could go in and I could ask that question and now I'm going to get back a response I'm going to get back a response that's going to be targeted for the for the style of developer that I've specified here and then in turn I'm going to be able to get links back to the documentation so I can very quickly see where that information came from I dig deeper into it if I want to and I think most importantly is then it's a great way for me to confirm that yes this is in fact the right information that this is in fact the information that I was looking for so this is probably the one that's that's slept on most often um and it's one of my absolute favorites and that is uh copilot for docs so those are the other two components that are part of copilot X um and unfortunately I don't have demos of of those two but I I did at least want to uh to highlight those so questions on those and run Applause again for coffee okay let's see I want to I want to go back to the slide here there we go okay So based on sort of the the hush side on the tires assume that's hush silence say hey everything is fantastic oh uh q a tab um I've just been focused in on the public um I just saw this q a tab um let me kind of go back through this real quick as a GitHub team faced any challenges development of uh the CLI thus far um none that I know of or at least none that's that's been been shared with me um I hadn't asked that question Thomas has the question um I answered that question already and then Marius asked the question is there going to be a publicly documented IP uh API rather for building Integrations into Ides uh that's a great question uh none that I have heard of so as far as I know there's no plans for that uh that might change but at least as of right now there's no plans uh for that so yeah Thomas need to go feed the family go enjoy that thanks for the introduce thank you for thank you for tuning in cool cool all right I want to close with this uh which is uh copilytics like I mentioned is a a set of Explorations uh into different areas where we believe that generative AI can help support developers and so this is going to be copilot chat CLI PRS docs Etc now everything that is under this copilot X umbrella right now this is part of GitHub next get up next is our playground so anything that's inside of GitHub next uh it might get released it might not be released uh and even if it is released it might be a single product it might be rolled into something else uh Etc uh and there's also as of right now no roadmap so kind of keep all of that in mind as we're talking about GitHub copilot X if you do want to get signed up for the wait lists you can check out that little link uh down at the very bottom um so uh GH dot IO slash copilot X go check that out and go sign up the other very big thing that I'm going to strongly recommend that everybody do is go check out co-pilot for business uh and I'm suggesting this for two reasons partly a because if you are already a subscriber for copilot that is going to get you priority on the waitlist but also number two is something that way you can start to see what it is that co-pilot can do for you that um you know since the release of copilot X like yes this is very much like the the the the cool new kid in school I get it and I get why you know it's getting all of the attention but you know we also need to keep in mind that we've got this really really cool um product back here called GitHub co-pilot that will help support your developers as they're writing code right there inside of their IDE so don't forget about core GitHub co-pilot like like I said at the top here I have not seen a product that's had a larger impact on my productivity than GitHub co-pilot so do remember that that's there definitely go check that out as well so yeah uh if there are any other questions please by all means feel free to uh to ask in the comments below uh you can always reach out to us startups at github.com uh we'll answer your questions there and then keep an eye on the space we are hosting uh these types of monthly talks and if there's a particular topic that you would like to see us cover please by all means ask that that's how we're going to know uh you know what it is that you want to hear and then we can make sure that we uh can help uh help you get up and running so yeah so with that I want to thank everybody for tuning in enjoy the rest of your uh Tuesday today is Tuesday uh yesterday was a holiday so my brain said it was Monday for a second there so enjoy the rest of your Tuesday thank you to everybody for tuning in bye
Info
Channel: GitHub
Views: 11,357
Rating: undefined out of 5
Keywords: security, github, devops, owasp, codeql
Id: CZNvKfw2fH4
Channel Id: undefined
Length: 80min 10sec (4810 seconds)
Published: Wed Jun 07 2023
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.