(Cynthia) Hello there everyone, we're about one minute before the start
of our webinar, and we'd like to do a just a quick
audio check, make sure everyone can hear us ok. So, I have put a poll up on the screen about our audio levels,
if you could please just let us know. (Allen) Okay. (Cynthia) Great. It looks like we
are in good shape then for our audio. So we are right at 12:00,
and we will go ahead and get started. First up, I'd like to introduce myself,
my name is Cynthia Rich. I am a trainer with GitHub
and I am joined today by Allen Smith, another trainer...from GitHub and we're going to trade off today
as we go through this topic and share some of our relevant
experience with you. Today's session is about project
management and how we use GitHub to manage projects within GitHub. So really quick, just so we know who
we have on the phone with us, on the webinar with us, excuse me, a little more about you,
I've put a poll up to tell us a little bit about your project
management experience. While you're doing that
I'm going to tell you a little bit about
what we hope to accomplish today. So during today's webinar
we'd like to share with you some of the best practices
that we've found for managing projects using
the GitHub architecture. So we as a company we manage
all of our projects within this platform and we store all of our conversations,
communication, everything goes here, and so we want to share with you
the secrets that we use to make this effective and to ensure
that we can collaborate and communicate effectively
across our team. So it looks like, okay great... So it looks like we have a good split
of folks who do
a lot of project management and then some folks who
are interested in the topic. If you have someone on your team
that you'd like to share this webcast with we will be recording this and we'll send
you a link after we finish up. So I'm gonna go ahead and close the poll. And, I'd like to jump right in
and let's show you what we're going to accomplish today. So the project we've set up that we'd like
to show you today is a very basic GitHub Pages page. Now if you're not familiar
with GitHub Pages GitHub Pages is our,
essentially free web hosting, if you will, platform. It allows you to connect
your GitHub repository directly to this GitHub Pages and set up
a project webpage, something that you can communicate
with the outside world about your project. So again, these are free to set up. There are instructions on this page that we're showing you here
so pages.github.com You can go there, it'll tell you
everything you need to know for how to set up your repository
to communicate with this page. The page that we have set up
is actually a little cookbook So let's go back over,
and if you'll, there we go... Our Project Management Cookbook, and you can see there this is
a really simple page just something we set up for example sake with a few links to some
different recipes, hopefully this isn't lunch time
for everyone, we'll all be hungry when we get done. But like I said,
a really, really simple page 'cause what we really want to show you
is what's under the hood, or what's behind the scenes that's
helping us to manage this project. So, as you know, everything within GitHub
is managed within a repository and that repository is the collection
of everything relating to your project. So your project files, your project
communications, all of the metrics involving your project. Everything within your project is stored
in this repository. Now in order to do some of the things
that we are going to show you today, we had to make a few assumptions, and one of those is that you're an owner
on the repository that you're working on. So if you're not an owner
on the repository there may be a few things
we're gonna show you along the way that you won't be able to do and so you might want to either look into
changing your permissions level or how you can work out
getting some of these tasks accomplished with someone that has
the appropriate permissions. So, I'm gonna start by just walking you
through the interface showing you how we use some
of the different sections within GitHub and I'm gonna start
on the right-hand side. Right now you can see that we're
on the Code tab over there on the right and the Code tab is exactly what it sounds
like, these are your source files. This is all of the content that belongs
to the repository, that is then shown on that webpage. Below that we're gonna see Issues
and Pull requests. We're gonna talk a lot about those
in just a minute, so we'll come back to those. But one of the things that's really useful
within the project is the Read Me file. The Read Me file... There are a couple of magic words,
the Read Me file being one of them, and with the Read Me file, this is a page that's automatically gonna
render on the front page of your project. So when someone comes to visit you
they can see all of the information in your Read Me file
just as its shown here. Now in our Read Me file we've decided
to put some more information about how to add recipes to our cookbook, so a little information about
how to contribute to it. We've even provided a recipe template
so if someone wants to contribute a recipe they can just copy and paste
that into a text file, put in their recipe and then commit it and do a Pull Request back to us. We tried to make it really easy for people
who wanted to join in. There is another type of file that you
may see commonly, called a CONTRIBUTING.md, and that file, that file tells people how to contribute. This page is a little bit different because this page is only going to show up when somebody tries to submit
a Pull Request, to actually contribute a recipe
to the cookbook. So we'll see that in action
in a little while. Now you'll notice that we do have some
really basic formatting
on all of these pages and if we click the little pencil button
there, we can see... that all of these pages are written in a very lightweight language
called Markdown. Markdown is really basic, really simple as you can see the header there is just a
hash mark and a space and then your header. Our bullets are created
with simple dash marks. There are actually guides
on using Markdown we won't get into that in the course
but we will include a link in the course notes for you
so you can go in and find out how to do Markdown on your own. So like I said, really simple language
to use and we're gonna show you a couple of pretty cool things you can do
with it in just a little while. So, another option
I'd like to show you that is particularly useful
for project managers is the wiki. Not gonna get into this too much,
I think most of you probably know what wikis are,
just a collection of pages, but these are really good for if you want
to store a project schedule maybe, or a budget, or maybe a team charter,
something like that you can put that here. And like I said, we won't spend a ton
of time on that. On the top bar, lets look up there
where we talk about watching and starring and forking,
and what are those things. One of the things as a project manager
you're probably going to be pretty interested in what's going on
in your project, so you'll want to watch the communications
and conversations that are coming through any of the actions that are happening. So if that's the case, then you'd want
to select this option here to be watching. So you would get literally a notification
any time someone creates a Pull Request, commits something, closes something,
you're gonna get a notification. But maybe you decide you don't want
that much information about your project, you can choose Not watching, and if you choose Not watching,
notice there that you'll still be notified if you participate in a conversation, so if you add something to a discussion
you'll continue to get notifications about that discussion. The other key there is if someone
@ mentions you. So if someone is entering an issue
and specifically says, "Hey, I need your help with this Bill,
can you give me your opinion", then you'll still get a notification. So Not watching doesn't mean
you never find out anything, it just means its a more limited set
of information. And then of course, you could ignore it, which I don't think you'd want to do
as a project manager, but I guess that's always your option. The other option there is to Star
a repository. Starring is a little bit more
like bookmarking. So we get this question a lot, what is the
difference between Watching and Starring. Starring essentially will add these stars
to your homepage. So if we star this page and then go back
and look at GitHub Teachers homepage you'll notice down here
on the left-hand side there's a Starred and you could click that link to see any
of the pages you've starred. So this is just a way to keep track
of pages that look interesting to you, and a nice way to bookmark those pages
to come back to them later. So, what I'd like to do
is run back to the main repository and we're gonna jump right in to talking
about some of these core communication tools we use
within our projects, And we're gonna start
with Issues and Pull Requests and I'm gonna ask Allen to jump in here
and help me with these and I'm gonna have Allen tell us
a little bit more about Issues. Before I do, I just want to say
the difference between these two to conceptually think about these,
if you think about Issues as "I have a question,
or I see something that's wrong, but I don't know what to do about it",
then you'd enter an Issue. If on the other hand,
you have a question you know how to fix it,
or you already have fixed it, then you're gonna use a Pull Request. So that's how we think about these to kinda separate what goes
in each of these buckets. And now I'm gonna turn it over to Allen, to give you more information about Issues. (Allen) Alright, yeah, thank you Cynthia. So let's dive right in and take a look
at our Issues here, on the Issues tab. And, its right there under our Code tab,
so we'll go ahead and click that. So traditionally when you think
about issues, you know, in terms of software development you may think that issues represent
problems, represent bugs, and that's certainly the case. Depending on how your project is set up,
you may be using Issues to track bugs, or possibly even enhancements. If this is sort of a general project you may want to use this to track your
project requirements for instance. And that's sort of what we've done
in our example here. So if you notice in our Issues list,
we have several different recipes that are to be added to our cookbook. So we have recipes for Mexican
hot chocolate, or holiday punch, but then we also have other Issues
that have been entered by other people. For instance, this one is a problem, so the Lemon Icebox pie directions
are missing steps. So in this case it is an issue, I'm sorry, it is a bug, or an error
that needs to be corrected, so Issues are very flexible and you can
use them to manage different types of issues. (laughs) But ultimately what we're talking about
here is workload management, right? So Issues track the work to be done. and GitHub has tools that let you manage
that work both at a high level, and then also with a kind of fine grain
focus when you need to. So, I think the best step for us right now
is to dive in and create a new Issue. So, we click the green New Issue button and we're presented with this screen here
where we enter a title for our issue, so we want to have something
that is descriptive, or as descriptive as possible,
so we would say for instance, maybe, "add new lunch menu items",
something like that. And down below we have a comment section
and just like other areas of GitHub, this comment section does support Markdown so we're gonna leverage that power
to do a couple of things to help us manage our tasks
related to this Issue. So for instance, I think we need to have
a lunch section, so here are some ideas. And we can use the Markdown syntax
to create to-do list items within this Issue. So, for instance, we have hoagies,
we have, oh, I don't know, strawberry salad,
everybody likes strawberry salad, so, we'll create our checklist here
of items that are suggested and, uh, you can even,
if you'll notice at the bottom there, you can drag and drop images directly in. So, for instance, if you are reporting
an issue, you can take a screen shot and drag it straight over to your browser
window and it will automatically upload to GitHub and post it to the Issue. It kinda lets you communicate the issue
as you see it, in a little bit better way. Just like other areas,
if you @ mention someone here, GitHub is going to send that person
a notification as well, and that feature is useful for pulling
people into the conversation, like Cynthia said. Especially people who are not necessarily
watching the repository. And so we'll enter another comment here, and so in this case, GitHub Student
is going to receive a notification that they've been pulled into
this conversation by GitHub Teacher, and GitHub Teacher is requesting
input from them. So... If we go back to our Issue screen
we can see that the new Issue has been created at the top there. Now one thing I want to show you here,
is that you'll notice to the right of that Issue description,
we have a little check box, and then we have 0 of 3. So let's hop into that menu item
one more time, and if you'll notice, GitHub did create
these check boxes based on those we created in Markdown. So let's check hoagies off for instance, so let's say that hoagies have been added
to the cookbook, if we navigate back to that Issues page
we can see that GitHub has updated that task list to show us that one
of the three tasks from that Issue has been completed. So, if you think about it,
that's a really powerful feature for digging down into these Issues, that may have subtasks
associated with them. It lets you break your work up
and manage it, but still, track the progress,
which is super valuable. Let's take a look at how GitHub lets you manage this list. Because we have how many items? We have 20 open items
and 6 closed items, so let's say we wanted to track certain
things about certain items. We can use Labels,
and assign them to Issues. So let's hop back in to our
new lunch menu item Issue Over on the right-hand side of the screen
we have a Labels option. So Labels are pretty powerful
because what they let you do, is essentially tag an Issue
with a particular category or context, that you can use for filtering later. So there are a couple different examples
you might use for this, You could use it to track progress, so for instance in our repository here, we have different labels for marking
how far an Issue has progressed, if its in the backlog,
or if its in progress, or even if its completed,
we can label it that way, and then filter by that tag, I'm sorry,
filter by that Label later. Other ways you might use Labels You can use it to track priority. So for instance,
if you have a critical issue, or something maybe that's low priority, you could use Labels for that as well. You can also check Labels
for the nature of the issue, and in this case we have
different departments. So we have Content,
or Design, or Editorial. So we can check those Issues and then filter by them later,
which is what we will do right now. So, if we navigate back to our Issues page and click on the Labels header, and then let's see everything
that is maybe, in progress, that is also critical. So if we click the Labels header again,
we can see that these filters
are additive. So, this is terrific because there's
nothing in progress that's critical. But it could be bad, because there could
be critical issues in the Backlog. So, lets take a look and see if we have anything
critical that's in our Backlog. So, nothing there,
so that's definitely good news. So you can see how you can use
these Labels to kinda filter your Issue list down,
and manage a large number of Issues, in a very small way, to kinda focus in on where
you want to work. So, another thing we can do with GitHub is we can manage those Labels in bulk. Which is really helpful, right? Because you wouldn't necessarily want
to go into every single Issue, just to change one Label on say,
60 different Issues. So if you use the check boxes
to the left of the Issues, you can select multiple Issues, and then you can assign a label
to all of those Issues. So for instance, if we wanted to mark
these as in progress, we could click In Progress and it would
add that Label to any of the Issues that don't already have it. And you can do this for unassigning
Labels as well. Another thing we can do
when we select multiple items, is we can assign multiple items
to a particular user. So this is one thing that's helpful if you have several issues
that have reached an end point where they need to be escalated
to a different user. So for instance, if all of these Issues
need to be viewed or managed by GitHub Teacher now, instead of both
GitHub Teacher and GitHub Student you could click that and it would
reassign those Issues, uh, it should, to Git Hub Teacher. But it looks like anything
that was assigned to GitHub Teacher has now been unassigned. But again, you can use
the Bulk Add feature to go in an reassign it to GitHub Teacher, and in this case GitHub Teacher will get
an email notification or a notification on GitHub that they have been assigned
to this Issue. One more way that we can manage our tasks, over on the right-hand side
of that top bar we have a Sort option. And it let's us sort by a couple
of different criteria. So, we can sort by newest or oldest. So this is a great way of letting us see
what's coming in. If we sort by newest, we can see these new
Issues that have come in. If we sort by oldest, we can actually see
the Issues that have stuck around in our repository for a long time. So maybe if there are Issues there
that aren't getting resolved, we can sort by that and see
what's been here the longest. Another way we can sort is by
Most or Least Commented. And a great way to use this,
is for instance, if you see an Issue that has a ton of comments on it,
but it's not really progressing, that might be an opportunity for maybe
potential conflict resolution. Maybe people are talking about an Issue
that needs to get resolved, but nobody has really moved
that Issue forward. So that's a great way to drill down
into those Issues that a lot of people are talking about
but not necessarily solving. Alternatively, if you sort by Issues
that don't have a lot of comments, that means that those Issues are maybe
not getting the attention they deserve. Maybe you need to @ mention somebody
in some comments and say "Hey, can you guys weigh in on this". And the final way we can sort, is by Recently Updated,
or Not Recently Updated. And this is a great way of seeing
which Issues are active which have a lot of activity on them, and also which activities don't have a lot
of activity on them. Again, maybe they're kind of stale, and they need to be moved forward. So, we'll mention GitHub Student here, and we'll ask GitHub Student
to work on this. So let's go ahead and take a step back
and talk about what we're working toward, in a bigger picture view. So we've kinda drilled down
into the way that you can manage individual tasks on Issues. But now if we wanna step back and look
at our larger goals or our objectives. We use a feature called Milestones. So, if we click the Milestone link,
on our Issue, we have a couple of different Milestones I guess we just have one Milestone here,
its our Third Edition. So, Milestones let you organize your Issues into groups that satisfy objectives
within a particular timeframe. So this kind of dovetails nicely
with project management in general because that's a typical workflow
that you would have. You'd have milestones that have to be met with a certain amount of work
that has to be done, by a deadline. So let's go back to our Issues list, and up at the very top
we'll click on Milestones, and get a better view of this. So, in our repository we have one
open Milestone called Third Edition. And what we're using Milestones
for in this case, is to manage publication editions
of our cookbook. So in this case we have four open Issues that need to be completed
by March 21st of 2015. So if we click on Third Edition, this will drill down in and apply filters
so that we can see all of the Issues that are assigned
to that particular Milestone. So we have our Lemon Ice Box
pie directions are missing steps, the recipes are showing up duplicated, there's a request to add more side
dishes with vegetables. So let's say that Holiday Punch Issue
down at the bottom, that's in our Backlog right now, but maybe that's too much work for us to get into this Milestone
by mid-March here. So what we can do, is we can change that Milestone, and what GitHub let's us do
is actually create a Milestone on the fly from this page right here. So if your Milestone doesn't exist
you can type in the name, so we'll say Fourth Edition, perhaps. And if you'll notice GitHub automatically
gives you the option to create and assign this Issue to a new Milestone,
which is a terrific shortcut. So if we go back to our Issues page and let's go back to our
Milestones page again, and take a look. So we now have our Third Edition
and our Fourth Edition Milestones. So we can click into our Fourth Edition. Oh I'm sorry, let's go back to our
Milestones page. We'll click Edit under our Fourth Edition. So if you'll notice when you create
a Milestone you can create a title, and add a description,
and you also have an optional due date. And the description itself
is optional as well, but its helpful to add it
because again, coming back to project management we're always looking to increase
communication, just to communicate our goals clearly
and transparently. And so we see that deadline
has now updated. So one way to apply this, you know,
depending on the context of your project, you know, if you're working
maybe in an agile environment, you might use Milestones to organize
your Issues into sprints. So you could have a sprint for the month,
or a sprint for the two-week period. However you have it organized. And that let's you as a project manager
come in and see what types of Issues still need to be completed
for that particular sprint. And then again, if you have completed
all of your Issues, you can always close a Milestone. And then if we go
over to our closed section, we can see all of the Milestones
that we've closed out. In this case, it looks like
there are a few Milestones that didn't get completed and that's okay
for demonstration purposes, but again this let's you see what was completed and what wasn't. So its a nice way of looking at your work
at a higher level. And so with Issues, we've looked
at ways to manage the work that needs to be done.
Right? So, I'm gonna turn it back
over to Cynthia, and now we're going to explore some
ways to review and approve the work that is being done. (Cynthia) Great, thank you Allen. So we're gonna jump over now... we've reviewed what to do when we
don't know how to fix the problem but now let's take a look at what to do
when we do know how to fix the problem. Maybe its something really simple, You know, 'I'm a project manager,
I can add instructions to a recipe', 'So, I don't need someone,
a developer to do that for me', 'I can actually go in
and fix this problem.' So let's go back to that recipe,
that didn't have instructions, and we can find that in our Issues. And we can see that its our Lemon Ice Box
pie that's missing directions. So we're gonna keep in mind that we have an Issue
open on this for just a second, and let's navigate over,
using our code view, let's navigate to that
Lemon Ice Box pie recipe. So we're gonna click on recipes,
go to desserts, grab our Ice Box pie. Now you can see here
this is the actual file, its again written in Markdown GitHub allows you to write all of your
content in Markdown and then it uses Jekyll to display
those on the web for you. But in this case, we're just going to edit
this Markdown file. So you can see that on the top bar there,
there's a pencil, and we're just going to click that. And here's our nice Markdown, again you can see some other formatting
options with Markdown here, you've got the double asterisks
which provide the bold text, the triple hashmarks,
which create a third level heading. So let's go down here to the preparations and oh yeah, we definitely need
to fix these. Put all the ingredients for the crust
together and bake it. I think we're missing a couple of steps. So let's make sure that we also combine
the ingredients for the filling, and put those in the crust
before we bake it. (Typing sounds) Perfect. So now that we've made
some changes, the nice thing about GitHub obviously
is that its going to version control everything that you do. So, we've created a new version
of this document. In order to save that
and put that into version control, we need to commit these changes. So, it's really nice, GitHub knows
that we've made a change to this document, so it's automatically gonna give us
the option to commit those changes right here, you don't have to go
anywhere else to do it. So, it even is nice enough to give you
a recommended title for your commit so this is where you're going to put
a descriptive title there, so that everybody else knows
what you did in this commit. So for this commit I'm gonna
say something simple like 'added preparation instructions'. The extended description is optional
you don't need to use that we are not going to use it today. And then I want you to notice
at the bottom there's two different changes, er,
two different options. Notice that the first option says
that you can commit directly to the GH Pages Branch. Well we haven't talked
a lot about branches just yet, but essentially the branch
is the set of code. And for this particular example
GH Pages is the set of code that's actually displaying
on our external website. So if we commit this directly
to the GH Pages Branch, then its gonna go live right away, and everyone who's visiting
our recipe website will see the changes that we've made. Well we don't quite want to do that. We actually want to have some other folks, maybe our cooks
are going to look at the recipe, and make sure
that we got this right. So what we're going to do instead
is we're gonna create a new branch. What a new branch does
is it isolates these changes from our live code
from what's displayed on the website, so we can make changes to the code maybe have a conversation about it,
discuss what we need to do, but we can do that completely separate, so that we don't harm that code,
that's out there on the website. We can even decide,
you know what, we decided that we don't
want to do this after all, and we can delete this branch
and those changes will never go to the main site. So in this case,
we're gonna create a branch for this, we can call this branch
'Updating Recipe', and we can go into proposed file change. Now the very next step its going to ask
us to do is create a Pull Request. And you remember
a little while ago we looked at that CONTRIBUTING.md document, well you'll notice in the yellow box here, you'll see some guidelines
for contributing, this is where that file appears. So if I wanted to click on that link,
which we won't do now, that's where you would see those
contributing instructions. So in this case, we've made a change we want to have some discussion about it. The next thing we need to do is we need to ask for feedback
from our coworkers. And the way we do that within GitHub
is to create a Pull Request. And so you can think of a Pull Request as sort of pulling in comments, pulling in feedback
before you make a change. So we have the option here
to write a comment, we could perhaps put a comment here like, 'I added some instructions
please take a look at this'. (Typing) There you go. And so we can even, if we wanted to here, notice we can still drop images
just like we could in the Issues, like Allen showed us
a few minutes ago. So I think this note is pretty good. We can go ahead and click
the big green button that says create Pull Request. So notice that GitHub has automatically
created a conversation for me. It has added that original commit. So if you'll notice there is says, "added preparation instructions" and there's that number
over there at the side, that's the commit,
so it saved that version, and it has added some comments
so that your peers can come back, or so your friends can come back, and they can give you feedback. You'll notice that we have to option here we can immediately merge this
if we want to, but we actually want
to get some feedback, we want some discussion. So if you scroll down, you'll notice there's the option there to leave comments,
just like you saw in Issues, and we can continue to comment,
make changes to that file, and it'll all stay in this safe place
in this branch, where we can get it absolutely perfect before we publish it
to our main page. The nice thing about the Pull Request is that it also gives us the option
to see what has changed. So if you go up to the top
and you look at the Files Changed you'll notice that it shows you
a view here that is the original file on the left and then what's been added
or changed on the right. So in this case we've just added
a couple of things so that's highlighted in green for us
to show that its new. If we had deleted anything
it would be shown in red to show you what was taken out. So this is just a really nice way if someone puts a Pull Request in, to see what actually changed,
what are they doing that's different. This is also really good in a more complex
project to do code review, Where you might want to show... You might want to be able
to look at the code and understand what's changed on that. You can integrate other tools with this. There are tools,
continuous integration tools that will allow you to automatically check the code as soon as you submit
the Pull Request to see if its gonna build or not. So those are some really nice tools. You can find out more about those at
github.com/integrations So in this case, you know what, I think maybe we need
more instructions here. I feel like putting the ingredients
in the crust and baking it isn't the end of the process. So I'm gonna put a note
on this line down here So, 'putting ingredients in crust,
feels like there needs to be more here', and so by clicking on that line I'm able to insert a line comment. Again, really helpful if you're
commenting on code. And again Markdown is supported here. You could also enter pictures
if you wanted to into this comment, and then just click Comment. So in this case we really do need to add
some more instructions, so let's go back over to our file, (clicking) and it's gonna give us the option here, to change it again
using our online editor. So in this case we need to put
the ingredients in the crust and bake it, but then we probably need
to make that meringue. So let's go down to the bottom and let's add some instructions there
to make the meringue topping. And... Here we go, add the meringue. Now you'll notice that this time
its asking us "Do we want to commit directly
to that Updating Recipe branch?" So it knows because we went to this file
through that Pull Request, that we're making these updates
on the branch, and not on the main
GitHub Pages website. So in this case, yes,
that is exactly what we want to do. We want to update that branch
and we're gonna commit those changes. So now we're back at our view
where we can see the difference between the two, and you can see that we've added
this meringue topping. So I think this looks pretty good now. So let's go back to the conversation. And one of the things that we like to do
to kind of sign off and let each other know that we think
something is ready to go, is we'll go down into the comment field we love emoji, and so we'll enter a little +1 emoji
to give the thumbs up. And Comment. So perfect, it looks like we're ready
to take the next step. So in this example,
let's look back up at the top, back up for just a second, we can see the complete story
of this recipe. What's happened to this recipe
since we started making changes to it. So we can see that GitHub Teacher added
some preparation instructions, then someone made some comments
on those instructions, that says, 'we feel there should be more
information there,' there's been a second commit
that added those instructions. So at this point
we're in pretty good shape. So I feel like we're ready to go ahead
and merge this Pull Request. So let's click the big green button. And by merging this Pull Request, what we are doing is we're actually taking this recipe now and we're moving it back to that main GitHub Pages branch, so that it will show to the world. So everyone will be able to see
the changes that we've just made. The other really nice feature here is GitHub wants to save you some time. So if you reference that original Issue, so you remember we had
that Issue that said we needed to add instructions
to our lemon merigue pie? There are a few keywords you can use,
Fixes is one of those. And so you can say, 'this fixes
or this closes', and then you can use the hashmark, and you'll notice now it pulls up
the open Issues that you have. So you can find the Issue, that's related to this Pull Request or the Issue that you were trying to fix, you can, if the list is really long, you can type in a word
that you remember from the Issue, like we've done here so you can see. There's our Lemon Ice Box pie directions, its Issue number 32,
I'm gonna click on that, and I'm gonna confirm merge. Now it says the Pull Request
was successful, its been merged and closed. We don't really need that branch anymore, there's nothing on it, its empty, so we can go ahead and delete that. But not to worry,
you can always restore it if you need to as you can see the option there. So let's see what's happened,
to this Pull Request. So if we scroll back to the top
of the Pull Request, we can see that the Pull Request
has been merged. So that's done. But what about that Issue? So let's go back over to the Issues, and we'll have to go to Closed, and there's that Issue, so that Issue has now been moved
into Closed as you can see up there
on the left-hand side. So that's just a really quick walk-through of how you'd handle making changes. As I mentioned its very intuitive
as you go through, it'll tell you exactly what you need to do
for the next step, its just a matter of following along
and remembering your primary steps here. You're gonna edit the file. You're gonna commit those changes. You're gonna create your Pull Request, and then after the changes
have been finalized, you're gonna merge that Pull Request
back in with the main branch. So with that... We have a few more things that we want
to show you for managing your project, and I'm gonna hand it back over to Allen, who is gonna take you through
how to add team members, and see how the team members
are progressing. (Allen) Yeah. Thank you Cynthia. So with the time that we have left, I wanted to take a little bit of time to walk through some of the tools
that you can use to manage the human resources
on your project, as opposed to the code resources,
and the tools that you have at your disposal. The first way that we can help manage
this increased communication, as Cynthia said,
is by using teams. So in our example
we're assuming a few things. We are assuming that you have
an organization account, as opposed to just a personal account. So if we go back to our repository and we click on our settings,
over on the right-hand side, there's an option for Collaborators. And, I'll type in our password here. And you'll notice on our repository
right now we have one team associated with it. So that's our owner's team, and in that case the owners control
everything on the repository. But let's say we want
to create a new team to kind of group people together. And that's one of the ways
that teams really shine. If you think of teams,
they're kind of a hybrid between a distribution group
in something like say Outlook, and an Access control group from something like
maybe, Active Directory. So you can use them
to control access to your repository. But what's really awesome
is they let you group people together, so you can bring multiple people
into the conversation all at once. In this case we gonna create
a Vegetarians group, who has read access to our repository. And we're gonna see how you can use that
to further a conversation, or put it in a different direction. So let's navigate back to our repository, I'm sorry, I jumped ahead here, let's add some people to that team. So let's go back to our settings and Collaborators, and we will choose an existing team, and we see Vegetarians here, so we'll click Vegetarians and add team. And it looks like we have
one person in that team, but we'll add them to our repository. And so now we'll go back to our cookbook, or we could add people to this team
if we wanted to, so maybe Cynthia, do you want to be on this team? And maybe we'll add GitHub Student. So really easy, GitHub just autocompletes
these names for you, it makes adding people a breeze. So now we'll navigate back
to that PM Cookbook. And let's take a look at an Issue, and see how we can use Teams
to push an Issue forward. So down here we have Issue 26 for
"Add more side dishes with vegetables". So, it looks like Cynthia here
has proposed new recipes, so she says maybe we should add
some dishes with carrots, green beans, or maybe artichoke. And I commented back, and I said, "Well, I'm not really sure an artichoke
is technically a vegetable." What would be great in this instance
as a project manager, you can loop in those vegetarians, and say "Hey, can you guys weigh in, since you happen to know a little bit
more about vegetables in this case?" We can @ mention our vegetarians. And we say,
"Vegetarians, what do you think?" And so we'll comment,
and everyone in that distribution group, that Team, will get a notification. And if you mouse over vegetarians,
you can see who that went to. Its a nice way of seeing who all is on a team,
who you actually just pinged, and who you can expect to hear back from. So the next thing I want to talk about
is a tool called Graphs. And there are a lot of different pieces
to this Graphs tool, but the one we're gonna look at today
is this Contributors tab. This is a really great way of getting
a better sense of who's doing what work on your project. So you can filter this graph
a couple of different ways. Right now its filtered on commits but we can also filter it on
Additions or Deletions. So if you think about Additions,
these are people who were adding code into your repository. If you go to Deletions, the same deal,
its people who are removing code. And then if you filter by Commits, that shows you people
who are making changes, whether they're additions or deletions. Now, I have a tab open
here in this browser, because we don't have a ton of data
here in this repository, so if you see up here, Contributors to GitHub Training Kit, this is the repository
for our public training kit, these are open source materials, we have a much bigger timeline, and you can see how
the activity fluctuates. We have a much larger group
of Contributors, and so we can see who is pushing code
into this repository, right now it looks like
Jordan McCullough is our rockstar because he has added 236,237
lines of code to this repository. Now this is a big long timeline but let's say we just wanted to look
at the activity in 2014, from let's say, February through March, if we click on the graph
and drag across it, the green one up here at the top,
if we drag across, it will actually dive down
into that timeline and show you a zoomed in view
of that particular selected timeframe. So if you want to examine
some of these curves a little bit closer, you just drag across, and GitHub automatically shows you
that timeframe. So its a nice way to see
what activity is going on, but more importantly,
who is doing it. So finally, lets take a look
at the Pulse tab. So we've dove down into our repository, we've looked at all the ways to manage
Issues, manage Pull Requests, at a very highly detailed level, especially through the Graphs tool, we can dig down and see
what those changes are that are actually going on in the code. If you think of the Pulse tab,
its a way of stepping back, and viewing your project,
sort of at a distance, but at a higher level so you can get
a better sense of what kind of activity you have going on. So let's hop back over to our GitHub
PM Cookbook repository. And we'll go to the Pulse tab here, 'cause there's a little bit better
activity going on. It shows you how many Pull Requests
and Issues have been opened and also been closed. So you may use this for instance if you
have a lot of new Issues coming in, but not a lot of Issues being closed
in this time period, you may want to dig down in and see,
you know, what's going on there. Down below, it breaks these numbers down so you can see which Pull Requests
and Issues are contributing to the numbers at the top. And so, as an example, let's take a look
down at one of our open Pull Requests. And I'll show you how you can use
this tool to kind of dig in and look at workflow issues
that you may be encountering. For instance, one of these proposed
Pull Requests, we have side recipes for review. So it's been open for four days and there hasn't been
a lot of activity on it, it hasn't been closed
since it's been opened, so let's see what the conversation
is on this particular Pull Request. Somebody had submitted ideas
for side recipes, and GitHub teacher has commented back and said, "Hey, I believe Crockpot
may be a trademarked name." So as a project manager we can see
that this has stalled out, what we might want to do is comment back, and we can actually
loop in our legal team, we have a legal team here
in our cookbook repository, and we'll just @ mention our legal team. And ask them if they can weigh in
and see if they can let us know just to clarify this so we can move
that Issue forward. Because that's what we're really aiming
to do here is to increase communication, we're looking to identify issues
that may be blocking us, and help our developers
get their work done. So we've commented back we're saying "Hey legal department,
can we use 'Crockpot'". And hopefully the legal department
would comment back after they receive their notification, and that would help us move that issue
toward resolution, we could get that Pull Request merged in
once that had been resolved. So, let's just kind of review back,
we're just about out of time here. But, we're talked about a lot of things, so we've talked about the high level view
of our repository, what goes into a repository,
how you manage your files. We looked at using Issues to manage
that workload as it comes in, you can, you know, filter your Issues,
you can sort your Issues, You can assign Labels,
or assign staff members to individual Issues. And then you can even use Milestones
to take a step back and see what those Issues
are contributing to. We looked at Pull Requests so that we could see the flip-side
of that equation, we've managed the work that's coming in, and now we need to manage the work
that's being done, so that we can control it,
we can review it, we can approve it if necessary. And then we looked at a few tools
that you can use, to kind of report out on your activity. Just to get a better idea of the pulse, to steal a phrase from GitHub here, of what's going on in your repository,
to see what that activity is. So I think with that in mind, we definitely want to open it up
for some Q and A, if anybody has any questions,
if we went to fast over an issue, if you'd like to see something repeated
we're happy to do that. Feel free to type your questions
into the question box, and we'll try to answer
as many as we can with the time we have available. (Cynthia) And just before everyone
signs off this course is really just meant
to be a taste of what's... what you can do in GitHub, we actually have open enrollment courses, that we offer once a month. They're online, so you can take them
during the workday, and they do a much deeper dive
into how to use GitHub, and how to really work your workflow,
or your team's workflow, into this so you can be very effective
and collaborative. So we encourage you if you're interested, take a look at the schedule,
sign up for one of those classes, and we hope to see you
in one of those classes soon. And I am going to put up
just one last little poll. This is our first time doing this class so we hope that you
will give us some feedback on how we can improve it in the future. But if you could,
just give us your general opinion, of how you felt about today's class, and we will stick around
for a little while, and answer any questions
that come up in the questions tab. Thank you so much. (Allen) And Cynthia,
I wanted to chime in here, looks like we have a few questions
that have come in, so we'll try to get to those. It looks like somebody has asked, "How can I integrate GitHub
with other services." The short answer is yes you can, you can definitely integrate
with other services, so for instance if you are wanting
to integrate GitHub with maybe your favorite CI tool, if you use continuous integration
for code review or code testing, or something like that. GitHub supports integrations
with a lot of different platforms. So if you go to...
and I'll put it up on my screen here, github.com/integrations we have a site here devoted to all the different integrations
that are possible, with all of your favorite tools. So you'll notice that we do integrate with Asana, or PivotalTracker, or even Zendesk. We integrate with Travis CI,
CloudBees, Circle CI, a lot of different services out there,
and GitHub integrates with them. At a very high level,
I will answer the question to say that you can integrate
with other services, most of the use GitHub web hooks, that's gonna be the topic of another
webinar that we offer, 'cause it needs a little bit more detail
to explain it properly. But in general that is the process, is that you would use GitHub webhooks
to integrate with these services. Uh, let's see here. So we have a question,
"What is the best place to go to get an idea of how to populate complex repositories with different file types." And in this case, I'm not exactly sure,
what you'd be asking. If you'd mind restating your question? (Cynthia) I think one answer
to this question might be, you know obviously GitHub has a huge
open source community, and so one way that you can find new
information on GitHub is to look at trending repositories. So if you go to GitHub and you sign in
under your user name, let me just go over here, and we'll look at GitHub Teacher, so let's see, Alright Allen, trying to drive
on your screen is a little challenging for me,
do you mind-- - (Allen) Yeah.
- (Cynthia) just going to github.com? (Allen) Yeah absolutely,
sorry about that, isn't technology great everybody?
(Cynthia laughing) I think what we're looking for
is to explore these trending repositories? Yeah. (Cynthia) Yeah, thank you.
So on this you can look at a bunch of different types
of repositories, these are just ones that have
a lot of activity on them. So these might be a good place for you
to start looking to find some of the more complex file types. Does that help? Or were you looking
for a more specific example? Uh, okay perfect. (Allen) Very cool. So I think that kinda concludes
the session, we're just about out of time. I will put our contact info
back up on screen. So again, Cynthia Rich and Allen Smith, we are both trainers here at GitHub. You can reach Cynthia on GitHub,
her handle is @crichID her email is crichID@github.com My handle is @loranallensmith and my email
is loranallensmith@github.com We're available if you have questions
via email if you want to follow up, feel free to reach out to us. (Cynthia) And real quick,
since we have just a couple minutes left, we got a great question about what options
GitHub Enterprise has. And well that's a huge question. We do our best to make sure
that we have feature parity between GitHub.com and GitHub Enterprise, so you'll find that a lot of what
we showed you today is also available on Enterprise. That said, you know, there's obviously some logistical difference
with Enterprise. You know GitHub.com we can send
changes out to anytime, with Enterprise, you know,
its kind of dependent on the Admin to load the next,
the most recent updates, so you won't always see exactly the same
issues because of that, however we do our best to make sure
that anything we've put in to .com is also available on Enterprise. If there's a specific feature that you're
curious about that we covered and you're wondering
if its also in Enterprise, just let us know and we can answer
that specifically. (Cynthia) Okay, well we are right
at the hour, so thank you everyone for joining us, for your great questions, and like Allen said,
if you have any follow up questions feel free to reach out
to either one of us directly, and thank you so much
for attending today.