From Fedora Project Wiki

Revision as of 14:13, 1 April 2017 by Spytec (talk | contribs) (More words)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Contact information

  • Name: Eric Eriksson Gustavsson
  • User: Spytec
  • Email: eric.eriksson.gustavsson [at] gmail.com
  • Country: Sweden
  • Timezone: GMT+2, CEST
  • GitHub: SpyTec
  • FreeNode IRC name: SpyTec13

About me

Education

I'm currently in my second year undergraduate in Computer Science. My interest in programming started when I was very young, when a games programmer showed me very simple code to move around a sprite in a window. Ever since then I've been making progress with smaller apps, mostly bots to increase productivity. It's a passion I enjoy, something fun to do as there's always obstacles to overcome.

Open source contributions

I've not contributed to any bigger public projects in the past, but I have expanded an authentication system for a PHP framework with 2-factor authentication functionality. The author of library did find the contribution to be good but didn't want to clutter the library.

Prior to attending university I made a very simple IRC bot for private use in C#, which featured the ability to get concatenated description and a link to a wiki article, and has a half-implemented remind functionality.

Why Fedora

The ever increasing interest of .NET within Linux, and Fedora in particular, excites me as I personally find it to be one of the stronger languages available today. The relatively recent open source movement of .NET has driven many people interested in getting packages for Linux. By helping out projects regarding .NET I believe we can make both Linux and .NET better, something I would like to contribute to for years to come.

Why this project

It's beneficial to the subreddit moderators as they would have to do less work on setting flairs manually, automating this process will benefit both the contributors and moderators to the subreddit. C# is one of my favourite programming languages, and developing an ASP.NET Core application looks like a fun project, especially considering it's on Linux.

Why choose me

I have experience with Reddit and its API. Together with knowledge of C#, Object-Orientated Programming, and Git.

Other plans

I will have university exams around the period 17-27th August.

Proposal

The project is to create an ASP.NET Core web application that can authorize users with their Fedora Account and their Reddit account, in order to let them choose a flair on the /r/Fedora subreddit based on their FAS group memberships.

The web application will use RedditSharp to connect to Reddit API and ipsilon to connect to the Fedora Account System. It will be deployed as systemd service and proxied behind an Apache web server.

Our application will be running on Fedora servers for better performance and consistency. But should work on other platforms as well.

Implementation

ASP.NET Core

ASP.NET Core is an open-source and cross-platform web framework based on the cross-platform .NET Core.

The application code will be written in C# which will serve a simple website with two “buttons,” to log-in with their Fedora account, and with their Reddit account. Once authenticated they will be presented with a list of flairs based on their FAS Group memberships to choose from.

Kestrel

The Kestrel Http Server is a ASP.NET Core built-in web server that allows HTTP requests to reach the application.

For security reasons, Kestrel should be behind a reverse proxy, such as Apache. Kestrel listens on a 5000 port by default, which we could use depending on the underlying server infrastructure.

Apache HTTP Server

Apache is one of the most used and most secure HTTP servers available. Letting this be the server to the internet will allow for greater security and flexibility in configuration.

The Apache server will use mod_rewrite extension to force https connection with the client, and mod_proxy to direct the requests to Kestrel. We will setup a VirtualHost configuration to serve requests to a loopback IP and any other Apache essential configuration.

Timeline

Phase 1 - Community Bonding
(May 5-May 12) Get to know the people surrounding DotNet and the subreddit. Learn the coding style, and how Fedora operates.
(May 12-May 22) Read up on ASP.NET Core and general documentation, read up on and ask how we will connect through ipsilon.
(May 22-May 29) Setup the Git repository, IDE workspace, and local environment to work in.
Phase 2 - Coding
Week 1-2

(May 30-June 9)

Setup infrastructure and web servers with a systemd service together with basic ASP.NET Core website.
Week 3-4

(June 10-June 23)

Create authorization cycle with ipsilon server and the application.
Week 5-6

(June 24-July 7)

Connect the Reddit API and OAuth2 authorization to the application.
Week 7-8

(July 8-July 21)

Code the lifecycle of the application with Ipsilon and Reddit authorization.
Phase 3 - Optimization and documentation
Week 9-10

(July 22-August 4)

Get feedback from community and resolve potential issues.
Week 11

(August 5-August 11)

Buffer for potential issues.
Week 12-13

(August 12-August 21)

Write documentation. Final evaluation.

Stretch goals

If the goals are completed before the deadline, and time can be had on developing other additions to the application, making the application look for and post updates to the subreddit, specifically Fedora Magazine or community blog posts. As well as requests from the community or subreddit moderators.