From f8a96ff58ed87c028a6050b5e438d751b5d94adb Mon Sep 17 00:00:00 2001 From: Juno Woods Date: Fri, 28 May 2021 09:27:02 -0700 Subject: [PATCH 1/2] Proposed project reorganization document --- ...1-05-28-proposed-project-reorganization.md | 50 +++++++++++++++++++ index.markdown | 2 + 2 files changed, 52 insertions(+) create mode 100644 _posts/2021-05-28-proposed-project-reorganization.md diff --git a/_posts/2021-05-28-proposed-project-reorganization.md b/_posts/2021-05-28-proposed-project-reorganization.md new file mode 100644 index 0000000..40d8918 --- /dev/null +++ b/_posts/2021-05-28-proposed-project-reorganization.md @@ -0,0 +1,50 @@ +--- +layout: post +title: "Proposed project reorganization" +author: Juno Woods, Thomas Parry, and Chelsea McMahon +--- + +The last few weeks, we've been working to re-organize our project website in order to make Phase 4 more accessible for newcomers. Next up are the project repositories and documentation. + +We are soliciting your feedback on a number of possible changes. We encourage you to suggest others as well. + +## Proposed changes + +### Unified GitHub organization: phase4radio + +The division between `phase4ground` and `phase4space` on GitHub is somewhat arbitrary, and makes it hard for newcomers to find what they're looking for. We want to rename `phase4ground` to `phase4radio` and have this be the main project account, and we want to either rename `phase4space` to `phase4proto` and have it be used strictly for prototype and temporary code, or delete it and have users work in their personal github accounts (or in the main project repositories, see below). + +In either case, we want to move toward `phase4radio` containing only a handful of projects that are either (a) active or (b) completed. + +### Merging of repositories + +A mark of high-quality free/libre or open source software is thoughtful use of modularity. For example, DVB-S2 FPGA code might be useful for other projects; is it likely that these other projects will use it independently of Generic Stream Encapsulation, or will they mostly be used together? + +The receive and transmit code ought also be combined. And if there are Jupyter notebooks or other test scripts that were used as resources for prototyping the DVB code, these should also be rolled into that repository in a subdirectory. + +### Issue trackers and to-do lists + +The current generic onboarding process might look like this: + +1. Interested person discovers the project and requests to join Slack, then waits to be added. +2. Interested person asks on Slack what needs doing, and waits around for someone to answer. +3. Interested person checks out the code and starts working on the thing but realizes they don't fully understand the requirements, and then has to wait for more answers. +4. Repeat steps 2-4. + +This is a discouraging process. Few people make it through the gauntlet. We want it to look like this instead: + +1. Interested person discovers the project and requests to join Slack, but in the meantime glances around the phase4radio account and sees that there's an active project with an up-to-date issue tracker. +2. Interested person comments on an issue to say they're working on it, checks out the code, and gets to work. +3. Interested person submits their pull request. +4. Repeat steps 2-3. + +The lower the barriers to entry, the more people we'll recruit. + +As such, we recommend: + +* That everyone running a project add issues that are labeled by difficulty and required language and skills. Add the thing you yourself are working on right now! Add little tasks that have been bothering you but that you never get around to finishing. Add big things that you want to do down the road. +* That everyone use the GitHub [to-do list](https://github.com/orgs/phase4ground/projects/1) feature. We'd eventually like this to be complete enough to turn into a project roadmap of sorts, so any potential donor, user, or contributor can easily see how far along we are and where we need assistance. + +## Comments welcome! + +We're submitting this as a pull request on phase4radio.org. You can comment on the pull request or check out the branch and edit it directly, just as you would for any other code. We encourage your feedback and thoughts, and please let us know if we missed anything. \ No newline at end of file diff --git a/index.markdown b/index.markdown index 4c4dd10..a250119 100644 --- a/index.markdown +++ b/index.markdown @@ -57,3 +57,5 @@ The Phase 4 project is grateful for support by grants from the following organiz [](https://www.ampr.org) [](http://www.yasme.org) [](http://www.arrl.org/the-arrl-foundation) + +# Blog \ No newline at end of file From 189478486c249e994afbc758ba0471fe2b0c93d6 Mon Sep 17 00:00:00 2001 From: Juno Woods Date: Tue, 1 Jun 2021 15:43:58 -0700 Subject: [PATCH 2/2] Added some images --- ...21-06-01-proposed-project-reorganization.md} | 12 +++++++----- assets/blog/better_issue_flow.png | Bin 0 -> 11121 bytes assets/blog/issue_flow.png | Bin 0 -> 9218 bytes 3 files changed, 7 insertions(+), 5 deletions(-) rename _posts/{2021-05-28-proposed-project-reorganization.md => 2021-06-01-proposed-project-reorganization.md} (85%) create mode 100644 assets/blog/better_issue_flow.png create mode 100644 assets/blog/issue_flow.png diff --git a/_posts/2021-05-28-proposed-project-reorganization.md b/_posts/2021-06-01-proposed-project-reorganization.md similarity index 85% rename from _posts/2021-05-28-proposed-project-reorganization.md rename to _posts/2021-06-01-proposed-project-reorganization.md index 40d8918..42f362a 100644 --- a/_posts/2021-05-28-proposed-project-reorganization.md +++ b/_posts/2021-06-01-proposed-project-reorganization.md @@ -24,19 +24,21 @@ The receive and transmit code ought also be combined. And if there are Jupyter n ### Issue trackers and to-do lists -The current generic onboarding process might look like this: +The current generic onboarding process looks a little like this: + +![Illustration of the below steps](/assets/blog/issue_flow.png) 1. Interested person discovers the project and requests to join Slack, then waits to be added. 2. Interested person asks on Slack what needs doing, and waits around for someone to answer. 3. Interested person checks out the code and starts working on the thing but realizes they don't fully understand the requirements, and then has to wait for more answers. 4. Repeat steps 2-4. +5. The person either completes or abandons the task. This is a discouraging process. Few people make it through the gauntlet. We want it to look like this instead: -1. Interested person discovers the project and requests to join Slack, but in the meantime glances around the phase4radio account and sees that there's an active project with an up-to-date issue tracker. -2. Interested person comments on an issue to say they're working on it, checks out the code, and gets to work. -3. Interested person submits their pull request. -4. Repeat steps 2-3. +![Illustration of the below improved steps, which is much simpler than the earlier illustration](/assets/blog/better_issue_flow.png) + +In this case, the person joins Slack and starts working on a task in parallel. In addition, they log their progress in the issue tracker so that if they abandon the task, someone else can pick up from where they left off. The lower the barriers to entry, the more people we'll recruit. diff --git a/assets/blog/better_issue_flow.png b/assets/blog/better_issue_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..b34e2f7443d9d75c0a3a63c19cfed33a21bfc0a5 GIT binary patch literal 11121 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 Kc$KI@!2be2b8&zG literal 0 HcmV?d00001 diff --git a/assets/blog/issue_flow.png b/assets/blog/issue_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..1b996f102c6cefae4265069a40877fdb62771d5b GIT binary patch literal 9218 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 u{#s0YyB*2DCQ