Skip to content

Commit

Permalink
more or less final version for first workshop
Browse files Browse the repository at this point in the history
  • Loading branch information
olendorf committed Oct 30, 2019
1 parent d5ab40b commit 3edb409
Show file tree
Hide file tree
Showing 19 changed files with 187 additions and 139 deletions.
5 changes: 3 additions & 2 deletions _config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,13 @@
title: GitHub For Researchers # Name of the workshop

description: |
This is just to make changes. Revert back as soon as possible.
This is a general tutorial on using Git and GitHub with a bit of an emphasis on
how researchers might use the tools for their work.
# Author information
author:
name: Robert Olendorf
name: Robert Olendorf & Shaun Bennett
# url: http://example.com/
company:
name: NC State University
Expand Down
2 changes: 1 addition & 1 deletion _config_dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
# on a local server. Then GitHub will not use the _config.dev.yml file so the settings
# there will take over. SEe https://github.com/jekyll/jekyll/issues/958 .

supporting_files_path: "supporting_files/"
supporting_files_path: "/supporting_files/"

# Where the bibliography data is comment out or set to blank to disable.
title: Git and GitHub (DEV))
Expand Down
11 changes: 0 additions & 11 deletions _slides/introductions.md

This file was deleted.

2 changes: 1 addition & 1 deletion _units/basic_versioning.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ title: Basic Versioning

order: 10

duration: 10
duration: 15

tutorial: true
instructors_notes: true
Expand Down
22 changes: 5 additions & 17 deletions _units/collaborating_with_github.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ title: Collaborating With GitHub # This is required

order: 30

duration: 20
duration: 10

tutorial: true # Set to true if you want this page displayed as a web page
instructors_notes: true # Set to true if you want this displayed in instructors notes
Expand All @@ -15,26 +15,14 @@ description: |
several conventions that facilitate collaboration. In this unit, you learn how to
add collaborators and work with them on a single repository.
In this section, we will learn how to copy repositories, add collaborators
to our own repositories and even collaborate with people we may not know at all.
- Copy Repositories
- Add collaborators
- Manage permissions
- Pull Requests.
instructors_note: |
This is pulled from `page.instructors_note`, and combined with the
`page.description` field.
# These should resolve to files in the supporting_files directory
# or if you specified a different one in _config.yml use that.
# The link_text can be anything you want.
# supporting_files:
# - file:
# file_name: first_example_file.txt
# link_text: Example file for this unit.
# - file:
# file_name: another_example_file.png
# link_text: Example image for this unit.

---

## Add A Collaborator
Expand Down
14 changes: 7 additions & 7 deletions _units/gh_pages.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,7 @@ description: |
just publish a simple page based on the content we have already created.
instructors_note: |
This is pulled from `page.instructors_note`, and combined with the
`page.description` field.
This is not shown in the tutorial pages because `page.tutorial: false`.
# These should resolve to files in the supporting_files directory
Expand All @@ -40,8 +36,10 @@ instructors_note: |

---

If you want more of a web page feel than a Wiki can give you, GitHub also allows you to generate static web pages. A full tutorial on
GitHub pages is far beyond our scope here, but to try it out quickly.
If you want more of a web page feel than a Wiki can give you, GitHub also allows you to
generate static web pages. This workshop and tutorial are actually devlivered via GitHub
pages. A full tutorial on GitHub pages is far beyond our scope here,
but to try it out quickly.

Create a new branch called **_gh-pages_**.

Expand All @@ -57,6 +55,8 @@ This is my first GitHub Pages page!
Then go to your project settings and scroll down to the GitHub pages section. You will see a notice, and once its green and
says its published, follow the link to your new page.

<img src="/assets/img/github_pages/gh-pages_status.png" alt="Status display for github pages" width="900" />

