Page MenuHomePhabricator

Proposal for Gsoc 2023: Wiki farm support for Canasta
Closed, DeclinedPublic

Description

Profile Information

Name: Piyush Raj
Web Profile: GitHub LinkedIn
Blog: https://piyushraj927.github.io/
Location: Dhanbad, India
Typical working hours: 5 AM to 7 AM and 8 PM to 12 PM (UTC +05:30)

Synopsis

The project aims to add wiki farms support for the Canasta project, i.e. the ability to run multiple wikis in a single Canasta instance

  • Canasta cannot currently run multiple wikis without having multiple Canasta installations.
  • Multiple wikis running on the same container will consume fewer resources
  • Related wikis can run in a single instance and can share resources
  • This project will achieve the following objective
    • running and maintaining multiple wikis should be made simple for the end user
    • provide a simple, user-friendly interface for Canasta users to achieve the above by adding features to the Canasta CLI

Possible Mentors @JeffreyWang, @Yaron_Koren

Have you contacted your mentors already? Yes

Deliverables

  • Modify the Canasta Image
    • to handle multiple wikis with proper persistent storage and backup facility for each wiki in the family
  • Canasta maintenance
    • to run maintenance scripts of wikis in the family
  • Ability to run multiple containers, each with their own wiki farm
  • Implementing logging for wiki farms
  • Improving on CanastaWiki/Canasta-DockerCompose#26 to integrate Traefik into the stack for routing the requests to the appropriate wiki
  • The ability to map wikis in a family
    • to a different directory (e.g. example.com/a, example.com/b)
    • a different subdomain (e.g.a.example.com, b.example.com)
    • different domains for each wiki (example1.com, example2.com)
    • or maybe a combination of above
  • Canasta CLI
    • Create/Import/backup wiki farms
    • CLI support for all the farm instances to manage
      • Skins
      • Extensions
      • Maintenance
    • The CLI will provide complete manageability of all Canasta wiki farms, eliminating the need for manual installation. However, I will ensure that those who require manual installation have the option while keeping the process as simple as possible.
    • Ability to select a specific version for each wiki farm
  • Canasta Documentation
    • Update the documentation for the newly added features

Timeline

PeriodTask
May 4 - 28 MayCommunity Bonding Period. Get to know the community and mentors. Research and discuss with mentors the implementation details of the project
29 May - 4 JuneWork on adding support for wiki farm in canasta image
5 June - 11 JuneContinue working on canasta image and refining the changes
12 June - 18 JuneImplement different Routing options for the wiki family with Traefik
19 June - 25 JuneTest ways to handle persistent storage for wiki farms like shared assets and tables and implement it in the stack
26 June - 2 JulyAdd support for wiki farms on maintenance image
3 July - 9 JulyTest and update the documentation of the above changes. Prepare for Midterm evaluation.
10 July - 14 JulyMidterm evaluation
15 July - 23 JulyAdd functionality for creating wiki farms in Canasta CLI
24 July - 30 JulyAdd commands to manage to route and provide configuration options for wiki setup
31 July - 6 AugustImplement backup and import options in the CLI
7 August - 13 AugustExtend support for the remaining CLI commands
14 August - 20 AugustTest the complete stack and add improvements and fix any issues that emerge
21 August - 4 SeptemberContinue testing and update the CLI documentation. Prepare for final evaluation.
5 SeptemberInitial result for Google Summer of Code 2023 announced

Participation

Describe how you plan to communicate progress and ask for help, where you plan to publish your source code, etc

  • The Communication about the project will be done on Canasta GitHub on relevant issues and PRs
  • Code will be on forked repositories, and PRs will be submitted when features are ready to be submitted
  • The email will be primarily for private discussion. I will be available by email even outside my available hours.
  • I will be writing a blog about the project, and my experience and will try to provide a summary of tasks done and reasoning behind decisions made during the project

About Me

  • Your education (completed or in progress)

Currently, studying Bachelor of Technology in Electrical Engineering at the Indian Institute of Technology (Indian School of Mines), Dhanbad. (2021-2025)

  • How did you hear about this program?
    • I heard about Gsoc from r/opensource on reddit like this post from Kiwix.
  • Will you have any other time commitments, such as school work, another job, planned vacation, etc., during the program?
    • During the coding period of Gsoc, my Summer Vacation will coincide only with the final ten days. I also belong to the web team of my institute's alumni cell. As no work will be assigned during the summer holidays, I can dedicate a significant amount of time to Gsoc, even while attending classes. Rest assured, I will prioritize my commitments and provide ample time and effort towards my Gsoc project.
  • 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)?
    • I have only applied for Google Summer of Code.
  • What does making this project happen mean to you?
    • As I developed a Laravel API for my institute, I discovered the significance of software solutions that prioritize both user-friendliness and ease of installation, maintenance, and upgrading. Throughout this project, I honed my expertise in Linux, Docker, and PHP, which enabled me to efficiently achieve my objectives. Creating a support system for Wiki farms that simplifies the upkeep of numerous wikis for the Canasta community would be a significant achievement for me, and it would demonstrate my development skills while aiding me in my professional growth.

