From Fedora Project Wiki

Fedora Developer Portal

Project Page | Content Repository | Website Repository

About The Project

Fedora Developer Portal is a place for developers. Providing information about tools, technology and other features that are packaged in Fedora. It aims to raise awareness about new and existing projects among users.

Target Audience

The target audience are developers working on Fedora. Specifically: developers building on Fedora; not contributing to Fedora.

They might be either:

  1. Newcomers: Either choosing their Linux distribution or looking for information about how to start developing. Also searching recommendations.
  2. Existing Fedora Developers: Discovering what else Fedora offers and learning how to use it.
  3. Existing Developers: Learning about how to use their existing open source toolsets on Fedora.

Targeting on developers using Mac or even Windows and deploying to Fedora/CentOS might be considered for later iterations.

Main Purpose

The site would help developers to:

  1. Explore: What tools and tech Fedora offers? (DevAssistant, Vagrant, Python, Ruby, ...)
  2. Build: How to use this tech? How it is packaged in Fedora?
  3. Deploy: Which deployment technology should I use? (Copr, Nulecule, xdg-app, Software Collections, OpenShift ...)


Project Resources

Testing instance

Testing instance of the portal - http://developer.fedorainfracloud.org

Repositories

Communication

Project Tracking

  • Tasks + Issue Tracking: part of GitHub repositories mentioned above

Content

Home Page

The homepage need to explain clearly what is it all about and how/why you would use it. It would also show the main features from current release.

Start

Guides on "How to start a new project" starting from the problem-to-be-solved perspective and guiding developers trough possible options.

Pages:

  1. Application:
    • Web application
    • Command line application
    • Desktop GUI application
    • Mobile application
  2. Hardware:
    • Raspberry Pi
    • Arduino devices
    • Other embedded devices
  3. Tips:
    • Provide online documentation
    • Collaborate effectively

Tools

Show what tools are available in Fedora, how they can help developers and some example use-cases.

Pages:

  • Docker
  • Vagrant

An example: Vagrant page structure

  • how to get packaged Vagrant
  • providers
    • libvirt
    • how to run libvirt with vagrant without sudo
  • list of plugins we maintain
  • troubleshooting, how to report problems
  • Fedora Vagrant boxes (links)

Technology

Mostly language/framework-specific guides about how to install it on Fedora, what is different in Fedora (if), what might be the best practise.

Each language section should include a link to a DevAssistant Assistant with hello world.

Pages:

  1. Languages:
    • Python
    • Ruby
    • PHP
    • Perl
    • GO
    • C and C++
    • Node.js
    • Java
  2. Database:
    • PostgreSQL
    • MariaDB
    • Sqlite

An example: Ruby page structure

See the Ruby page in the prototype: http://developer.fedorainfracloud.org/tech/languages/ruby/ruby-installation.html

  • Installation (both RPM and upstream)
  • Explain them why we have ruby-mri bin and why we use rubypick
  • Answers to how our Ruby differs from upstream
  • Let users know we have a lot or RubyGems packaged
  • Show them our https://github.com/zuhao/isitfedoraruby
  • Let them know there is something like Fedora Ruby SIG that they can join
  • 'I am a Ruby dev subpage':
    • combination/listing of pages we have and are relevant
    • Ruby, Rails, Vagrant, docker, DevAssistant would show up

Deployment

Ways of deploying a service or distributing an app to the end users. A guide that would recommend the best option for a particular app type.

Could also include a flowchart of 1) identify app type 2) identify pkg type 3) pkg ....

Pages:

  • Copr (Custom RPM repositories)
  • Software Collections (decoupling update cycles from host OS)
  • Nulecule (multi-container network services)
  • xdg-app (containers for desktop applications)
  • Rolekit (package installation & configuration flows)
  • OpenShift (autoscaling network application hosting)

Resources

Docker images and Vagrant boxes to download.

Blogs

Aggregation of interesting developer blogs.