-
Notifications
You must be signed in to change notification settings - Fork 261
Reorganize Graphene components when moving to new GitHub organization #2558
Comments
You missed one zero here :) Ad. the squash: We should credit all the contributors whose commits we squashed in the new commit message. Not sure how to exactly do this, but we could generate some stats from git or something similar. Overall the plan looks good, thanks for writing it down here! |
Change: Having |
#895 |
You can only transfer issues to another repo owned by the same user/orga (https://docs.github.com/en/issues/tracking-your-work-with-issues/transferring-an-issue-to-another-repository). So this need to be done in such a way:
And I might have missed something, I didn't test this. |
We have |
We now have three public repos:
The order of reviewing and merging PRs:
This brings us to the state of "old codebase" but split across three new repos. Then we need to clean up GSC:
At this point we are ready to rename everything from Graphene to Gramine: |
1. Repository split
When moving to a new GitHub organization, we should split Graphene into several different repositories. Repositories should be self-sufficient because we don't want to use git submodules (we had bad experiences with maintaining submodules). The proposed repositories are:
graphene
-- contains the core; this is the main repository, successor to the current repo.examples
-- contains all examples not tested per commit (in our Jenkins CI) but tested per release.contrib
-- contains all other examples (contributed but not necessarily periodically tested), scripts, tutorials, etc.gsc
-- contains Graphene Shielded Containers (GSC) plus all GSC examples and corresponding scripts.Rationale (open for discussion):
Our examples are divided into three categories: the "fast and useful" ones, the "important but slow" ones, and "everything else". The first-category examples land in the core
graphene
repo and must be tested in our Jenkins CI (with every PR, with every commit). The second-category examples land in theexamples
repo and must be tested with each new release (maybe manually, maybe with some other CI). The "everything else" examples land in thecontrib
repo -- maintainers may review and test them once, but these examples may get stale or unstable. See the current split of examples below.Documentation is split among these repositories. The core
graphene
repo keeps the bulk of our current documentation (with its own readthedocs website). Theexamples
repo doesn't need documentation, so no separate website (all documentation for each example is stored in its README). Thecontrib
repo keeps all the contributed documentation -- mainly tutorials, blogs, how-tos, etc. (with its own readthedocs website). Thegsc
repo keeps the documentation on GSC (with its own readthedocs website -- open for discussion).The GSC project is moved into its own repo. GSC is not a part of Graphene per-se. On the contrary, GSC uses Graphene. GSC doesn't need to track the latest Graphene version. Indeed, GSC development is largely independent from core Graphene development (except for breaking changes in the manifest syntax). Also, GSC is big enough and important enough to merit its own repo.
Small tools, optional libraries and utilities (
is_sgx_available
,pf_crypt
,ra-tls
,argv_serializer
) stay in the coregraphene
repo. Most of these tools are tied to the internals of Graphene (e.g.,pf_crypt
,ra-tls
,argv_serializer
) and thus must be updated and tested together with core Graphene. Some of these tools are rather independent and SGX-specific (ias-request
,quote-dump
), but they use internals of Graphene (they share code with e.g.ra-tls
) and thus must be updated/tested together with core Graphene. Finally, there is one tool (is_sgx_available
) that is completely independent of everything and could be moved to a separate repository, but it sounds like an overkill to create a whole new repository just for one small utility (open for discussion).2. Split of examples
(See discussion in #2493.)
The following examples stay in the core
graphene
repo:The following examples are moved into the
examples
repo:The following examples are moved into the
contrib
repo:The following examples are completely removed as not used by anyone:
3. Repo
graphene
The core
graphene
repo is the successor to our current repo and keeps the same structure. Below is the repo layout with some proposed changes:.ci
Documentation
Examples
(changes described in the previous section)LibOS
Pal
Pal/src/host/Linux-SGX/tools/
toPal/src/host/Linux-SGX/
(because there will be notools/
, see below)Runtime
(this will probably get removed completely after Meson switch)Scripts
Tools
gsc
; move to GSC repobenchmark-http.sh
(move fromExamples/common_tools/
) -- open for discussionargv_serialize
(move from current root dir under this new dir)ias-request
(move fromPal/src/host/Linux-SGX/tools/
)is-sgx-available
(move fromPal/src/host/Linux-SGX/tools/
)pf_crypt
(move fromPal/src/host/Linux-SGX/tools/
)pf_tamper
(move fromPal/src/host/Linux-SGX/tools/
)quote-dump
(move fromPal/src/host/Linux-SGX/tools/
)verify-ias-report
(move fromPal/src/host/Linux-SGX/tools/
)This repo must be created with new, rebased commit history. The new commit history is exactly the same but doesn't contain the commits before the cutoff commit below. Rationale: commit history before the cutoff commit (10. June 2019) looks ad-hoc and unhelpful (contains many
merge
commits and meaningless ones likeUpdate my email
). Additional rationale: before the cutoff commit, Graphene shipped binary blobs for GCC, Apache, etc. which bloated Graphene repository size to ~300MB.The proposed cutoff commit: 7262d60.
Note that some of the layout changes may be done right now in the current repo, or after the migration in the new repo. The exact timing for these changes is not important.
4. Repo
examples
This repo is created from scratch. Can immediately contain the example apps mentioned in section 2. Below is the repo layout:
apache
curl
gcc
5. Repo
contrib
This repo is migrated from our current https://github.com/oscarlab/graphene-contrib. Its corresponding documentation website is migrated from our current https://graphene-contrib.readthedocs.io.
6. Repo
gsc
This repo contains GSC that is moved out of the current core repo. Below is the repo layout:
.ci
(would be nice to have a CI for GSC working again!)Documentation
(contains the current man page for GSC and probably a couple other pages with QuickStart and Usage)Examples
(contains examples that are reworked from the current https://github.com/oscarlab/graphene/tree/master/Tools/gsc/test; the layout is similar to our Examples in the core repo)test
)It would be extremely hard to cherry-pick the GSC-related commits from the core repo, so we simply create a repo from scratch and the initial commit should already contain the current snapshot of GSC.
Obviously, the new
gsc
repo must be created after the coregraphene
repo because it will contain links to this coregraphene
repo.7. Moving current issues and PRs
The hope is to be able to migrate all open PRs and issues as-is to the new core repo (some PRs and issues will be closed in our old repo and must be re-created from scratch in
examples
,contrib
,gsc
repos). Open for discussion.The text was updated successfully, but these errors were encountered: