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:
- Newcomers: Either choosing their Linux distribution or looking for information about how to start developing. Also searching recommendations.
- Existing Fedora Developers: Discovering what else Fedora offers and learning how to use it.
- 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:
- Explore: What tools and tech Fedora offers? (DevAssistant, Vagrant, Python, Ruby, ...)
- Build: How to use this tech? How it is packaged in Fedora?
- 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
- Content Repo - https://github.com/developer-portal/content
- Website Repo - https://github.com/developer-portal/website
- Design Mockups Repo - https://github.com/developer-portal/mockups
Communication
- #developer-portal at FreeNode - http://webchat.freenode.net/?channels=#developer-portal
- Fedora Devel Mailing List - https://lists.fedoraproject.org/mailman/listinfo/devel
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:
- Application:
- Web application
- Command line application
- Desktop GUI application
- Mobile application
- Hardware:
- Raspberry Pi
- Arduino devices
- Other embedded devices
- 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:
- Languages:
- Python
- Ruby
- PHP
- Perl
- GO
- C and C++
- Node.js
- Java
- 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.