Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

the future of this repo: updates, maintenance, and ownership #37

Open
mattxwang opened this issue Jul 13, 2022 · 5 comments
Open

the future of this repo: updates, maintenance, and ownership #37

mattxwang opened this issue Jul 13, 2022 · 5 comments

Comments

@mattxwang
Copy link
Member

mattxwang commented Jul 13, 2022

I want to spend a bit of time thinking about the future of this repo, especially since issues like #36 are being raised.

I think this has been a very influential project:

It's also still the only no-experience full training plan we have, and one of the few fully-recorded training sessions.

However, it's showing its age, and there is no active maintenance. Some things I want to specifically call out:

  • we should be teaching React hooks-first at this point
  • we need to update how create-react-app works - both in the template code it generates and eschewing the CLI for npx
  • we should be updating syntax for major version bumps for things like Jest, Express, Firebase (this is a big one)
  • we probably need to stop recommending enzyme given its lack of activity, and switch to something like testing-library
  • we should probably spend a bit of time talking about "new" ecosystem developments: CJS versus ESM, yarn (and pnpm?), deno/bun, Next, etc.
  • I'm still greatly unhappy with how I taught lesson 3, especially since we now don't need to teach classes (really) and can probably make a more concise curriculum set

I think this presents several problems.

  • I don't like just archiving this project, since:
    • even if we replace it with something else, we lose a lot of history
    • we currently don't have a drop-in replacement (in my personal opinion); in particular, I think there's significant utility from having one coherent track instead of making people do multiple different external courses (which often don't overlap well)
    • I'm still quite proud of our impact, and it's used by others (especially due to the high star count)
  • However, nobody maintains this.
    • I'm too far removed from ACM at this point to be the point person, though I'm happy to help out.
    • Internally, ACM is split across several repos: the ones I linked above, + Hack's stuff, + whatever external recommendations we make.
    • Obviously, ACM's dev team + Teach LA's dev team aren't in the same place they were 2 years ago, and each have many more obligations.
  • But, if we do nothing, we're actively creating bad learning experiences.
    • Information is inaccurate/frustrating,
    • and we're splitting attention

So, what do we do? Obviously the best case is we somehow do a stellar job maintaining this without dropping any other ACM commitments, but that seems rather unlikely and unfair towards the current ACM people. It would be great if I could get some current officers to chime in.

(thanks for bearing with this rant)!

cc: @matthewcn56 @doubleiis02 @jainsujay02

@mattxwang mattxwang pinned this issue Jul 13, 2022
@jainsujay02
Copy link

jainsujay02 commented Jul 13, 2022

My thinking is that we should focus on maintaining repos that we actively use as part of our workshops.

  • I want to focus on projects that don’t have free/easily accessible alternatives. The topics covered in this particular Repo can mostly be learned from Coursera and other MOOCs. (I'll admit that I couldn’t find anything as comprehensive as this repo quickly)
  • I’m reluctant to request people to maintain learning repos that we are not actively using because they will miss out on the connections formed from in-person activities/teaching.

Nevertheless, I recognize the value of this particular repo so I don’t mind if someone from ACM/dev team wants to work on it but I am content to let it be archived.

@matthewcn56
Copy link
Member

matthewcn56 commented Jul 16, 2022

I really love how the learning-lab-crash-course helped offer me an introduction to web development and am grateful for it :). Similarly to what should be done for the QWERHacks Firebase Workshops I believe that updating long-term learning tools is the better alternative to creating new ones (something I am guilty of unfortunately.)

With regards to how we can go about updating it without placing too much extra commitment on people's shoulders, I think that we can take a similar approach to how we have updated legacy projects in the past for TeachLA.

  • As committees like TeachLA, Hack, and the Dev Team teach their members with new training, a common problem is that there aren't that many hands on ways that people can apply what they've learnt. What we've done for TeachLA is that common exercises for people after training is giving them issues to update old projects. Specifically, I want to call out the great work that's been done on the TeachLA editor's front-end with refactoring and turning older Class-based style of react components into the more modern functional hooked versions.
    • I believe this approach of offering open-source issues for people to update curriculum for tools such as React and Firebase are a great hands on way for people to practice and not put too much work on officers who already have roles and responsibilities.
  • For updating non-React parts like revamping how JS is taught, new ecosystem developments and any curriculum in general, a lot of this content is also covered by individual committees.
    • I think a good way to provide intern projects this year for TeachLA's training director interns (and possibly the dev team training interns as I am thinking of creating a training director role for the Dev Team as well 👀 ) could work on revamping sections that we believe need tuning up and covering them as workshops for their respective committees.

Our centralized intern training plan for web development draws a lot of inspiration from the learning lab crash course for the introductory HTML/CSS/JS sections, and in large part that is because I haven't found the need to change how things are taught for the introductory sections. I echo your sentiment on changing how JS was taught and found myself not going over everything from the JS/React section and only teaching what was core to web development principles and react in the live version.

The web development centralized training repository, the yearly hackschool repos, TeachLA dev training and this crash course have a lot in common in terms of providing a one stop shop for web development. TeachLA now just pulls from the TeachLA Dev Training Repo every year and I'm guessing the Dev Team and all the interns interested in web development just learn from the centralized-intern-webdev-training repository (ultimately up to the intern training director but I'll def give my opinion next year as well!) which is great for centralization on the committee/intern scale, but now the larger problem is what should we push towards for people to learn web development from ACM as a whole?

We should decide one of these tools that we would want to push as the de-facto content to represent ACM and spend time touching that one up and updating it as a living document. This repo offers a lot of great content from the HTML/CSS/JS perspective, TeachLA's dev training repo covers a lot of extra backend guides and advanced react guides, and JSChats (and each individual guest training sessions which I loved like Omar's TS session) offers a lot of great lessons in the latest advancements of web devlopment, while tools like HackSchool and the centralized-intern-training plan offer concise ways to cover the absolute necessities of all of these tools. Now the question lies in how do we combine all these great resources together!

@jainsujay02
Copy link

After reading @matthewcn56's thinking, I'd like to propose that we just maintain one comprehensive web-dev training repo that

  • covers all the common concepts, frameworks, and tools that we (TLA Dev Team, ACM Dev Team, Hackschool, and others) teach
  • is not geared towards any one part of ACM but focuses on teaching the content thoroughly
  • is used as a foundation course with independent modules that are forked by different committees/training directors to cover the concepts that are directly relevant to their current workshop and they can then add lessons (if necessary) that are only relevant to their workshop (I imagine there won't be too many).

I also like Matt's idea to have interns revamp parts of the repo as their intern project. I have always found that teaching someone else a concept reinforces my own learning so it should pan out!

Of course, since this learning lab repo has the most detailed content, it would make sense to use this as our base and update/add/re-write lessons where necessary.

Needless to say, for my idea to work, there will have to be buy-in from all of the teaching/dev team directors, but I believe this approach should improve the quality of our training while reducing the burden of maintaining legacy repos.

What do you think @matthewcn56 @doubleiis02 @mattxwang?

@mattxwang
Copy link
Member Author

Just with a month left in the summer - want to give a chance for @doubleiis02 to chime in first! I do have some thoughts but I'll save them for a bit 😊

@doubleiis02
Copy link

doubleiis02 commented Aug 20, 2022 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants