[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Contribution process to Publicity Team's repositories (Bits and Micronews)



Hi,

Last meeting I said I would write an e-mail detailing what I had done in
the Bits' repository CI/CD and more importantly why I proposed those
changes, so here it goes - admitedly with greater delay than it should.

Motivation
==========

Since I've been contributing in some way to the team (mostly Micronews
and localization of Bits from around 2023) I saw a few things that would
make the life of new contributors a bit more difficult - and also the
lives of the reviewers too - namely:

- Lack of a standard way to contribute to Bits or Micronews;
- Lack of a standard review process;
- Needing to install all dependencies locally to build/test things.

This last topic is specially more important for potential new
contributors that do not have a lot of experience with Debian and other
GNU/Linux OSes. Think people that like press/publicity stuff but have
used windows most of their lives.

What has been done?
===================

Ok, these were the problems I wanted to solve, or at least mitigate a
bit. My first attempt was making use of our Salsa's CI/CD capabilities
to lint the markdown of the repo. Then, I thought, it would be nice if
it could build the website and show us the outcome so it would be easier
for newcomers and reviewers. It was nice, but one still would need to
go browse the artifacts and select the correct file to display the page.
Thankfully, we can host web pages easily with Gitlab Pages and it's easy
enough to setup for the default branch and so I did for the master
branch of the bits repo.

Side but kinda important note, would guys be ok if we start to
think about moving our default branches to main instead of master?
I think it would require some planning so I just wanted to start the
discussion.

So what do we have now?
=======================

On every push to Bits default branch the CI is started and:

1. Run markdownlint on .md files and halt the pipeline if there is an
   error so it doesn't go to the build step (we can change this
   behaviour to allow it to continue). The rationale is to not waste
   computing resources building the website if one is probably sending a
   following commit fixing the markdown.

2. Build the website with pelican in the same way it's built for
   publishing on bits.debian.org (well, I'm actually assuming the
   commands in the makefile are the ones used officialy).

   - The artifacts of the build job has all the HTML generated pages and
     can be browsed via salsa's web interface.

3. Publish the resulting content on gitlab pages so one can view the
   result in [1]. Note that this doesn't change anything on [2], it's
   only a staging place where we can see the state of the tip of the git
   repo.

   - **This step only runs if it's the default branch.**

[1] https://publicity-team.pages.debian.net/bits
[2] https://bits.debian.org

Cool, so what do we accomplish here?
====================================

I think it makes the lives of Publicity Team delegates easier when
reviewing the work of people with commit access to the bits repo. For
instance, if I (take I as a general person who has already contributed
and has access to the bits repo) want to write a bits post, I can do it
and push to salsa. Then I can ask one of the official members to review
and publish. This person than can simply go to [1] and check the work,
no need to update a local git copy and build the website.

What about for people without commit access (a.k.a. new contributors)?
======================================================================

If they fork the project and work on the default branch, they have the
same benefits. They could write the markdown file, commit and push to
their fork. Then the pipeline would do the same as it does for our
official repo and publish the fork's content under
<salsa-username>.pages.debian.net/bits and they wouldn't need to build
locally nor install all dependencies.

* Obviusly I think it would be very important to build locally before
  commiting and opening a Merge Request, but I'm thinking on the average
  newcomer to GNU/Linux in general here.

What's left?
============

1. Obviously document how one can contribute to the repo.

   I'm thinking in adding a CONTRIBUTING.md file and mentioning it on
   the readme. What do you guys think?

2. Extend this to the Micronews repo. Working in the exactly same way as
   the Bits repo.

   I think there it would be even better for attracting new contributors
   because it's way easier to create a micronews than a bits post.

3. We could extend the CI to also do more stuff e.g. spell checking.

   Not sure about this one, but I'm open to feedback.

What now?
=========

Well, thanks for reading this far :-) The whole point of this e-mail is
to put everyone on the same page and ask for feedback. Should I continue
to implement points 1 and 2 above? Any feedback or ideas on point 3?
Should I nuke everything?

We can discuss via mail or put as a topic for the next meeting, whatever
you think is best.

Cheers,
Charles

Attachment: signature.asc
Description: PGP signature


Reply to: