From Fedora Project Wiki

Revision as of 17:26, 25 March 2016 by Jflory7 (talk | contribs) (Add proposed outline for tasks)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Contact Information

Questions to answer

Why do you want to work with the Fedora Project?

Fedora is my flagship operating system and I have used it exclusively on my system for about two years. I began contributing to Fedora via the Fedora Magazine, Marketing, and CommOps in September 2015, but my first encounter with the community was at Flock 2015. I want to work with Fedora because of all the open source communities I have encountered, the community within Fedora is positive, powerful, and enjoyable to work with. As a result, it is motivating and uplifting to work within the Project. I feel this enables me more fully as a contributor.

Do you have any past involvement with the Fedora Project or another open-source project as a contributor?

My first contributions in Fedora were in Ask Fedora and on the wiki. I have been an active contributor to Fedora since September 2015. My contributions before September 2015 were asking and answering questions on Ask Fedora (first interaction with system on Jan. 01, 2014). I've also contributed to the Common Bugs for past releases.

My primary contributions to Fedora now are:

  • Magazine: Contributing writer, editor, administrator
  • Marketing: Team member, assists with Talking Points, meeting organization, brainstorming new ideas for outreach (focus on education)
  • CommOps: Founding member, contributing writer / editor / administrator of Community Blog, interact with other sub-projects and identify areas that need help, and more (as described on the wiki)
  • Ambassadors: Ambassador of North America, represents Fedora at events and universities, organized RIT BrickHack/2016.

In addition to Fedora, I also have extensive experience in a variety of Minecraft open source communities, most notably the now defunct Bukkit Project and the active SpigotMC project (fork of Bukkit). I have been involved with the SpigotMC community since October 2013, and I have served as a community moderator there since April 2014. Throughout my time at SpigotMC, I have written a variety of open-source plugins that extend the Java API of Bukkit/Spigot that can be found both on my SpigotMC Resources page and both of my linked GitHub pages.

Have you participated in GSoC in the past? If so, what year(s) and which organization(s)?

N/A.

Do you plan to continue contributing to the Fedora Project after GSoC? If yes, what sub-project(s) are you interested with?

I have contributed before GSoC and intend to contribute long after GSoC. I will remain with CommOps, Marketing, the Magazine, Ambassadors, and eventually become more involved with Infrastructure.

Why should we choose you over other applicants?

I offer a wide range of experience working in open source communities as a student and I am coming into GSoC with an extensive knowledge of what CommOps is working on, what needs to be done, and what we need to achieve our goals as a sub-project. I am sensitive to the needs of CommOps in terms of its own tasks and and other sub-projects. I am entering the position with extensive experience and knowledge that other applicants may lack and I am passionate and dedicated towards the greater purpose of contributing to the Project. Additionally, I am confident that investing in me as an applicant is a long-term investment, as I intend to contribute to Fedora long after my time as a GSoC student.

Have you contributed to any other open source organizations or projects? If so, do you have artifacts you can show so we can see your skill set(s)?

My code-oriented artifacts are open-source Bukkit/Spigot plugins that were developed for my Minecraft server, CrystalCraftMC. The plugins are published on the SpigotMC Resources site where other server administrators can use the plugins for their own servers. I have also contributed to other Bukkit/Spigot plugins, both in the form of code and especially in documentation.

Do you have any other open source experience (even if not coding-related)?

  • Minoring in Free and Open Source Software at the Rochester Institute of Technology
  • Participant in open source communities since 2011
  • Strong familiarity with community architecture within Fedora
  • Familiar with communication tooling and etiquette for open source (IRC, mailing lists, etc.)

Proposal Description: CommOps

Overview and the Need

The What

The Community Blog is becoming an important part of the Fedora Project. This site is a shared responsibility between CommOps and the Infrastructure team. Unlike most applications in the Fedora infrastructure, the Community Blog is not based off Ansible playbooks. Ansible is an open-source configuration management suite designed to make automation easier. Fedora already uses Ansible extensively across its infrastructure.

My task would consist of migrating the Community Blog (and by extension, Fedora Magazine) to an Ansible-based set up and writing the documentation for any related SOPs.

The Why

Ansible is a useful tool to make automation and configuration easier. In their current set up, the Community Blog and Fedora Magazine are managed separately from each other, and are managed by a single member of the Infrastructure team. By moving them to Ansible-based installations and merging the WordPress bases together, it provides the following benefits:

  1. Makes it easier for other Infrastructure team members to fix, maintain, or apply updates to either site
  2. Prevents duplicate work by maintaining a single, Ansible-based WordPress install versus two independent WordPress sites
  3. Creates a standard operating procedure for hosting blog platforms within Fedora (can be used for other extensions in the future)

The How

