7 comments

steady_ember [OP]January 3, 2021

Hey all, I made a video walkthrough of working on the codebase for Ovarit's upstream project Throat.

My intention with making this video is to help others get started with contributing to the project by giving a demonstration. I hear a lot of women say that they are interested in helping with the code but some are unsure how to get started. So I just wanted to walk through the set up of the project and development of a new feature, show my process and encourage you to jump in with both feet!

The video ended up being quite long. I want people to be able to jump in and get something out of it even if you don't have two hours to dedicate, so I've gone through and added timestamp references and even tags for parts of the video that have to do with different topics.

Timestamp Description Project Phase Tags
00:00:44 Intro to throat + review of open issues Intro
00:02:24 Github identity, forking + cloning Setup git
00:04:40 Configuring git remotes Setup git
00:06:20 Creating a new git branch Setup git
00:07:10 Initial setup / README overview Setup
00:08:12 Overview of Dockerfile + docker-compose.yml Setup docker
00:10:00 Review of running docker services Setup docker
00:10:30 Running the dev server, creating test users Setup
00:11:16 Creating an admin user Setup
00:13:40 Grep the codebase for flair Main Quest
00:14:48 Searching the frontend for flair Main Quest
00:16:04 Understand how flair is represented in the data model Main Quest
00:17:45 Finding the sub_flair model Main Quest
00:19:40 Side Quest: Fixing my corrupted environment Setup
00:20:20 Starting from scratch - removing my old clone Setup
00:21:06 Re-cloning Setup git
00:21:40 Re-Configuring git remotes Setup git
00:22:50 Re-creating a new git branch Setup git
00:23:11 Side Quest: package-lock.json Side Quest npm
00:25:55 config.yaml Setup
00:26:49 Makefile Usage blurb Setup make,docker
00:27:35 Side Quest: manifest.json Side Quest npm
00:31:43 Setting up for npm run build via docker Side Quest npm,docker
00:33:55 manifest.json and webpack config Side Quest npm,webpack
00:34:20 Update README re: manifest.json Side Quest
00:36:49 Back to the main mission! Main Quest
00:37:24 Looking at Post Flairs Main Quest
00:38:12 Viewing Webapp Logs Main Quest docker
00:39:50 Discovering sub_flair data model Main Quest
00:40:22 Discussing database migrations Main Quest database
00:41:50 Exploring codebase references to sub_flair Main Quest
00:43:00 Adding a new field to the sub_flair model Main Quest
00:43:55 Reviewing existing database migrations Main Quest database
00:45:00 Creating the new database migration Main Quest database
00:46:30 Adding migration-level README.md Side Quest
00:47:50 Preparing the database migration Main Quest database
00:48:10 Check out the diff and do some tidying and committing Main Quest git
00:49:40 Back to the mission - finish our migration code Main Quest database
00:50:30 Check where the SubFlair is used Main Quest
00:51:20 Adding ORDER BY to an ORM query Main Quest peewee
00:52:13 Considering the UI Main Quest ui
00:54:10 Adding Up and Down buttons to the UI Main Quest ui
00:55:10 Exploring do.py Main Quest
00:56:10 Adding new routes to do.py Main Quest
00:58:00 Logic for the up/down arrow routes Main Quest
00:59:40 Data type considerations for the sub flair order field Main Quest
01:00:03 Supported data model constraints of the ORM Main Quest peewee
01:01:30 Building out do.py conceptual logic Main Quest
01:02:30 Logging: an attempt was made Main Quest logging
01:04:30 Routing the view buttons to do.py functions Main Quest ui
01:04:57 Discussion of translations in the codebase Main Quest translations
01:06:06 Debugging webapp - NameError Debugging
01:07:30 Debugging webapp - OverDetermined primary key Debugging peewee
01:09:02 Demonstration of interacting with the database on Docker using psql Main Quest database
01:09:30 sub_flair.ordinal_position has been renamed to display_order Main Quest
01:11:30 Debugging webapp - do.py Debugging
01:12:00 New buttons are rendering on the Edit Flair page Main Quest ui
01:12:28 Debugging webapp - peewee.IntegrityError Debugging peewee,database
01:14:25 Debugging webapp - peewee Default Values Debugging peewee,database
01:17:30 Debugging migration - messing directly with database Debugging peewee,database
01:18:40 Playing with edit flair UI Main Quest ui
01:19:10 More database messing Main Quest database
01:20:45 Debugging webapp - type attribute display_order Debugging
01:22:22 Checking the flair order on a post Main Quest Ui
01:23:10 Return to writing logic for do.py Main Quest
01:26:10 Debugging webapp - data error Debugging
01:27:10 Debugging webapp - data passed from view to do.py Debugging
01:27:55 Origin of front end flairs - formflairs Debugging wtforms
01:31:53 Debugging webapp - missing info on the UI Debugging ui
01:36:07 Changing do.py to keep flair display_order from going negative Debugging
01:36:55 Adding display order to the UI Main Quest ui
01:37:40 Adding display order to the editSubFlair form Main Quest wtforms
01:42:25 Debugging Display Order: none in the UI Debugging ui
01:44:00 Tinkering with the Edit Flair UI Main Quest ui
01:46:40 Debugging webapp - negative display_orders Debugging
01:47:10 Review and discussion of final product Review and Submit
01:50:23 Diff Review Review and Submit git
01:52:50 Advice for first-time contributors Review and Submit
01:53:40 Review of separate issue 153 Side Quest
01:55:50 Final Thoughts

The best thing about the Reddit ban was that it's causing more of us to think about how to build and maintain our own platforms! We have the skills, we have the tools, we don't need Reddit! I'm proud of and grateful for what we've accomplished working together with the Throat devs, I'm so motivated for us to be able to hold this space and keep the conversation going about issues that affect us in our lives. I hope this video helps someone out with your goals!

And Happy New Year!! 🎉 I'm so glad we're leaving 2020 in the dust! :)

lucreciaJanuary 3, 2021

Hahaha oh no I feel guilty again-- I've been intending for forever to help out on the ovarit codebase; when I first joined the site it wasn't possible to sort comments by 'new' and it annoyed me so much I figured I ought to add the feature myself. I was excited to encounter one of those fabled features that you want to add so much that you join a project just to add it! Normally that's a bit of a fiction and people are paid to work on free software by companies, but this was it, the real thing! I felt like such a nerd, it was great.

So I got the db and site set up locally, and then an excellent ovarit dev added the feature before I got round to it, and I am ashamed to say I haven't touched the repo since because the site works fine for my purposes lol. :D

/End dark confession

womenopausalJanuary 3, 2021

Thank you so much for your work /u/steady_ember. We are all in yoru debt! 👏

[Deleted]January 3, 2021

This is just incredible. Thank you so much. I too was one of those wanting to give it a go but not sure where to start.

PotatoParameterJanuary 3, 2021

was wandering through new and saw this :O

Saved for next weekend!

girl_undoneJanuary 4, 2021

Thanks for this! I've updated our post about contributing (linked below).

We're not the best at marking when stuff in our Gitlab is already being worked on by someone, so if anyone wants to contribute, I encourage you to get in touch with me and get in our development Discord (chat) server!

https://ovarit.com/o/Ovarit/9143/ovarit-runs-on-open-source-software-interested-in-contributing

steady_ember [OP]January 5, 2021

Thank you!! 💜