Past Experience

  • Describe any relevant projects that you've worked on previously and what knowledge you gained from working on them.
    • Through my work on an Alumni Data management API for my institute, developed using Laravel, I gained hands-on experience with REST APIs, PHP, Docker, and CI/CD pipelines. This project enabled me to recognize the value of dependable and robust software solutions, particularly for small-scale entities.
  • Describe any open source projects you have contributed to as a user and contributor (include links).
    • I began my open-source journey by working on Canasta project for GSoC 2023.

Any Other Info

Implementation Details

  • The proposed implementation is still in its initial stages and is a rough idea. I am open to suggestions and changes to refine and improve the solution.
  • To efficiently manage multiple wikis within the Canasta image
    • Custom startup code will first check the domain name and then the different paths on each domain to load the corresponding settings file, as shown in Manual:Wiki family . However, I will also take inspiration from MediaWikiFarm on how to implement certain aspects if necessary while developing my code. By doing so, we can handle a farm's routing requirements.
    • All wiki farm configurations will be stored in a single YAML file to enable fast manual creation, importing, and backup of wiki farm settings.
  • The startup process will be something like
  • Here is what a sample config file may look like
TestFarm.yml

farms:
  example-farm:
    wiki1:
      server-url: "example.com/wiki1" # for routing web request to appropriate wiki
      wikiID: "wiki1-example" # passed to the maintenance scripts
      extensions: "./wiki1/extensions"
      skin: "./wiki1/skins"
      upload-dir: "./wiki1/images"
      database: "./wiki1/db"
      config: "./wiki1/config"

    wiki2:
      server-url: "example.com/wiki2"
      wikiID: "wiki2-example"
      extensions: "./wiki2/extensions"
      skin: "./wiki2/skins"
      upload-dir: "./wiki2/images"
      database: "./wiki2/db"
      config: "./wiki2/config"

Event Timeline

Hello,

Have you contacted your mentors already? Yes

Just wanted to note that we have not been able to directly communicate with you and we were never contacted by you. We have given clear instructions on our project GitHub that we need some way to reach out to you privately, but none have been provided so far, and I'm still not sure how we could email you.

I'm not sure why you marked this as a "yes", but until you provide us with some way to contact you, this should be changed to "no".

Upon checking your GitHub profile again, I can now see an email address. I'll send you an email so you can reach out to me directly if needed.

Hi @PiyushRaj927, As the deadline for GSoC is quickly approaching in less than 48 hours (April 4th, 2023, 18:00 UTC), please make sure that your proposal on Phabricator is complete and has been submitted on Google's program website in the recommended format. Once you have done so, kindly move your proposal from the "Proposals in Progress" column to the "Proposals Submitted" column on the Phabricator workboard by simply dragging it. If you have any inquiries, please do not hesitate to ask.

Hello @Gopavasanth, I have submitted my proposal to Google and will keep it updated. I am uncertain whether I should submit the PDF generated from this task page in the browser, or if I should reformat the content into a Google Docs document before submitting the PDF generated from Google Docs instead. Could you please clarify which format is appropriate for submission?

@PiyushRaj927 We are sorry to say that we could not allocate a slot for you this time. Please do not consider the rejection to be an assessment of your proposal. We received over 100 quality applications, and we could only accept 9 applicants. We were not able to give all applicants a slot that would have deserved one, and these were some very tough decisions to make. Please know that you are still a valued member of our community and we by no means want to exclude you. Many applicants who we did not accept in previous rounds have become Wikimedia maintainers, contractors and even GSoC students and mentors this year!

Your ideas and contributions to our projects are still welcome! As a next step, you could consider finishing up any pending pull requests or inform us that someone has to take them over. Here is the recommended place for you to get started as a newcomer: https://www.mediawiki.org/wiki/New_Developers.

If you would still be eligible for GSoC next year, we look forward to your participation!

@Gopavasanth Thank you for considering my proposal for the slot. I understand that the selection process was tough and I respect your decision. I'll continue contributing to Canasta and other projects, and I'm looking forward to participating in GSoC next year :).