Thinking about audience

How would I explain my project to a newcomer

Week 5 as Outreachy intern and another topic to cover in the blog! This time about explaining my project to a newcomer in the community.

With this Outreachy project I became part of the Fedora community. My task is to build a command line interface tool to communicate with Pagure pull requests API.

Pagure is an Open Source software code hosting system. It is similar to GitHub or GitLab and it is written in Python. To make Pagure more convenient for users, a nice CLI interface would be handy. As I mentioned in the previous post, there were some CLI tools for Pagure already made, but this one should be a bit different from both - based on Libpagure library and written in Click.

Cranc is/will be a little program written in Python, which communicates with Pagure via REST API. This way developers will be able to perform more actions without leaving the comfort of the terminal where they work on their commits.

Part of my task is to investigate and document other command line tools, like GitHub’s Hub or Gerrit’s git review, and some other nicely done tools, for example kubectl of Kubernetes.

At the moment, Cranc is able to list pull requests and issues of a project. After cloning Cranc, setting the virtual environment, installing dependencies and running a setup file, Cranc is ready to work.

It is possible to run command cranc to display the Click help with the available groups of commands. Or you can run following command to list the project pull requests:

cranc get prs

or to list the project issues:

cranc get issues

Both commands have their parameters, which were provided by the Libpagure library (for example it is possible to filter the results by status, assignee, author, and so on). In the meantime, since I wrote my last blogpost, my pull request in Pagure which fixed the pull request filtering by status got merged, so now it is possible to filter Open, Closed and Merged pull requests and the tests finally pass.

What new terms or concepts have I learned in the past month?

When I have questions I usually ask them on the #pagure irc chat. Sometimes I need to adjust the Pagure code a little bit, so it is more convenient for Cranc, so I keep contributing to Pagure a little. I’m very happy to be part of Pagure community.

Special thanks goes to Pagure’s author Pingou, who gives me a lot of help and feedback. Basically it was him, from who I learned the workflow concept with reporting issues, pushing pull requests and rebasing, rebasing, rebasing :) (I’m singing in my head the “Rebasing song” on music from Peppa Pig’s Recycle song every time I’m rebasing.) Also, I’m trying not to annoy him with not squashing my commits or posting pull requests without proper testing.

Another thanks goes to Ngompa, who usually sees my PRs first and tends to give me thumps up :)

Apart from rebasing, fixing-up, squashing, autosquashing, amending, adding, commiting, reseting, merging, cherrypicking, pushing, pulling, fetching, diffing, hitting the wall with my head and other useful git features I also learned to make my first (at least after some time) tests in pytest, how to write a setup file, how to make a fancy one line for loop, how to write field custom validators with wtforms, some useful tricks in vim, writing blog posts and many more things. This internship makes me learn a lot of new things every day. I’m gonna miss this a lot when it is over.

Written on January 10, 2019