Skip to content

Commit 5b2626b

Browse files
Add guide on enterprise innersourcing (#58730)
Co-authored-by: Laura Coursen <lecoursen@github.com>
1 parent 78f08cf commit 5b2626b

File tree

10 files changed

+114
-4
lines changed

10 files changed

+114
-4
lines changed
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
---
2+
title: Best practices for enterprises
3+
shortTitle: Best practices
4+
intro: 'Follow best practices to set up your enterprise''s teams for success.'
5+
versions:
6+
ghes: '*'
7+
ghec: '*'
8+
topics:
9+
- Enterprise
10+
children:
11+
- /organize-work
12+
- /use-innersource
13+
contentType: concepts
14+
---

content/admin/concepts/best-practices.md renamed to content/admin/concepts/enterprise-best-practices/organize-work.md

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
title: Best practices for organizing work in your enterprise
3-
shortTitle: Best practices
3+
shortTitle: Organize work
44
intro: Promote collaboration and manage resources at scale by following {% data variables.product.company_short %}-recommended practices for managing organizations and teams.
55
versions:
66
ghec: '*'
@@ -15,11 +15,18 @@ redirect_from:
1515
- /admin/user-management/managing-organizations-in-your-enterprise/best-practices-for-structuring-organizations-in-your-enterprise
1616
- /admin/managing-accounts-and-repositories/managing-organizations-in-your-enterprise/best-practices-for-structuring-organizations-in-your-enterprise
1717
- /admin/concepts/best-practices-for-enterprises
18+
- /admin/concepts/best-practices
1819
allowTitleToDifferFromFilename: true
1920
---
2021

2122
{% data reusables.enterprise-onboarding.best-practices %}
2223

24+
## Use innersource practices
25+
26+
Innersource makes it easy for all employees to discover and reuse work. This allows development teams to learn from each other and avoid duplicating effort to recreate common services.
27+
28+
For guidance on setting up effective innersource practices, see [AUTOTITLE](/admin/concepts/enterprise-best-practices/use-innersource).
29+
2330
{% ifversion ghec %}
2431

2532
## Next steps
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
---
2+
title: Using innersource in your enterprise
3+
shortTitle: Use innersource
4+
intro: Help dispersed teams to collaborate by setting up open source–style workflows in your enterprise, without compromising on security.
5+
versions:
6+
ghec: '*'
7+
ghes: '*'
8+
contentType: concepts
9+
topics:
10+
- Accounts
11+
- Enterprise
12+
- Fundamentals
13+
allowTitleToDifferFromFilename: true
14+
---
15+
16+
{% data reusables.enterprise-onboarding.use-innersource %}

content/admin/concepts/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ children:
1111
- /enterprise-fundamentals
1212
- /identity-and-access-management
1313
- /security-and-compliance
14-
- /best-practices
14+
- /enterprise-best-practices
1515
contentType: concepts
1616
---
1717

content/enterprise-onboarding/index.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ journeyTracks:
3333
- '/enterprise-onboarding/setting-up-organizations-and-teams/about-teams-in-an-enterprise'
3434
- '/enterprise-onboarding/setting-up-organizations-and-teams/creating-teams'
3535
- '/enterprise-onboarding/setting-up-organizations-and-teams/assigning-roles-to-teams-and-users'
36+
- '/enterprise-onboarding/setting-up-organizations-and-teams/use-innersource'
3637
- id: 'support_for_your_enterprise'
3738
title: 'Creating a support model for your enterprise'
3839
description: 'Find out how to get help and choose who will be able to contact Support.'

content/enterprise-onboarding/setting-up-organizations-and-teams/assigning-roles-to-teams-and-users.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,4 @@ topics:
1414

1515
## Next steps
1616

17-
Now that you've set up organizations and teams to manage people's access to work in your enterprise, learn about support so you can get help when you need it. See [AUTOTITLE](/enterprise-onboarding/support-for-your-enterprise/understanding-support).
17+
Learn how to set up a culture of innersource in your enterprise to allow teams to collaborate and work efficiently. See [AUTOTITLE](/enterprise-onboarding/setting-up-organizations-and-teams/use-innersource).

content/enterprise-onboarding/setting-up-organizations-and-teams/index.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,6 @@ children:
1717
- /about-teams-in-an-enterprise
1818
- /creating-teams
1919
- /assigning-roles-to-teams-and-users
20+
- /use-innersource
2021
---
2122

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
---
2+
title: Using innersource in your enterprise
3+
shortTitle: Use innersource
4+
intro: Help dispersed teams to collaborate by setting up open source–style workflows in your enterprise, without compromising on security.
5+
versions:
6+
ghec: '*'
7+
contentType: concepts
8+
topics:
9+
- Accounts
10+
- Enterprise
11+
- Fundamentals
12+
allowTitleToDifferFromFilename: true
13+
---
14+
15+
{% data reusables.enterprise-onboarding.use-innersource %}
16+
17+
## Next steps
18+
19+
Now that you've set up organizations and teams, learn about support so you can get help when you need it. See [AUTOTITLE](/enterprise-onboarding/support-for-your-enterprise/understanding-support).

content/repositories/creating-and-managing-repositories/about-repositories.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ People with admin permissions for a repository can change an existing repository
100100

101101
## About internal repositories
102102

103-
{% data reusables.repositories.about-internal-repos %} For more information on innersource, see {% data variables.product.prodname_dotcom %}'s whitepaper [An introduction to innersource](https://resources.github.com/whitepapers/introduction-to-innersource/).
103+
{% data reusables.repositories.about-internal-repos %} For more information on innersource, see [AUTOTITLE](/admin/concepts/enterprise-best-practices/use-innersource).
104104

105105
{% ifversion ghec %}
106106

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
You can use innersource practices to drive collaboration and productivity in your enterprise. Innersource makes it easy for all employees to discover and reuse work. This allows development teams to learn from each other's work, share their expertise, and avoid duplicating effort to recreate common services.
2+
3+
## Make repositories discoverable
4+
5+
Unless they contain sensitive information, you should aim to make repositories visible to all employees.
6+
7+
To do this, encourage employees to use **internal** visibility whenever possible. Internal visibility allows any member of any organization in the enterprise to view the repository, regardless of whether the user is a member of the organization that owns the repository.
8+
9+
You should also set permissive **base permissions** for organizations. An organization's base permission policy determines the default level of access that members of that organization have to all the organization's repositories. Generally, organizations should have at least a "Read" base permission so that all organization members can see any repository. Organization owners can then use teams to grant people greater levels of access in specific repositories.
10+
11+
If you have more sensitive repositories that should not be widely visible, you can set up a dedicated organization with a more restrictive base permission and add specific teams to this organization.
12+
13+
For more information, see [AUTOTITLE](/repositories/creating-and-managing-repositories/about-repositories#about-internal-repositories) and [AUTOTITLE](/organizations/managing-user-access-to-your-organizations-repositories/managing-repository-roles/setting-base-permissions-for-an-organization).
14+
15+
## Document projects
16+
17+
Organize and document your repositories so that people can search for work across the enterprise.
18+
19+
Repository **READMEs** are effective because they're defined in files in the repository, so users can search for them like code. You can also create READMEs at the level of an organization or enterprise account to provide a higher-level overview of where to find different projects. For more formal internal documentation, consider setting up a **{% data variables.product.prodname_pages %} site** or **wikis**.
20+
21+
You can use **repository topics** to group repositories that contain a certain programming language, are owned by a certain team, and so on. This is another way of making repositories easier to find.
22+
23+
For more information, see:
24+
25+
* [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-readmes), [AUTOTITLE](/organizations/collaborating-with-groups-in-organizations/customizing-your-organizations-profile#adding-a-member-only-organization-profile-readme), and [AUTOTITLE](/admin/managing-your-enterprise-account/creating-a-readme-for-an-enterprise)
26+
* [AUTOTITLE](/pages/getting-started-with-github-pages/creating-a-github-pages-site)
27+
* [AUTOTITLE](/communities/documenting-your-project-with-wikis/adding-or-editing-wiki-pages)
28+
* [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/classifying-your-repository-with-topics)
29+
30+
## Set up a culture for sharing work
31+
32+
Encourage teams to publicize their work and share resources with other teams. {% data variables.product.github %} has a number of features that make this easier. For example, teams can:
33+
34+
* Use **discussions** to make their work more visible to other teams. See [AUTOTITLE](/discussions/collaborating-with-your-community-using-discussions/participating-in-a-discussion#creating-a-discussion).
35+
* Create a dedicated internal repository for sharing **actions and reusable {% data variables.product.prodname_actions %} workflows**, which anyone can reference when they write a workflow within the enterprise. See [AUTOTITLE](/actions/how-tos/reuse-automations/share-with-your-enterprise).
36+
* Share reusable pieces of code in internal packages with **{% data variables.product.prodname_registry %}** registries. For enhanced security, you can give {% data variables.product.github %}'s security features access to these registries. See [AUTOTITLE](/packages/learn-github-packages/introduction-to-github-packages).
37+
* Set up common templates and frameworks as **template repositories** that other people can copy to get started with a project. See [AUTOTITLE](/repositories/creating-and-managing-repositories/creating-a-template-repository).
38+
39+
Like with an open source project, you should ensure shared projects have a support model and a clearly defined team of maintainers, especially for services that many parts of your enterprise rely on. Ideally the maintainers team will contain representatives from the different teams that use the service.
40+
41+
## Hide content from external collaborators
42+
43+
If you have external contractors or collaborators who need access to your enterprise's projects, you can grant them a different level of access from regular employees.
44+
45+
Specifically, you may want to hide internal repositories from an external collaborator. To do this:
46+
47+
* If you use {% data variables.product.prodname_emus %}, provision an account for the user with the **guest collaborator** role. Guest collaborators don't have access to internal repositories by default, but they receive base permissions in organizations where they're added as members. They can also be added as repository collaborators in repositories.
48+
* If you do not use {% data variables.product.prodname_emus %}, add the user as an **outside collaborator** in the required repositories, but ensure they are not added as a member of any organization.
49+
50+
Outside collaborators (called **repository collaborators** if you use {% data variables.product.prodname_emus %}) only have access to a specific repository. These users are not full organization members, so they do not receive the base level of access for the organization, and they cannot automatically see internal repositories in the enterprise unless they are a member of another organization.
51+
52+
For more information, see {% ifversion ghec %}[AUTOTITLE](/admin/managing-accounts-and-repositories/managing-users-in-your-enterprise/enabling-guest-collaborators) and{% endif %} [AUTOTITLE](/organizations/managing-user-access-to-your-organizations-repositories/managing-outside-collaborators/adding-outside-collaborators-to-repositories-in-your-organization).

0 commit comments

Comments
 (0)