How To Be An Effective Open-Source Project Participant (DNN Summit 2022)

Feb 09, 2022

SUMMARY

Let's face it, in today's open-source project climate, the feeling of having to be a GitHub expert is real! Not only that, it can be quite intimidating as a non-developer when interacting with dev gurus! So how do I effectively participate, even if I am not a developer? In this session, we will discuss common protocols for open-source collaboration with developers and non-developers alike. We will cover the basics of GitHub (and Git). We'll discuss non-code-based contributions and interaction. We'll sprinkle in some real-world, working exercises to give you actual hands-on experience. Finally, we'll round off the session with a few more complex scenarios you may run into from time to time. You'll walk away from this session with more confidence in becoming an effective open-source project participant!

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

RELATED VIDEOS

Southern Fried DNN: DNN Summit 2022 Recap + Community Project Highlights
Feb 17, 2022

This month, we'll be recapping DNN Summit 2022 and then we'll take some time to highlight a few exciting community projects. Trust us, they are worth knowing about and getting involved with!

So Much More To Consider (DNN Summit 2022)
Feb 10, 2022

When it comes to websites, powered by DNN of course, there is so much to consider. And that consideration goes way beyond the technical bits (though these are super important too). Do you perhaps "think like a dev"? Do you rely on "starter designs"? How is your "branding acumen"? Have you brushed up on "color theory"? Do you wear "the marketing hat"? Have you considered "accessibility"? Do things like "user experience", "CTAs", the "customer journey", and "conversations" come into the picture? Oh, and let's not forget about "SEO" and "SEM"! In this session, we'll touch on why ALL of these should at least be in the conversation. We'll share tactics and tips for "doing things right"!

Build a Mobile App Using DNN as the Backend (DNN Summit 2022)
Feb 09, 2022

In this session, we'll build a mobile app using DNN as the backend! This session will provide a foundation and open-source building blocks upon which you can use for more robust use cases.

DNN Summit 2022 - What To Expect
Dec 12, 2021

I speak with the Board of Directors for DNN Association about the upcoming DNN Summit 2022. We'll learn what this wonderful DNN Community conference is all about and why you should seriously consider attending.