If you read the [documentation](https://help.github.com/en/articles/configuring-a-publishing-source-for-github-pages) you will see there are other ways to organize your GitHub pages as well.

There is a lot you can do with GitHub pages. Not only do people write documentation for their projects, but you can put personal websites up, presentation slides, even this tutorial
Expand Down
7 changes: 2 additions & 5 deletions _units/github_ecosystem.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ title: The GitHub Ecosystem

order: 50

duration: 5
duration: 0

tutorial: true
instructors_notes: true
Expand All @@ -16,10 +16,7 @@ description: |
GitHub's open APIs. The remainder of this tutorial surveys some of these services.
instructors_note: |
This is pulled from `page.instructors_note`, and combined with the
`page.description` field.
This is not shown in the tutorial pages because `page.tutorial: false`.
Expand Down
22 changes: 4 additions & 18 deletions _units/github_wiki.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ title: GitHub Wiki

order: 50

duration: 15
duration: 10

tutorial: true
instructors_notes: true
Expand All @@ -13,25 +13,11 @@ instructors_notes: true
# notation for this.
description: |
Each GitHub project comes with its own Wiki. This is very handy for extended documentation,
meeting notes, and other aspects of a project.
instructors_note: |
This is pulled from `page.instructors_note`, and combined with the
`page.description` field.
This is not shown in the tutorial pages because `page.tutorial: false`.
# These should resolve to files in the supporting_files directory
# or if you specified a different one in _config.yml use that.
# The link_text can be anything you want.
# supporting_files:
# - file:
# file_name: first_example_file.txt
# link_text: Example file for this unit.
# - file:
# file_name: another_example_file.png
# link_text: Example image for this unit.
Give a little time to make a page or two.
---

Expand Down
99 changes: 69 additions & 30 deletions _units/impact_and_analytics.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,25 +2,24 @@
layout: page # This is required
title: Impact and Analytics # This is required

order: 80 # Determines the order of units. Doesn't need to be consecutive though
order: 45 # Determines the order of units. Doesn't need to be consecutive though
# or even start with zero, the pages will be displayed in their sort
# order.

duration: 15 # A hint to how long it will take to cover this topic in mintues.
duration: 10 # A hint to how long it will take to cover this topic in mintues.

tutorial: true # Set to true if you want this page displayed as a web page
instructors_notes: true # Set to true if you want this displayed in instructors notes

# Provide a brief description of what the unit is about. You can use markdown
# notation for this.
description: |
This is pulled from the `page.description` field.
The impact and analytic numbers are useful not only from a project management standpoint,
but can also help users decide if a project is worth using in their own work.
instructors_note: |
This is pulled from `page.instructors_note`, and combined with the
`page.description` field.
Show and tell of the different information shown for a project.
This is not shown in the tutorial pages because `page.tutorial: false`.
Expand All @@ -37,39 +36,79 @@ instructors_note: |

---

## An Opinionated Framework
GitHub provides a number of ways to see the activity and status of a repository. There is
quite a bit of information just on the splash page. The image below is taken from a
popular web development framework [Ruby on Rails](https://github.com/rails/rails).

<img src="/assets/img/impact_and_analytics/ror_splash.png"
alt="Impact for ruby on rails shown on the splash page"
width="900" />

Working top to bottom, we first see how many projects are using this framework ( **Used by**, 1.2 million).
**Watchers**, who get updates about the project. **Stars**, that represent people who like the project.
Stars also function something like bookmarks. Finally **Forks**, which we have talked about, that
are copies of a repository. All of these things give you an idea of how useful and popular a
project might be.

Below that we see the number of open issues and open pull requests. This can give you an
idea of how well the project maintainers are doing in keeping up with bugs, suggested
features. If you scan through the issues and pull requests you can also get an idea of how fast
they get handled. The first page of Ruby on Rails issues are mostly just a few hours old
at the time of writing.

Below that you can see the number of commits, branches, releases and contributes. If you click on the
colored bar, you will see the languages that appear in the code base for this project.

Ruby on Rails is a popular and very active project with lots of contributors and a fairly large base of users. In short,
we can say it has a large, active and supportive community for an open source project.

If you click on the **Insights** tab <img src="/assets/img/impact_and_analytics/insights.png"
alt="Insights icon" width=70 />, you will be taken to more information about the project.

<img src="/assets/img/impact_and_analytics/insights_pulse.png" alt="Insights pulse view" width="900" />

You can look through the different information on the sidebar. Contributors can tell
you who the biggest contributors are. Commits and code frequency give you more detailed
information about the activity in the project. The network and forks provide a view into
how the projects branches and forks.

## Analytics for Project Management

If you are a maintainer or manager for a project, these analytics can be useful for
making sure your project stays on track. You can also identify potential issues into how
commits, branches and forks are being handled.

## Choosing A Project To Used

One of the most common reasons researchers use GitHub is to use other people's work. You
can use these analytics to help you decide if you can use a project for your own work.
For instance, lets say there is an R package on GitHub you are considering using.

You would first go to the splash page and look at the README. A well maintained and
written README is a good sign. It should give you a pretty good idea how to use the
project.

Then you would look at the activity shown on the file list, the issues and pull requests.
If there has been recent activity and the issues seem to be handled quickly that is also
a good sign. If the last activity was 5 years ago, perhaps it would be better to find
another alternative as this project might be dead (or you could adopt the project as
your own by forking it.)

Then you might go to the activity pages, look at the collaborator, see when the commits
where.

There is no hard and fast rule for when you should use or not use a project. It depends
not only on the status of the project you are considering, but also on what other
alternatives exists and also your own tolerance for frustration.

Apprentice is a Jekyll template for creating workshops. The concept was to
make it easy to create a hands-on workshop, or even better, multiple workshops,
with a consistent structure and feel. It is opinionated in that it makes certain
assumptions about what a good workshop should be.

While the focus is on in person, hands-on learning, there should also
be a strong online component that learners can come back to as needed.

The content should be organized and open to all to view.

The content in a workshop shouldn't rely on the creators' or past
instructors to be viable. Enough information should be given to allow reuse.

The workshops should be *web friendly* in that they are easily indexed
and display well on browsers with no additional software needed.

The framework should be as easy as possible for instructors and content
creators to use and create workshops with. In practice, creating a
Power Point presentation may be easier for one workshop, but it would not
fulfill most of the other requirements.

## Structure

Apprentice is composed of these parts.

- A highly informative home page
- An online tutorial that mirrors the content of the workshop
- Instructors notes and timeline for in-person workshops
- Presentation Slides for additional information
- Clearly defined prerequisites
- Clearly defined learning goals and objectives



Expand Down
10 changes: 3 additions & 7 deletions _units/introduction.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,9 @@ instructors_note: |
This initial part is a brief slide presentation to present some fundamental concepts. Also
allows time for late arrivals.
## History of Git
## History of GitHub
## What versioning is
## Git Structure
- Branches (trees vs network)
- Relationship to other repositories
## What we will cover
- Brief introduction and history of Git
- Centralize, Distributed and Decentralized Networks
- Brief introduction and history to GitHub
---
26 changes: 9 additions & 17 deletions _units/more_collaborating.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,31 +4,22 @@ title: More Collaboration # This is required

order: 35

duration: 15
duration: 10

tutorial: true # Set to true if you want this page displayed as a web page
instructors_notes: true # Set to true if you want this displayed in instructors notes

description: |
This section expands on collaborating to introduce collaborating with people even if they
aren't listed as collaborators.
- Submitting Issues
- Fork repositories
- Create pull requests to original repository.
instructors_note: |
This is pulled from `page.instructors_note`, and combined with the
`page.description` field.
# These should resolve to files in the supporting_files directory
# or if you specified a different one in _config.yml use that.
# The link_text can be anything you want.
# supporting_files:
# - file:
# file_name: first_example_file.txt
# link_text: Example file for this unit.
# - file:
# file_name: another_example_file.png
# link_text: Example image for this unit.
---

Expand All @@ -54,15 +45,16 @@ is alsoindexed by the search engines.
## Submitting an External Pull Request

If you are really feeling helpful or motivated, you can also contribute directly to a project via a pull request. Of course you have already learned
about pull requests, but not how to do them when you aren't a collaborator. There is just one more thing to learn to do this. You need to **_fork_** the repository.
This is another way to make a copy of a repository.
about pull requests, but not how to do them when you aren't a collaborator. There is just one more thing to learn to do this. You need to **_fork_** the repository.

Go to this [test repository](https://github.com/olendorf/hellogitworld.git) and click on the **_Fork_** button. It may ask you where to put it,
just choose your own account. Now you have your own version of my play repository (which I forked from someone else!). Makes some edits and commit them.
Now you can make a pull request. Click **_Pull requests_**, then click the green **_New pull request button_**. Set the base repository to *olendor:learning_git*, and
use the *develop* branch. Set the compare to your repository and the develop branch. Click **_Create pull request_** and give a nice title and description. Click **_Create pull request_** again
and the requst will be posted to the repository.

<img src="/assets/img/more_collaboration/pull_fork.png" alt="Screen shot for creating a pull request to an external repo." width="900" />

At this point, the repository owner or maintainer will review your changes. Any questions will be posted as comments on the pull request issue, and ideally answered by you. Once everything is
acceptable, the changes will be merged into the project. Again, all the of this is recorded and typically web searchable too. You also become a contribute to the repository so you get
recognition for your work.
Expand Down
Loading

0 comments on commit 3edb409

Please sign in to comment.