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