0:03 |
okay well I'll go ahead and get started here it's right at 3 3 30 Eastern so I |
0:09 |
believe that's the time we're supposed to start welcome uh to my session on How |
0:14 |
to Be an Effective open source project participant and I'm looking forward to |
0:22 |
this one this is actually a a bit of a a repeat of a session that I did at a |
0:28 |
previous DN Summit and it went over so well I figured I would do it again and |
0:34 |
try to help some people out with with things especially as it relates to uh |
0:40 |
GitHub so for those of you that do not know me I Am David Poindexter also |
0:45 |
affectionately known as Dean and Dave uh be sure to visit the Indian dave.com and my YouTube channel and please do |
0:53 |
subscribe to the YouTube channel because I'm going to be doing a lot of content over the coming days weeks and months |
0:59 |
ahead um I am the CEO of imaginative we are a creative of marketing and app |
1:05 |
development firm located in the Charlotte North Carolina area I am the |
1:10 |
strategy lead for DN leader in the DNN leadership team getting a little tongue-tied here own board of directors |
1:17 |
for DNA and connect and co-president of the Southern Fried DNN |
1:24 |
Meetup Group various ways in which you can connect with me or down at the bottom there as |
1:30 |
well as with our company in visionado so what are we going to cover in this |
1:36 |
session um we're going to talk a little bit about what open source is and why in the |
1:42 |
world you should care and if you are like minty many that are |
1:47 |
entering into this open source age that we're in |
1:52 |
um at some point you're going to say but I don't get it you know what the heck is getting what is GitHub and what is all |
1:58 |
this terminology mean and why is everybody so obsessed with it using it |
2:04 |
and so forth we're going to go over a lot of that um but I'm going to try to get through |
2:09 |
the slides as quickly as possible because I want to do some Hands-On things and really show a few people a |
2:16 |
few people about kind of how to interact with GitHub a little bit more in a granular fashion and we're going to talk |
2:22 |
a little bit about how you can contribute even if you're not a Dev because let's face it uh GitHub is here |
2:30 |
to stay get is here to stay and you can participate in ways that aren't just |
2:37 |
code but we're going to talk about some of those so let's talk a little bit about what |
2:44 |
open source is and and why in the world you should care well open source is |
2:50 |
commonly referred to as just free software well that's not always the case |
2:55 |
right um open source is where the code is being shared and depending on the |
3:02 |
licensing model that's been placed on that code it may be able to be freely used but a lot of times especially on a |
3:11 |
larger project projects and so forth It's there's a lot of effort that goes |
3:17 |
into these solutions that people make and so |
3:24 |
sometimes the contributors of those or are creators of those Solutions can be |
3:31 |
supported via some kind of structuring or sponsoring structure like GitHub |
3:38 |
sponsors or patreon or something like that but I don't think we really need to |
3:45 |
have that mentality of open sources just free well it is and some of it you can |
3:51 |
use for free and even for commercial use but that's not really the heart behind |
3:56 |
it so to speak so it's really about the source code being open for you to be |
4:03 |
able to see it and work with it and interact with it um yeah so anyways that's just a little bit |
4:10 |
of encouragement uh because we run in the disc quite a bit you know where people kind of treat it as if you're a |
4:18 |
company making tons of money with the software and hey you need to fix the issue that I found well I mean it's open |
4:25 |
source that means you can participate in that open source project you can |
4:31 |
contribute to it you can help you with giving information about the issue you |
4:36 |
know so there's just ways that we can interact with those that are maintaining |
4:42 |
these projects you know in DNM platform being a huge one right |
4:47 |
um anytime that you have an issue with DNM platform well long gone are the days that there's this Corporation you know |
4:53 |
behind the whole thing and everything flows through a team of Engineers and all that well that's just not been the |
4:59 |
case for a long time even though it's been open source for you know since the beginning it now truly is open source in |
5:06 |
the sense that it's Community Driven and so forth so anytime that you have an issue just remember that these are |
5:12 |
volunteers that are out there that are working hard and passion work for |
5:18 |
something that they love and they care about and they want to support so anything that you can do to help make |
5:24 |
their life easier either for you to contribute code or if that's not your |
5:29 |
expertise you know at least giving them the information they need in order to be able to replicate an issue or something |
5:36 |
like that so a little bit about open source we could talk all day just about that but |
5:42 |
well where in the world does open source live |
5:48 |
um we've gone through many iterations of Open Source platforms and you know that |
5:55 |
allow developers to share code and so forth you may remember back in the day |
6:01 |
you know DNN being on oh my gosh my brain just now had a lapse |
6:08 |
um what was it um a lot as you're in this room what was that called uh |
6:16 |
um yep I can't even remember but it was before GitHub days right and we we ultimately went to GitHub |
6:23 |
um but I've got code projects stuck in my head but no uh it was something else |
6:28 |
that's gonna bother me uh for quite some time so if anybody knows the answer to that one uh put it in there this year |
6:34 |
DNN Jeopardy trivia question for this particular session |
6:40 |
um code Plex that's it sorry just came came to my mind but there's been a bunch of |
6:46 |
different kinds of um uh platforms out there to be able to share codon as well as to go and find |
6:53 |
code and use it and get it and interact with it um and they have pros and cons to each |
7:00 |
platform so GitHub has just kind of evolved as one of the more popular ones |
7:05 |
that are used in the open source communities so we'll do a little bit of focusing on that but most likely you |
7:13 |
have at some point hit a brick wall like uh yeah I |
7:18 |
I see it but I don't know what in the world this is or why uh what's the way |
7:24 |
that it is it just seems really confusing maybe you're coming maybe you are a |
7:29 |
developer and you've come from a more traditional older Source control platform like |
7:37 |
um something like visual Source safe or in later years you know TFS |
7:44 |
um and get just seems to be so different |
7:50 |
right than the way that that worked same Concepts you know of of source control |
7:56 |
and versioning and things like that but just the flow of things may seem quite a |
8:02 |
bit different and you find yourself up against a brick wall trying to wrap your head around how this works terminology |
8:09 |
is different semantics are different and so forth and you you may find yourself pulling out your hair quite a bit and |
8:17 |
throwing things around and wanting to drink more coffee so that you could try to understand a little even a little bit |
8:24 |
more and ultimately you just I I just don't get it well I'm here to tell you don't |
8:31 |
be afraid of the force um we're stuck with Git it's here to stay |
8:38 |
and in particular you may hear these terms used |
8:43 |
synonymously but they're not really the same so git is actually the system you know the the methodology the way of |
8:52 |
doing things it's actually the underlying technology tool you know to to do all this Source control but GitHub |
9:00 |
is just one implementation of a system that's built off of get principles and |
9:06 |
get you know usage so not really the same thing but you're using git when |
9:12 |
you're working with GitHub now github's done a fabulous job of |
9:18 |
in the browser being able to make a lot of that a little bit easier from a user |
9:25 |
experience standpoint and some of the things that you can do in more common |
9:30 |
terminology you know in the in the browser like new issue or whatever |
9:36 |
um things like that are or extra things that are kind of and kind of handle it in their experience but you may have |
9:42 |
used like get lab or or and my dog is barking hold on just a second |
9:49 |
I have to tell him to hush um he is excited because somebody is walking by with a dog |
9:57 |
um what was I saying um yeah so some of their user experience is a little bit different where you may have gone to |
10:03 |
bitbucket and it'd be similar but not exactly the same as GitHub all of these |
10:08 |
are built off of git but they they have their own kind of uh opinions of how |
10:15 |
users can interact via the browser and so forth so what are some of the ways that GitHub |
10:22 |
has used this not just for source code because I you know we've all seen crazy code you |
10:28 |
know living out there in some repository on GitHub and that's what we think of maybe when we think of GitHub |
10:34 |
um but that's not really the only use uh for GitHub or git |
10:40 |
a lot of people I think of an author that is writing a book and they want to |
10:46 |
organize their pages of the book I've actually seen GitHub repos set up for |
10:53 |
authors you know to to make their Open Source book you know in their writing be |
10:58 |
more available or digestible in a source controlled fashion just thinking the benefits of that to having you know such |
11:05 |
of the rich history of versioning and so forth of of their book it'd be a great |
11:11 |
way for Publishers uh to to work with that I've seen people you know like |
11:16 |
doing presentations like I'm doing right now making those available I want to get Hub repo or design work or processes |
11:24 |
that you or your company leverage to to be able to get stuff done and you need a |
11:31 |
place to store those in a easily consumable fashion either through private use within your within your |
11:38 |
organization or in a public way where other people can contribute to those processes and involve those over time or |
11:45 |
workflows that you may use or documentation I mean think about things like DNN docs well yeah it's code and |
11:54 |
there is a build system and all that but it's documentation so I mean it could be literally just a bunch of Word documents |
12:01 |
that are sitting out there or Pages document if you're on Mac OS so there's |
12:07 |
a lot of use for git and GitHub |
12:12 |
um that is not just code focused so you don't have to be a coding Guru in order to be able to leverage some of the |
12:19 |
benefits of get and being able to version things and so forth like that |
12:25 |
being able to hear the community's feedback on particular things or |
12:33 |
resolve issues or plan out things we'll see a little bit later kind of how you |
12:39 |
can leverage the projects feature to be able to plan out your projects or your |
12:45 |
next version of things so why do developers love it so much |
12:52 |
well it's kind of a love-hate relationship for a lot of developers especially at the beginning |
12:58 |
but it is based on git and that is a known open source tool itself |
13:05 |
very powerful and offers a lot that older Source Control Systems did not |
13:12 |
offer so it it has become very popular because |
13:17 |
of that and GitHub in particular has done a great job with their user experience in the browser like I |
13:23 |
mentioned earlier so it's it's quite quite evolved and popular |
13:29 |
it's a great way to share projects for the developers is a obviously a great |
13:34 |
place to store code and you can do that in a public or a private fashion so it's |
13:41 |
not just for open source it could be used for your closed Source projects as |
13:48 |
well in private repos it retains all of the history every |
13:53 |
little thing that you do in the repository is logged you know it's it's there in the history and you can get |
13:59 |
back to any point in time with a bit of knowledge of git |
14:05 |
it's a great way to collaborate with others being able to work with other developers |
14:11 |
or designers or QA testers I mean just all sorts of ways in which you can use |
14:17 |
it as an interaction tool and even a project management tool to really kind of plan things out |
14:23 |
and of course us developers have a bit of ego from time to time so it's a great way to show |
14:29 |
off our Mad Skills right so let's talk a little bit about the terminology of GitHub and some things |
14:38 |
that you may see out here and may help you a little bit piece together some things so we've got a repository or |
14:46 |
people refer to as a repo short for Repository it's really just a place that is |
14:52 |
designated for a particular collection of files that's all there is to it nothing more |
15:00 |
we've got code that lives in a repo right and each code change can be committed so |
15:10 |
we we see the term commits branches are simply just there's a lot |
15:17 |
more to this and I'm not going to go into a ton of detail here but there is a |
15:23 |
wonderful video out there that Daniel velas actually referred me to is fear |
15:28 |
not the Shah Sha and it for those of you are Geeks and |
15:34 |
really like the details of how git really works um that is a wonderful video I'll see if |
15:40 |
I can uh maybe if Daniel's still in this uh in this particular session he can |
15:46 |
post the link to that video there that would be awesome um if not I'll try to remember it myself |
15:52 |
um branches are really kind of think of those as like a a way to take a copy of |
15:57 |
something that is in a certain State and put it over beside it and just name it |
16:03 |
something different and you can make changes over here if you want to you can commit them back to the the main branch |
16:10 |
so you can have as many branches as you want within get and it's really powerful and then we've got a concept of releases |
16:17 |
where when you get to a certain state of the code or the files |
16:23 |
I should have probably put files here because in some of those non-code examples I showed earlier it's really |
16:28 |
just about the state of those files when you get to a certain State and you want to make a release then there's that |
16:35 |
concept of making a release on GitHub as well there's the concept of issues and this |
16:42 |
one can be a little bit misleading I know I was a little confused by this when I first started experiencing getting GitHub |
16:50 |
um the concept of an issue is really just a way to document something that |
16:57 |
you want to see work differently or maybe you want to have a conversation about it I know in the early days |
17:05 |
issues were kind of where you had conversations too so let's just say you're trying to use a particular |
17:11 |
solution from a GitHub repo and you just can't get it to work while |
17:16 |
you think it should work or whatever and you just want to ask a question well you would create an issue even though it's |
17:22 |
not really an issue it's just that you're having a challenge and you need some help some support or whatever |
17:28 |
then you would post to create a new issue to be able to dialogue with other |
17:34 |
people in that particular Community or the project maintainers to be able to to |
17:40 |
learn and those issues can be closed so issues now are really used a little bit |
17:46 |
more for literally like issues and there are other features out there and GitHub like discussion you'll see some repos |
17:54 |
have a discussions Tab and that's a little bit more for just having kind of open discussions when you don't have a |
18:00 |
specific issue that needs to be followed up with foreign |
18:05 |
this is a big one pull requests what the heck are you guys talking about |
18:11 |
when you talk about pull request well think of this me as a developer that wants to |
18:17 |
contribute to a project that is living in GitHub well I have to have a local copy of that |
18:24 |
code right in order to work with it so what the typical kind of way of doing |
18:30 |
this is is and this is so mysterious for a lot of people but it's actually way more simple |
18:36 |
than we think it is when we're first starting to think about it so let's take DNM platform for instance |
18:43 |
well if I want to work with DNM platform on GitHub what I would do is I would go |
18:49 |
out to the you know the GitHub repo for DNM platform and I would Fork that into my GitHub |
18:56 |
account so then I've got two copies of that repo right and then I would have a copy locally |
19:03 |
which would be my local repo so I would have three repos essentially |
19:08 |
I would have my local I would have the main repo which is what we often name as the Upstream repo |
19:16 |
and then I would have my origin repo which is the fork repo this on my |
19:22 |
account and those that's kind of the simple um |
19:27 |
first baby steps I guess of really understanding how the repos work but a pull request if I made it this is the |
19:35 |
DNN platform repo and this is my fort repo and GitHub and then this is my local here |
19:40 |
I would make changes to my local I would push that to my origin which is my fort repo |
19:49 |
and then I would say it's almost like making a phone call up to the main repo and say hey I've got a branch over here |
19:56 |
that I want you to consider for merging into your code base but it's over here on my little fort repo well I would make |
20:04 |
a pull request from the Upstream repo to pull my changes from my origin into it |
20:12 |
and that's really what a pull request is it's just any request to pull code from another Repository |
20:18 |
that one's kind of a big one uh to to wrap your head around and then we got the concept of projects |
20:25 |
and this is more of a project management Tool uh this this within GitHub some projects have these and some don't uh |
20:32 |
choose to enable those um but we leverage this on DNM platform to track new issues that are coming in |
20:39 |
and the state of those issues in general so if it's a ones that won this awaiting triage we |
20:46 |
use a board on a project you know to be able to move those from a waiting triage to an enhancement or a feature or a bug |
20:56 |
and we kind of categorize those and then we have a closed and different projects |
21:01 |
use these were different repos I should say leverage projects in different ways and some repos don't at all use those |
21:09 |
so let's do something with GitHub so that you're a git and and GitHub so you |
21:16 |
can kind of see how this works so what we're going to do is I'm going |
21:21 |
to switch over to my browser and we're going to use DNN Docs |
21:28 |
as the basis of what we're going to do here okay so one of the things I noticed before |
21:34 |
this session because I was thinking I need to do something simple with DNN dots because ultimately this website |
21:40 |
is built off of a GitHub repo so if we were to go out to github.com |
21:48 |
let's see in community and being in Docs |
21:53 |
this is the GitHub repository for being in Docs |
21:59 |
so I was thinking to myself what simple change could we make out here to be able |
22:05 |
to um show how some of this works and |
22:11 |
I'll I'll take a moment here just to say if you have any questions as we go |
22:18 |
through some of this we can make this pretty interactive but post your questions in the Q a tab over in the |
22:25 |
chat window on the right of this take a take a shot at asking the |
22:31 |
question in there and what I would love to do is I could bring some people on screen if you have a question and want |
22:38 |
to verbalize this so we don't have to deal with just chat we'd love to do that as well or if you |
22:44 |
have some tricks that you want to share that maybe help with some of this that I'm showing |
22:49 |
so I was looking at docs and I was thinking okay what needs to be done what's a simple change that we can make |
22:55 |
so if we go over into the upgrades area there's a suggested |
23:02 |
upgrade path and this is maintained pretty well but I noticed that the latest version was not |
23:09 |
here I completely forgot to make an update uh to this repo to be able to |
23:17 |
state that we have 9.10.2 because you can jump all the way from any version |
23:22 |
prior or three Dot 9.3.2 and after you can jump all the way |
23:28 |
to 9.10.2 so we need to update this document out |
23:34 |
here and there's multiple ways we can do this but that's one change we're going to |
23:39 |
make and then we're also going to do another change and I'll open this one up in a new tab I'm going to open up |
23:45 |
references and under here there's a releases and I noticed that the 9.10.2 |
23:51 |
release is not out there so let's do this |
23:56 |
so here I've got my browser open into the GitHub repo |
24:02 |
and I have already forked this repo previously but I'll show you where you |
24:10 |
do that if you log into your GitHub account and you come to this page you'll |
24:16 |
see up at the top right there's a fork button and all you do is just click that button |
24:23 |
and if I click the button for me it's going to ask me where I want to Fork it |
24:30 |
so any of the other organizations or accounts that I manage would be shown |
24:36 |
here well already see that I have made a fork of this on my personal repo |
24:44 |
so my personal username on GitHub is David Dash Poindexter so that's my |
24:49 |
my username and then DNN docs is the repo name so I've already forked it so if I were |
24:56 |
to go there I would see this looks just like being in Docs |
25:03 |
but notice up in the top left it says David |
25:08 |
Poindexter DNN Docs forked from being DNN Community slash dndocs in a |
25:17 |
community being the GitHub organization Indian indocs being the repo so |
25:23 |
remember earlier where I was I was talking about kind of the three different repos that we have |
25:28 |
these are the two that live on GitHub this one we'll call Upstream |
25:35 |
being the DNA Community one this one we'll call origin |
25:40 |
okay because this is and you can name these whatever you want |
25:46 |
you can call it left and right or up and down or sideways whatever you want to |
25:51 |
call these but a common convention is to call the the primary repository the upstream and |
26:00 |
your fork the origin okay so now we've got that so we'll |
26:07 |
pretend like I just forked that and then I need to |
26:13 |
pull that locally well I'm going to open up my Powershell |
26:19 |
window now you can use command prompt or you can use Powershell or you can use |
26:24 |
bash or whatever your preference is for for terminal if you're on Mac you could use just the |
26:31 |
terminal or Powershell for Mac there's all kinds of ways to do this |
26:37 |
and I have a directory already set up that is a DN index directory |
26:46 |
and if I list the files you'll see I already have the files here well this on my local machine this is in |
26:54 |
my C colon Dev backslash DNN docs directory |
27:00 |
this is my local repo or repository my get Repository |
27:05 |
so that's the three environments now we've got the upstream and let me just |
27:11 |
do a command here I am a big fan of the can the get CLI or command line |
27:17 |
interface but there are visual tools that you could also use |
27:23 |
I just like the command line because I I need to tell it exactly what I'm doing |
27:29 |
and I can be verbose and I could really it was more for my learning experience than anything else now I find myself |
27:35 |
doing some of the things in the UI in a visual tool like in Visual Studio code |
27:44 |
um wonderful git features built into there same thing for visual studio there's some nice features there where |
27:50 |
you can do a lot of this stuff in the UI but I like to know the commands underneath those user interface kind of |
27:58 |
interactions so that I know that I know that I know what I'm doing and just |
28:03 |
understanding that so I would you know recommend that you do take the time to learn at least the basic commands that |
28:08 |
you'll be using most of the time so I'm going to run a command here this |
28:14 |
get Space remote and I'm going to put a dash V there just |
28:20 |
to be verbose about it I want you to see this concept of remotes |
28:26 |
I have configured remotes for remember I was talking about upstream and I was talking about origin |
28:32 |
well my origin repo is that URL that I |
28:37 |
was showing you before where it's my username slash DNN docs and then you'll see a DOT get on the end of it you don't |
28:43 |
have to have dot get on the end of them but if you were to go in the browser |
28:49 |
and you were to click this code button and you were to look at the information that's in there if I copy that that's |
28:56 |
actually dot get at the end of this so it's just kind of by convention the way that they do it but you don't have to |
29:03 |
have the dot get on it just um just kind of what it is when you copy it here so that's one way that you can |
29:10 |
set up your remotes is you can come to the appropriate Repository |
29:15 |
click on the code and then copy the https version of that |
29:21 |
and then you can actually set up your local remotes that way so like if I were |
29:26 |
to add a new remote I could do get remote space add |
29:32 |
and then whatever name I want to call it let's just say Foo |
29:38 |
and then I could paste that URL I just did a control V by the |
29:44 |
way from what I copied into my clipboard and then that would be kind of like just |
29:49 |
like the Upstream is but then I would have another remote name the same thing so if I click enter and then I run my |
29:58 |
get remote Dash B again you'll see that I have three robots now one of which is called Foo |
30:04 |
now the reason we name these is so that we can use these in various commands |
30:09 |
without having to type all type out the entire URL so that helps a lot |
30:16 |
so what I want to do here is I've got I've got it cloned here locally you know I've |
30:22 |
cloned the repo and you may be asking what in the world are you talking about now you just talk |
30:28 |
about other things now you're talking about cloning what in the world I got to learn that well any repo that you go to |
30:34 |
on on GitHub you can click on this and you can |
30:40 |
grab this URL and you can actually clone it now the way you do that and get |
30:47 |
if I didn't have this directory at all I would just run get Space clone and |
30:53 |
then I would paste that URL there and what that's going to do without any |
31:01 |
other options is it'll create a DNN docs folder wherever you are you know so I |
31:08 |
don't want to do this here because that would put another copy of the DNN docs repo into a subfolder under my repo so I |
31:16 |
don't want to do that but if I were starting from scratch then I would go into whatever parent folder I wanted |
31:23 |
and I would just run this command and it'll automatically create that dndocs folder for me |
31:30 |
if I want to clone a repo into an existing folder that I manually set |
31:35 |
up I could just use space dot at the end of it and that says clone it into the directory that I'm in right here |
31:42 |
so that's kind of how you I got started in my local repo and set it up to you |
31:48 |
know to beginning from the beginning so now that I've got my local repo I've |
31:54 |
got my Fork repo and I've got the Upstream repo I'm ready to start working |
31:59 |
now we talked about Branch earlier so I'm |
32:05 |
going to use a I'm going to create a branch because I'm on Main right now that's a main branch so you can do get |
32:12 |
Ranch to see all the branches you have and I only have Maine local because that is the primary Branch that's out on the |
32:20 |
main repo or the Upstream repos it's a terminology gets gets wild when you're |
32:27 |
talking about all this Maine used to be called Master now it's called main yeah there's a lot of |
32:33 |
different things that we use so we have to be careful the way we talked about it um and how we name things cosmantically |
32:41 |
it's good to really understand a branch is different than a repo right |
32:47 |
Okay so we've got Maine but I want to do a temporary Branch locally to make this |
32:52 |
change so I'm going to do get checkout now checkout is a command and get to be able |
33:00 |
to check out an existing Branch or to create a new branch so if I don't do a dash B |
33:09 |
then it's going to just check out to another branch that I have well I only have one branch here it's Maine |
33:15 |
so I want to check out I want to create a new Branch the B is for branch |
33:21 |
and then I want to call that let's see um upgrade |
33:27 |
path and this could be called anything you want to it just can't have spaces in it |
33:33 |
so this is just a name and it's going to show up on my list of branches here |
33:38 |
but I'm going to do upgrade path because that's the document that I want to work with so now what it's done is it's switched |
33:45 |
notice I've got my my Powershell stuff set up here to where it'll automatically tell me what branch I'm on so it's |
33:52 |
already created a copy essentially a copy of Main into a branch called upgrade path so now |
34:01 |
I'm ready to start doing my work and if I did that get Branch again now you would see I have two branches |
34:06 |
Main and upgrade path and the selected one is asterisks |
34:12 |
so now I can open up the code and work with it now one thing I didn't |
34:17 |
mention is before I started the session I went ahead and I pulled the latest |
34:23 |
code from the main branch on the Upstream let |
34:28 |
me just do that hold on let me just back up so pretend like I didn't do any of that stuff I'm gonna go check out the |
34:34 |
main I don't not creating a new Branch I'm just going to switch back to the main branch before I get started I want to get pull |
34:42 |
Upstream that's the name of my Upstream repo and the name of the branch that I want |
34:48 |
to pull because I'm on Main and I want to pull the Upstream version of main to my local repo |
34:56 |
so I would pull and it's not going to get anything because I'd already done it earlier but if there were changes you want to |
35:04 |
make sure that whatever you create a new Branch from you want to make sure that what you created it from is the latest |
35:10 |
version from the haripa so once I do that I usually make sure |
35:16 |
that my origin which is my forked version of the of the repo is |
35:23 |
um also up to date and in sync with the Upstream so the way I do that is locally I'll |
35:29 |
just do once I pull from the Upstream I will push to origin |
35:36 |
the main branch and it's not going to update anything either because I did that earlier but |
35:42 |
that's kind of how I would get started then I would do my my checkout with a new branch so now I've already got that Branch so |
35:49 |
I'm just going to switch back to that upgrade path branch |
35:55 |
so now we're ready to work all right so I'm going to open up vs code and this is just command to open up vs code from the |
36:02 |
current directory so now I am looking at the dnndocs |
36:07 |
project I'm going to just close all these so we can focus on exactly what we would need to change |
36:13 |
so I need to find where that that document is first |
36:18 |
so if I go back out on the GitHub repo excuse me on the on the DNN docs site |
36:24 |
and this is the page I want to change you may not have known this but we've got built in some really cool features |
36:30 |
here so up here at the top right if I want to improve this dock I can click |
36:36 |
this and that'll take me to the GitHub repo but specifically to the file that I |
36:41 |
need to change and you notice that this is that file it's just in markdown so |
36:47 |
it's not all nice and pretty like it is out on the actual site but you can tell that this is the right document so from |
36:54 |
here I can actually look at my path here and tell where that file is located |
37:02 |
so I'm looking in their content getting started set up upgrades suggested |
37:07 |
upgrade path and then index.md file for markdown so that's the file that I want to change |
37:13 |
so I'm going to switch back over to my visual studio code and let me get rid of some of these down |
37:19 |
here okay so we need to go to content getting started |
37:27 |
setup upgrades suggested upgrade path and there's the |
37:35 |
index markdown file and Yep this looks like it |
37:40 |
this is just a bunch of markdown so what I want to do is I want to update this to |
37:45 |
9.10.2 and then I need to change the url to |
37:51 |
match where it is on the DNM platform repo right because that's where we're |
37:56 |
referencing to if we go back to the Indian docs website you'll see that this links right over so |
38:03 |
if I were to click and open this in a new tab it would go to the |
38:09 |
9.10.1 release on the DNM platform repo so we need to make sure that that's |
38:14 |
correct right so if I go to releases out here I've already found the 9.10.2 |
38:22 |
release I just need to copy this URL which is the same as the other it's just and I'm |
38:27 |
going to change the one at the end to two right so I'll go back over to my code |
38:32 |
and the URL just needs to change to dot two and it's good to always test things like |
38:38 |
this so you could actually just control click into this and see if that opens up |
38:44 |
into the right one and it did so there it is so we know that link |
38:49 |
works we'll go back over here so we've made our change now I just need to save this file so I'm going to do a control s |
38:58 |
now I'm ready I've made my change I now just need to get that back up on |
39:04 |
GitHub somehow right so we're in my local copy so what I need |
39:10 |
to do here is I need to go back over to my command line and if we run a command |
39:16 |
called get status we'll see what changes have been made this is the beauty of |
39:21 |
getting keeps track of everything that you do so it knows oh you changed that |
39:27 |
file so what do you want to do at this point it's asking me so it tells me I can use |
39:33 |
get add to update that or phrase |
39:38 |
commonly called staging we're going to Stage this change locally so that we can then commit the |
39:46 |
change which is kind of like saving in terms of get any changes that we've made physically |
39:54 |
on the files so we're going to do this we're going to do git add now I could |
40:00 |
type out that file path there if I wanted to but yeah that's too much work |
40:05 |
I know that everything it listed up here I want to actually stage it for a commit |
40:11 |
so I can do get add Dot and that says go ahead and Stage |
40:18 |
everything that's you've thought has changed uh Mr get and that's what we're |
40:24 |
gonna do so I'll do that now what happened didn't look like anything |
40:29 |
happened right um contraire if I do get status again now you'll see |
40:37 |
that it's no longer modified it's modified but it's also green it's |
40:43 |
staged for committing so it says changes to be committed see up here it says change is not staged for commit |
40:51 |
this is get CLI by the way telling us all this stuff so here now it is staged and it's ready |
40:58 |
to be committed so now we can actually commit it how do we do that we run get |
41:05 |
commit and then I'm going to add a message now I could just hit enter and it would be |
41:11 |
committed the problem with that is we didn't like describe what we're changing so |
41:18 |
that from a git history standpoint we know what we did you know rather than having |
41:24 |
to look at the actual file and see the change which we could also do okay here we're going to do get commit |
41:30 |
and then I'm going to do a dash m which is for message so we're going to |
41:35 |
add a message to our commit and I'll put this in quotes so I'm going to say something like |
41:42 |
updated um version from |
41:48 |
9.10.1 to 9.10.2 for |
41:54 |
upgrade path and let me just do suggested upgrade path that makes it more clear okay or |
42:02 |
clearer all right so now we're ready I can just hit enter and now it's committed |
42:09 |
okay are you sure David yep I'm sure remember earlier when I referenced that |
42:16 |
video that Daniel vallot us refer me to about fear not the Shah well part of |
42:23 |
that that Shah Sha is these characters right here |
42:30 |
it's just a portion of the shot these are seven characters but it's actually a |
42:36 |
lot longer in reality but you can usually get to a unique |
42:41 |
commit um by the shaw right so it actually says |
42:46 |
to me in the command line interface that it committed those changes and here's the shot for it because everything you |
42:52 |
get is a show so now if I do get status it'll actually tell me well there's nothing commit |
42:59 |
you've already committed it but if I looked at my history you could see that it was actually there am I |
43:06 |
going to go in to that level of detail here but what I've done is I've I've made sure I had the local copy up to |
43:12 |
date with the latest from Upstream I pushed it to origin just to make sure it was in sync then I did a checkout |
43:20 |
and created a new branch called upgrade path and then we made the changes |
43:26 |
and then I staged those changes locally so that they can be committed and then |
43:33 |
we committed it so now we're ready to actually push this but where are we |
43:39 |
going to push it to well we're going to push it to our Fork because that's our copy in GitHub land |
43:48 |
of the primary Repository so and you're going to see how this goes |
43:55 |
together in just a minute so now I'm going to do a get push I'm |
44:00 |
going to push it to our origin remote remember I listed the remotes |
44:06 |
earlier and this is our origin remote here because that's my forked copy of |
44:12 |
the Upstream get push origin and I'm going to name it the same Branch name because that's one |
44:19 |
where you want to push out there I'm going to hit enter and you'll see that it's actually |
44:24 |
pushing those changes to my repo out there and look it even tells |
44:32 |
me to create a pull request for upgrade path that's the name of my branch on GitHub by visiting this URL |
44:40 |
we'll come back to this and we'll actually click it in just a second but I want to show you if I switch over to |
44:47 |
my browser now and if I go to let's go here and let's go to our |
44:55 |
forked repo right now I could have just typed this up here |
45:00 |
um but here look the browser says uh upgrade path had recent pushes one |
45:06 |
minute ago okay so github's pretty smart it actually knew that I pushed a new branch |
45:14 |
out here and this little menu here shows all the branches that I have out here yeah I need to do some cleanup |
45:20 |
but if I scroll down oh yep there's upgrade path so if I were to switch over to upgrade |
45:26 |
path and we were to drill down oh three minutes ago there was a commit uh look |
45:32 |
there's the shaw that was in our command line over here |
45:38 |
so what is that ends with b5b so we'll go back over here |
45:44 |
oh my gosh yeah B5 BB oh okay so they're actually using one let's see this one's |
45:49 |
one two three four five six seven eight characters from the beginning of the Shaw and GitHub is actually using not |
45:58 |
eight characters but they're using seven characters so that's why it's b5b but it's a e d blah blah blah right notice |
46:06 |
in my hovering that if you look in the bottom left-hand corner of my browser you will actually see the full Shaw |
46:12 |
there um right after commit slash um so we're just taking the first X number of characters GitHub in the |
46:20 |
browser evidently uses seven here and locally the CLI was using eight |
46:26 |
characters but yeah it's the same commit but it's out on GitHub though right it's |
46:32 |
in my branch that I just pushed out to my fort dripa up here |
46:38 |
so this is cool stuff so now I have a couple of options I could actually just click this do a |
46:44 |
control click on this URL here and it'll go ahead and start the creation of a pull request here because now that we've |
46:51 |
got this out on GitHub we can create a pull request which is basically like follow you know calling |
46:57 |
home up to the the upstream and saying hey I've got a new change over here in |
47:02 |
My Little Fork repo I want you to pull it and review it and see if you want to |
47:08 |
merge it into your main code base pretty cool stuff so I could either click on that link |
47:14 |
from the command line interface or I can come out here either on my Fork repo or on the |
47:21 |
Upstream this is mind-blowing but let's go out on the Upstream it look it |
47:28 |
changed this right here it says okay on David Dash Poindexter colon so that's my |
47:35 |
username colon Branch name just had recent pushes three minutes ago |
47:41 |
do you want to compare what we currently have up here and go there so yeah whether I do it here or whether I do it |
47:48 |
on my Ford repo it's the same action in the end because when I click this button to compare and pull requests |
47:55 |
it will start the process of creating a pull request now that remember that commitment message that I typed in |
48:01 |
earlier that's what this is so it automatically populates the the title of |
48:07 |
your pull request and if we look up here this tells us a little bit about what we're making a pull request to do |
48:13 |
we're saying notice this Arrow here we're comparing David poindexter's |
48:21 |
forked repo Branch upgrade path against the Upstream repo |
48:28 |
Maine because we're saying hey Maine is your |
48:33 |
main you know Branch up here we want you to consider merging what we created over |
48:40 |
here into Maine and I can scroll down I can actually see |
48:45 |
oh well there's the change file so on the left here there's two different views uh by the way there's a unified |
48:52 |
and there's a split view I like the split view because it shows the old version of the file on the left and the |
48:57 |
new version of the file on the right so you'll notice that the highlighted if I zoom in here a little bit |
49:04 |
see that the highlighted portion is what changed so what used to be 0 1 here is now 0 2 |
49:10 |
here and what used to be 1 here is now 2 here and it highlights the entire section of |
49:16 |
code that was changed but there's another highlighting style for the actual characters that changed |
49:24 |
so this is really cool now in this case there's not a whole lot for |
49:29 |
me to say but I just will put something in here that makes sense so |
49:34 |
um eight the suggested upgrade path based |
49:42 |
on the current release |
49:50 |
and that's all I need to do and then I click uh create pull request |
49:57 |
and now we have a pull request hopefully that demystifies it just a |
50:04 |
little bit for you for how this works and then as in as a |
50:10 |
maintainer of the Upstream repo and you're seeing that I have some of those |
50:16 |
insights because I'm actually one of the ones that'll review these kind of pull requests we've got some automation |
50:23 |
that's happening here um to check that it builds and that whatever changes were made didn't break |
50:31 |
the site oh my gosh okay so Daniel valadis has already looked at this |
50:37 |
and he says okay I approve it so what he did is he looked over here at the files |
50:42 |
change tab he says Yep looks good he did a review changes and he clicked approve so if you have the rights to to do that |
50:50 |
I don't hear Daniel thanks for helping me out I mean that's a nice assist there so he has approved it and he has also |
50:57 |
given me a taco because I love tacos thank you very much and then once the build process finishes this will go |
51:04 |
green and the maintainer will be able to merge that pull request and that will automatically kick off those builds |
51:11 |
again and publish it to the website so that was a lot to go through but I |
51:17 |
wanted to go through that in detail because regardless of whether it's DNN docs or |
51:23 |
if it's DNM platform or some other repo that you're you're interested in on |
51:29 |
GitHub the process is usually about the same um for it this will keep you from |
51:35 |
getting in too much trouble uh with with get but you know if you want to |
51:41 |
contribute you know to documentation or even to some code you know on various |
51:46 |
repos this is the process that you're going to go through some of those repositories don't require that you have |
51:53 |
a fort repo and all that but we have found that this is just really good practice to to do it this way it's a |
52:00 |
little bit of extra overhead to do those kind of things but it's it's solid if |
52:07 |
you understand the principles of where things live and how it works and what a pull request and all this stuff is then |
52:14 |
it it really becomes a whole lot more simple so once all this finishes with |
52:20 |
the build process we'll do something called merge and it'll merge |
52:25 |
my Branch into the Upstream branch |
52:31 |
so then it becomes the new main branch with that change in place so it's really |
52:38 |
cool um neat way of doing it so let's we'll scroll through it one more time and please do ask questions in the Q a tab |
52:46 |
over there if you do have them and I'll be happy to bring anybody on screen to |
52:51 |
to ask questions as well just uh pipe it up in in the chat there um so let's do it again let's do one |
52:58 |
more here because we're going to go through it but we're going to go through it a little bit quicker and I won't go through all the excruciating details of |
53:04 |
all that but let's update the releases page this time let's do it a little bit |
53:10 |
you know quicker through this so we come to the page that we see up yep |
53:18 |
they haven't listed the latest released out here so this page needs to be updated so let's um open this in a new tab and |
53:25 |
find out where it is okay yep so we're on the DNN doctory poets and content reference releases |
53:33 |
so I know where it is now I'm gonna do it so I'm going to go back over to my |
53:38 |
command line and oh always remember where you are and what you're doing because right now I'm on the upgrade |
53:45 |
path right so um I don't want to be on that Branch |
53:51 |
anymore you may be tempted to go get check out Dash B and releases or |
53:57 |
something like that right you don't want to do that because then we would be making a copy of our |
54:04 |
okay my screen is flickering here evidently hop in doesn't like that okay |
54:10 |
um you might be tempted to do this but you don't want to do that you always want to start or you hear some of us |
54:16 |
refer to it as basing your branch off of the latest version |
54:22 |
so I don't know if that PR has been merged yet let's see |
54:28 |
here real quick see if Daniel merged it nope it's still running its build but um |
54:35 |
if this was already merged then what we would do is we want to check out our |
54:43 |
main branch right that switches us back from upgrade path and I want to keep my |
54:48 |
upgrade path here just in case Daniel looks at that and says uh yeah you're going to need to make a change there you |
54:54 |
really messed that up then I'm going to want to keep this intact until that PR or press |
55:02 |
pull request has been merged then I can delete it locally I don't need it anymore so I'm going to check out Main |
55:09 |
and then I would do a get pull Upstream main to make sure I have the latest and greatest in this case there's going to |
55:15 |
be no changes because that hasn't been merged yet and then I would do a get push oops |
55:23 |
origin main to just make sure that it's in sync with the Upstream Main |
55:28 |
now I'm ready to I'm on the main branch so I want to base my new Branch off of |
55:33 |
Main not off of upgrade path otherwise it'll get messy with Git because it'll stack those commits so if I were to |
55:41 |
create a version or a new Branch from upgrade path you would see this commit as a part of the history on that I don't |
55:48 |
know how my screen is flickering but it is let me go back over here |
55:55 |
okay Brian Dukes approved it as well so we'll go back over here |
56:00 |
let's see now we'll need to do get check out a new branch and we'll call this one |
56:06 |
releases remember this can be called anything you want to it's just a branch name so I'll just do something that makes |
56:12 |
sense so to get check out New Branch releases now I can open up my code original |
56:20 |
Studio code and notice that in visit vs code you see what branch you're on in |
56:25 |
the bottom left here so this is on the releases Branch so you can always kind of just double check and |
56:30 |
make sure that you're on the right Branch so this is not the document now I've already forgot the path so I'm |
56:36 |
going to have to go back out here we'll go to this okay so content |
56:41 |
reference releases index MD so we'll go con |
56:47 |
content reference releases index there it is |
56:55 |
okay so this looks like the right file to me so what I'm going to do is I'm |
57:01 |
going to copy that line and then I'll just paste it there obviously the information is different we're going to |
57:07 |
look at for the release date but I'll change that to two and we already know from the previous one what this needs to |
57:13 |
be and that's two and I'm going to try to hurry because we're approaching the hour here I just need to get the release date for this let's go out to |
57:23 |
here okay so there's the release there's the date it was October the 19th of 2021 |
57:30 |
so we'll go back over here 2021 three digit month |
57:37 |
and the 19th so I've made my change to the local file I'm just going to save |
57:42 |
that I'll do Ctrl s I'm ready so now I'll go back over into the command line I'll do get status just |
57:52 |
to see for sure that it tracked my changes and it did there's the file that I changed so I'm going to Stage that |
57:59 |
file by doing get add and I'm just going to do dot because I wanted to add all the files that have changed so I do that |
58:06 |
now I can do get status and see that it's green yay so now I'm ready to |
58:12 |
commit it locally so I do get commit Dash M and |
58:19 |
add 9.10.2 release |
58:25 |
to release this page or a reference page |
58:31 |
and then I'm going to hit enter now I'm ready to push it to my origin repo so |
58:36 |
get push origin and I'm going to name it the same Branch right releases so I'm pushing my |
58:43 |
releases Branch to the origin repo and this time I'm going to click on this so I'm going to control click |
58:50 |
and it opened it you just couldn't see that it opened so there it is it actually opened this tab and it already |
58:56 |
put my commit message in the title so now I'll just do a description |
59:02 |
added 9.10.2 release |
59:08 |
and I'm going to scroll down just to make sure that's right yep I double check my changes there it looks good so |
59:15 |
I do create pull request and voila it's done |
59:20 |
so that's really the process and you can see the more comfortable you get with the commands there's only a handful of |
59:26 |
commands that I had to learn it's not |
59:31 |
that simple because you can get into trouble from time to time with Git and |
59:36 |
you have to use some more Advanced Techniques but you get the gist of how this works once you get the hang of it |
59:43 |
you can really see how quickly things can flow so there's tons of ways that |
59:50 |
you can contribute to open source in non-code ways as well you can be an |
59:57 |
advocate of those open source projects you can educate people on those projects |
1:00:02 |
you can promote those projects maybe you want to be involved in the DNA awareness team you know to really kind of help |
1:00:08 |
promote things out there getting the word out you can recruit people to get involved maybe you know a developer |
1:00:15 |
maybe you know a designer maybe you know a ux person you know whatever the case may be you can contribute to the |
1:00:21 |
knowledge base in our case DNN docs you can get involved in design because some |
1:00:27 |
of these files are design related they're style related so it's not all just C sharp code right the user |
1:00:34 |
experience maybe you have better ideas of the way things should flow in various aspects maybe you're a translator and |
1:00:41 |
you speak another language and you can help with translations and localization type things or just posting issues out |
1:00:48 |
there care or helping with processes or getting involved in meetups and this is |
1:00:54 |
amazing I'm wrapping up right at the hour many hands make light work if you have any questions feel free to |
1:01:01 |
ping me up directly or post them in the chat and I'll hang out here for just a couple more minutes |
1:01:07 |
thank you everybody for um participating in this session I hope you |
1:01:12 |
found it helpful and according to Daniel blanos it looks |
1:01:18 |
like got approved on that one let's see |
1:01:24 |
hope everybody enjoys the um the rest of their conference yep that one looks like it's approved we'll see if the other one |
1:01:30 |
got merged here it looks like it finished the build process so it could be merged so as an |
1:01:37 |
approver I could do this but I'll let one of the other approvers do that and that'll actually kick off a bill to take |
1:01:43 |
those changes live out there so Daniel if you're here oh Daniel did it awesome thank you Daniel |
1:01:49 |
you're great so now I will show you this just just for those of you that are still hanging out |
1:01:55 |
um you once that gets done notice the GitHub prompted me to I can now |
1:02:01 |
successfully delete my upgrade path branch that is on my fort repo I don't |
1:02:08 |
need it anymore it's been merged into Maine here so I should delete it and keep it clean so I can go ahead and do |
1:02:14 |
that so I can also do that locally here as well so I can get Branch to show all |
1:02:21 |
my branches and I can do get Branch I'm gonna do a dash capital d to force |
1:02:27 |
delete it and I can do upgrade path so I can go ahead and delete that Branch here and just keep things nice and clean here |
1:02:34 |
that's pretty cool so now that he's merged this the way that we got the build process working |
1:02:40 |
here if you go back to the main code tab you'll see that it's running a job here so here it once this job finishes this |
1:02:49 |
is part of the process and it'll actually push it out to GitHub Pages which is hosting the actual site and |
1:02:56 |
you'll see those changes live so thanks a lot |
1:03:07 |
as we wrap up David if you don't mind me hopping in uh we as always want to thank all of our sponsors for putting on the |
1:03:15 |
event and of course all of you for attending so thank you very much |
1:03:27 |
thank you |