Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • C camp
  • Project information
    • Project information
    • Activity
    • Labels
    • Planning hierarchy
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 14
    • Issues 14
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 1
    • Merge requests 1
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Package Registry
    • Infrastructure Registry
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • fsfi
  • camp
  • Wiki
  • Proposals
  • Go dependency generator
  • finn

Last edited by Vipul Jan 16, 2021
Page history

finn

  • Name: Vipul Kumar
  • Email: finn02 [at] disroot.org
  • Matrix ID: @finn0:matrix.org
  • IRC: finn0 (on Freenode and OFTC network)
  • IDs: finn0 (Github), finn00 (gitlab.com), finn (fosscommunity.in)
  • Timezone: IST (UTC +5:30)

Title

Go Dependency Generator

Mentors

  • Nilesh Patra (@gi-boi on git.fosscommunity.in)
  • Pirate Praveen (@praveen on git.fosscommunity.in)

Proposal Status

Final

Proposal

This project is regarding implementing a Go dependency generator like Ruby's Gem dependency tracker which tracks Ruby dependencies for Debian.

Synopsis

Currently, there is no easy way to check which dependencies of a Go package has been packed; if not packed, what's the WNPP status of the dependencies in Debian. Due to a lack of Go dependency generator, package maintainers have to manually check the status of package in Debian archive, which can be a repetitive and time consuming process.

Benefits to Community

This project helps Debian package maintainers or in general to anyone who wants to check Debian packaging status of dependencies of a Go package.

Deliverables

At the end of this project, we will have:

  • a command line tool to check the packaging status of all dependencies of a Go package;
  • a nice web interface to check packaging status of a Go package.

Implementation

The implementation language will be Python for command line tool and web technologies (like HTML, CSS, and Javascript) for the web service.

Overview

  1. Create a command line to check packaging status of the Go packages.
  2. Integrate command line tool with the web service.

Command line tool will parse the go.mod file of the package to get the list of dependencies. Then check the packaging status of these dependencies using rmadison and wnpp-check command and save these information in a JSON file, which will later use by web service to show the output in a web page form.

Tentative Timeline

  • 19 Dec - 09 Jan
    • Learn basics of Go programming language.
    • Understand Go packaging workflow in Debian.
    • And if possible, pack at least one Go package which is not yet available in Debian's archive to clear the understanding of Go packaging workflow.

Goal: Prepare to proceed for the work coming up.

  • 10 Jan - 16 Jan

    • Buffer week. Prepare and submit first report.
  • 18 Jan - 30 Jan

    • Complete a rough implementation of command line application.
    • Parse go.mod file of the package to get a list of dependencies.
    • Check packing status of each dependencies in Debian's archive.

    Goal: Implement a minimal command line interface to begin tests and work on improving it.

  • 31 Jan - 06 Feb

    • Polish command line implementation.
    • Add support for different Debian's suites like experimental, new etc.
  • 07 Feb - 13 Feb

    • Add support for WNPP.

    Goal: Add an implementation, so command line application would be also able to check WNPP status.

  • 14 Feb - 20 Feb

    • Buffer week. Prepare and submit second report.
  • 22 Feb - 27 Feb

    • Complete a rough implementation of the web service.
    • Integrate command line tool with the web service.
  • 28 Feb - 06 March

    • Finish and polish the web service implementation.

    Goal: Complete a ready to deploy web service.

  • 07 March - 12 March

    • Buffer week.
  • 13 March - 20 March

    • Buffer week. Finalization of project for evaluation.

If the deliverable is achieved ahead of schedule, the remaining time will be utilized to configure Gitlab CI/CD, deploy the web service, fix issues and incorporate feature requests which are reported on project's issue tracker.

Future work

I intend to eventually integrate Gemdeps library with the code that would come out of this project. This will allows us to have a single service for both Ruby and Go dependency generator. And if possible, rewrite the Gemdeps library in Python 3, as library is written in Python 2 which has reached at its end of life.

Having an idea on related works being done

A similar work has been done by Debian's ruby team for Ruby based application. Cédric Boutillier wrote a command line tool called gemdeps, which checks packaging status of all dependencies of a Ruby package in Debian. Later, it was ported by Balasankar C in Python, which is being used by Gemdeps Generator web interface.

Contributions to Ruby Gemdeps Generator Project

While I was going through the code base of Gemdeps, I've made few minor contributions to the project:

  • https://gitlab.com/debian-ruby/gemdeps-generator/-/merge_requests/11
  • https://gitlab.com/debian-ruby/gemdeps-generator/-/merge_requests/12
  • https://gitlab.com/debian-ruby/gemdeps-generator/-/merge_requests/13
  • https://gitlab.com/balasankarc/python-gemdeps/-/merge_requests/3
  • https://gitlab.com/debian-ruby/gemdeps-generator/-/issues/1

Biographical Information

Hi! I'm a recent graduate student from Computer Science and Engineering. While I was in college, I contributed to some projects, mostly by bug reporting and fixing minor issues. I've some experience in writing code in Python, and contributed to Mozilla's SuMO project, here is my Github profile. Along with Python, I've used Web Technologies (Javascript, HTML & CSS), Bash and Gitlab CI/CD for some projects. I'm a long time Debian user and have some experience with doing sys-admin related task. I like to hang out on some IRC channels like #git, #bash, #debian (OFTC) etc, in my free time.

First Interim Report

I've been a long time Debian user and was thinking about contributing back to Debian community from very long time, but thanks to the Free Software camp, I've packed my first package for the Debian, which is due to be reviewed and uploaded to the archive. (Thanks to the Nilesh and #debian-mentors people for helping me a lot while I got stuck.) While packaging, I've learned a lot of things related to Debian's packaging like setting up Sid environment using schroot, using dh-make-golang tool to setup initial packaging layout, setup mutt to send mails directly from terminal, use tools like pbuilder and lintian to test and check for some common errors in packages respectively. It's been great experience for me and excited about next part of my journey.

Clone repository
  • Controls in the current society
  • Controls in the current society
    • Topic 1
    • Topic 2
    • Topic 3
    • Topic 4
    • Topic 5
    • Topic 6
  • How To Translate
  • List of Free Softwares in Desktop
  • Proposals
  • Proposals
    • <Hugo (Static Site Generator)>
      • Ravi
    • Data Modeling & Free Software Creative Suite
      • progmatic99
    • Debian Packaging and System Administration
      • rojin
    • Debian Packaging
      • arunmathaisk
      • harish
View All Pages