Page MenuHomePhabricator

GSoC 2022 Proposal: Command-line interface (CLI) for Canasta
Closed, ResolvedPublic

Description

Profile Information

Name: Amal Paul
Web Profile: Github LinkedIn
Location: Kerala, India (UTC+05:30)
Typical working hours: 5 AM to 8 AM and 9 PM to 12 AM (UTC+05:30)

Synopsis

  • Canasta currently relies on docker-compose CLI to initialize the containers and update them. While a bunch of scripts are used to back up and restore the MediaWiki databases and run maintenance.
  • The project aims to build a CLI tool with the following objectives.
  • Reduce the number of steps involved in installing and maintaining a canasta installation.
  • Make Canasta accessible to users even without the knowledge of Docker.
  • Update the installation easily

Possible Mentors @JeffreyWang, @Yaron_Koren
Have you contacted your mentors already? Yes.

Deliverables

  • Canasta CLI, that can,
    • Initialize and run the Canasta containers.
    • Update the containers.
    • cd into the installation directory.
    • Backing up the installation's database and uploaded files.
    • Restore Wiki from a backup.
  • Improved support for an installation with Kubernetes.
  • Support for AWS and Microsoft Azure installations.

Note: For the time being we have planned to start the project in Rust and we will explore and if things don't seem to go well we might switch to Golang or Python.

Timeline

May 21st - Jun 12th

  • Community Bonding Period, get in touch with the mentors and community members.
  • Research
    • Explore other CLI tools built with Rust. Find all the downside and upside of going with Rust, and will that really make a difference to the project’s performance.
    • What are the issues with the current Kubernetes deployments?
    • How Canasta support could be added to AWS and Azure.
  • Continue fixing issues in the repo.

1. Jun 13th - Jun 19th

  • Build a CLI tool in Rust to create a Canasta container.
  • Make the CLI accessible, preferably using pip.

2. Jun 20th - Jun 26th

  • Add functionality to update the container, backup the database

3. Jun 27th - July 3rd

  • Add functionality to restore the container and move into the installation directory

4. July 4th - July 10th

  • Research on the issues faced by the current Kubernetes Deployments.
  • Build a Kubernetes cluster and run Canasta as in a deployment.

5. July 11th - July 17th

  • Add secrets to the deployment.
  • Find various other issues in the deployment.

6. July 18th - July 24th

  • Prepare for the phase 1 evaluations.
  • Continue working on Kubernetes deployments.

7. July 25th - July 31st

  • Submit phase 1 evaluations (Deadline - 29th July).
  • Add support for Canasta in AWS

8. Aug 1st - Aug 7th

  • Continue working in AWS

9. Aug 8th - Aug 14th

  • Add support for Canasta in Azure

10. Aug 15th - Aug 21st

  • Continue working in Azure

11. Aug 22nd - Aug 28th

  • Complete any pending issues related to the project
  • Find any new features that could be added to the project

12. Aug 29th - Sep 4th

  • Continue with previous week’s work

Sep 5th - Sep 12th

  • Final week. Complete any pending tasks and submit the Code

Participation

Where do you plan to submit your code?
A new github repo in the Canasta organization would be a nice place to host the code.

Communication regarding the project?
It could be done openly via the GIthub issue/ discussions tab and mail could be used to discuss any private matters.I will be also available on zulip.

Are you planning to write any blogs about this event?
Yes, I would be writing a blog about my journey to GSoC 2022, and eventually about the work done for this project as it begins. Including all the decision makings and why it was made.

About Me

Current education:
B.Tech in Computer Science from Christ College of Engineering (Estimated Graduation: 2024)

How did you hear about this program?
I have learned about this program through various student communities such as Community Classroom, TinkerHub, Eddie Hub, and other various youtubers around the globe, especially Indians. Also had a few discussions in twitter spaces.

Will you have any other time commitments, such as school work, another job, planned vacation, etc, during the duration of the program?
Yes, as I am a student we do have classes currently going on, but currently I wish to set GSoC as my first priority as the immense knowledge that it provides is irreplaceable.

We advise all candidates eligible for Google Summer of Code and Outreachy to apply for both programs. Are you planning to apply to both programs and, if so, with what organization(s)?
Yes, I am eligible for both the programs, but have only applied to GSoC.

What does making this project happen mean to you?
As a student interested in working in a DevOps field, the real world and quality information that this project will help me attain is a huge deal. Being a Linux enthusiast for the past One year, I have realized the productivity attained by using Command line applications, So building one that will help a lot of people to save time in getting up and running with a Wiki, is a nice to have.

Experience

IssuesStatus
Obsolete Apache Package #56Closed

I had also made a commit that updates the Docker image to use Debian 11/bullseye. (No pull request was made as another contributor was working on the same)

Describe any relevant projects that you've worked on previously and what knowledge you gained from working on them.
I have worked with Python and built myself small scripts to help in my daily life projects.
Python is my go to scripting language, but I could assure that I will be able to manage any other language without much difficulty.

I had also built a Software that made use of the Open Vscode-server and added functionality for multiple users to login and save their code. This made use of the docker containers to give each user a separate working environment and this can be accessed via the network simultaneously by any number of users as long as the Server has the capacity.

As a Devops aspirant currently I have been trying to work with Docker and Kubernetes and I have gained a decent amount of knowledge in the field in a short span of time. Which encourages me to continue the journey. I have been tinkering with a lot of open source docker containers in my personal machine and they have taught me alot.

Describe any open source projects you have contributed to as a user and contributor (include links).
As I started using Linux I was amazed by the communities, and they helped me to know the importance of the Open Source contributions and the wide opportunities available.

I started serious contributions only as I found the Canasta Project and I have made a few contributions from then, as mentioned above in the section.