The general overview for how this task would be accomplished is in the following format:

  1. Take time familiarizing self with Ansible further in a virtual machine
  2. Learn, read, and understand existing Fedora Ansible playbooks, understand how to contribute playbooks, and any other related procedures to contribute
  3. Write, test, deploy example playbooks in personal infrastructure
  4. Work with a staging instance for the Ansible-based WordPress site (use backups from Community Blog for testing data migration)
  5. Launch and migrate existing WordPress sites to Ansible-based installations

Relevant Experience

  • Networking & Systems Administration student at the Rochester Institute of Technology
  • Actively learning and experimenting with Ansible in personal infrastructure (with plans to open source my playbooks)
  • Experience working with RHEL/CentOS (6 and 7), Ubuntu Server, Fedora, etc.

Implementation

I intend to implement my proposal in three steps during the summer.

  1. Learning: The first phase of the project will be understanding existing Ansible playbooks in Fedora's infrastructure, familiarizing myself with any standard operating procedures, and reading more about Ansible's capabilities and full functionality.
  2. Applying: The second phase of the project will be me applying the knowledge I have learned about Ansible towards staging instances in my own personal infrastructure (specifically with WordPress) and eventually an official staging instance with a fedoraproject.org domain.
  3. Writing: Once I have successfully experimented, tested, and had my playbook(s) evaluated and reviewed by my mentor, I plan to begin the official migration towards the Ansible-based installation.

Project Timeline

Before program begins (2016-03-28 - 2016-04-22)

  • Continue reading and understanding more about Ansible, continue experimentation in my personal infrastructure

Community Bonding Period (2016-04-22 - 2016-05-25)

  • Officially introduce self to Infrastructure team in an IRC meeting
  • Begin on-boarding process as an apprentice
  • Work closely with CommOps and identify any needs and desires for automation in publishing platform
    • Create objective list with tasks / desires / wants for the project and begin creating plan to meet those expectations

NOTE: Part of this period extends into my final exams period, so there should be an expected window of inactivity for two weeks in May.

Work Period (2016-05-25 - 2016-06-20)

  • Begin working with mentor on writing the playbook
    • Perhaps submit improvements / fixes to smaller playbooks to gain experience (?)
    • Share some personal playbooks for feedback and see what can be improved
  • Begin writing WordPress-specific playbooks to fit a general application of Ansible + WordPress
    • Can experiment doing this with my own personal blog (?)
  • Check with CommOps team to make sure expectations still being met and that expectations have not changed

Midterm Evaluations (2016-06-20 - 2016-06-27)

  • By this period, a "first copy" of the playbook and outline for documentation should be prepared

Work Period (2016-06-27 - 2016-07-31)

  • Refinement to existing playbooks
    • Will work closely with mentor for feedback
  • Increased focus on writing documentation
    • Following other standards set forth by previous entries for playbooks
  • Check with CommOps team to make sure expectations still being met and that expectations have not changed

Grace Period (2016-07-31 - 2016-08-15)

  • In event of unforeseen problems:
    • Work with mentor to address problems with playbook(s)
    • Seek help from other Infrastructure members, if necessary
    • This is also when Flock 2016 is happening, can use this as a collaborative space (if I attend)
  • Any refinement and polishing to playbook(s) and documentation, as necessary
  • Check with CommOps team to make sure expectations still being met and that expectations have not changed

Final Week (2016-08-15 - 2016-08-23)

  • Complete any final refactoring (tidying, testing, documentation, etc.)
  • Check with CommOps team to make sure expectations still being met and that expectations have not changed
  • Submit playbook(s) and documentation for final mentor evaluation

If for unexpected reasons, this project is not completed by the end of the program, I fully intend to complete this after the GSoC period. I hope to become a point of contact for administrative purposes for WordPress-related sites within Fedora, particularly for the Community Blog and Magazine.

Other tasks

This schedule is tentative to change as the summer approaches.

Final Deliverable

  • Ansible playbooks for the Community Blog and Fedora Magazine (both synchronized using the same base installation)
  • Documentation for Standard Operating Procedure on maintaining the installation
  • Regular, weekly blog posts documenting my progress towards achieving my task (after the program officially begins)

Other Details

In addition to working on the Ansible migration for the Community Blog and Fedora Magazine as part of the CommOps team, I also intend to be taking full advantage of my time as a GSoC student and CommOps member by completing routine tasks and working with the rest of the team on other projects (which may present itself with other opportunities for me to contribute).

I believe being accepted as a GSoC student would also grant me more dedicated time to work with CommOps in other ways not as strongly oriented towards programming, more than I would be able to otherwise. I intend to support CommOps during the stipend period beyond just the Ansible task as well.

Additionally, I feel like this opportunity would create a bridge towards becoming a more active member of Fedora Infrastructure, another long-term goal for me as well.

Mentors

Patrick Uiterwijk offered to be my mentor for this project. Remy DeCausemaker also would be my mentor in a supplementary form (for other tasks unrelated to Ansible).