From Fedora Project Wiki
No edit summary
(pypy)
 
(5 intermediate revisions by 2 users not shown)
Line 26: Line 26:
* SIG(s)
* SIG(s)


== Python ==
==About Fedora OS==
 
Fedora is a secure, stable, and powerful Linux-based operating system that provides the latest free and open source software within a flexible and manageable environment for developers. We strive to:
=== About Fedora OS ===
 
'''Fedora is''' a secure, stable, and powerful Linux-based operating system that provides the latest free and open source software within a flexible and manageable environment for developers. We strive to:


* Be on the leading edge of free and open source technology by adopting and helping to develop new features and version upgrades.
* Be on the leading edge of free and open source technology by adopting and helping to develop new features and version upgrades.
* Establish and implement technical standards for packages, ensuring the quality and consistency of the operating system.
* Establish and implement technical standards for packages, ensuring the quality and consistency of the operating system.
* Promote rapid adoption of new releases by allowing for easy upgrades with minimal disturbances to configuration changes. '''<- comments about the validity of this statement?'''
* Promote rapid adoption of new releases by allowing for easy upgrades with minimal disturbances to existing configurations.


=== Why use Fedora for Python development? ===
===Why use Fedora for Python development?===


Fedora is a great Python development platform because many of the tools Python developers need are available right out of the box in Fedora, such as [...]
Fedora is a great Python development platform because many of the tools Python developers need are available right out of the box in Fedora, such as [...]  


-> crickets <-
* Python 2.x and Python 3.x runtimes
* <code>jython</code>, a Java implementation of the Python 2.x language
* <code>pypy</code>, an implementation of the Python 2.x language written in python and compiled to native code
* <code>ScientificPython</code>, a collection of Python modules ideal for scientific computing
* <code>PythonCAD</code>, a Python-scriptable CAD package
* <code>python-ipython</code>, an enhanced interactive Python shell
* <code>python-ropemacs</code>, python refactoring for emacs
* <code>google-appengine-python</code>, a Google AppEngine SDK
* Controlled and secure development environment with up-to-date package management
* Virtual environment integration for deployment and runtime integration
* Thousands of managed python packages, including
** <code>GitPython</code>, a library for interacting with git repos
** <code>MySQL-python</code>, a Pythoon binding for MySQL
** <code>fuse-python</code>, a Python binding for managing filesystems in userspace
** <code>gstreamer-python</code>, a Python binding for gstreamer control


 
===Setting up your Python development environment in Fedora===
List very specific benefits pertaining to Python development
 
-> crickets <-
 
'''and/or'''
 
List attributes of a Fedora managed software development system
 
-> crickets <-
 
=== Setting up your Python development environment in Fedora ===


'''How do I yum?'''
'''How do I yum?'''


Open a terminal and type <code> yum install name-of-package </code>.
Open a terminal and type <code>su -c yum install [name-of-package]</code> .


{|
{|
|-
|-
| What's a package? || A package consists of the metadata and compiled code for a library, collection, service, or application which the Fedora operating system can query, install, upgrade and remove, typically via a package management system.
|| What's a package? || A package consists of the metadata and compiled code for a library, collection, service, or application which the Fedora operating system can query, install, upgrade and remove, typically via a package management system.
|}
|}


'''Why use a package versus downloading?'''
'''Why use a package versus downloading?'''


Benefits and features of packages -> Isn't this the same thing as mystery content under Why use Fedora for Java development? <-
By using a package, you get all of a library's dependencies automatically installed, and any updates to the entire dependency tree are automatically applied.
 
You also get a replicable installation, easing the installation for end users.


'''Steps and commands to set up a basic development environment'''
'''Steps and commands to set up a basic development environment'''
<code>su -c yum install vim-enhanced # (or python-ropeemacs, which will include emacs as a dependency)
su -c yum install git # (or subversion)
su -c yum install python # or python3</code>


<code>
''' Should we include a virtual environment like openshift or ovirt? '''
yum install vim-enhanced (or emacs)
 
yum install git (or subversion)
 
maybe gitg and/or emacs-git
 
yum install rubygem-rhc (to deploy to OpenShift Online)
</code>
 
[..] what else to do above?  Maybe webserver, db server, virtualenv?
 
=== Starting a new Java project ===
 
Using the REPL
Using the compiler
requirements
what to use
how to save
how to execute
Build tools
IDE support
Ex. with Java
Ex. with Clojure
 
I'd git clone a repository or start a new one using mvn archetype:generate or Eclipse. Then I'd build it with Maven, Ant or Eclipse. I'd then start Tomcat or JBoss AS and deploy the application. Deploying may require the prerequisite step of starting, configuring and populating the database.
 
If I wanted to get into other languages, I might install the language & it's corresponding build tool. For example, clojure & leiningen (or lancet)
 
'''Tip:''' One thing developers complain about is that building a project for the first time leads to Maven "downloading the internet". While this is part of how Maven works, it can be alleviated (in part) by running mvn-local. This script will first attempt to resolve the library from the system (shared libraries) before reaching out to the internet.  ''(Another solution would be using a local artifact manager like Nexus or Artifactory, but alas, that software is not available in Fedora).''
 
=== Alternate and Application Development Related Packages ===
 
'''Language and platform'''
 
{|
! '''Package !! Description !! yum install command'''
|-
|Java 1.7.0 OpenJDK || OpenJDK Runtime Environment || <code> ava-1.7.0-openjdk-devel (shorthand: java-devel) </code>
|-
| Groovy 1.8 || Dynamic, object-oriented  JVM language with lexical declarations and compact property syntax. || <code>  </code>
|-
| Scala 2.9 ||  || <code>  </code>
|-
| JRuby 1.6 ||  || <code>  </code>
|-
| Rhino 1.7R3 (Javascript) ||  || <code>  </code>
|-
| Clojure ||  || <code>  </code>
|-
| Jython 2.2 ||  || <code>  </code>
|}
 
* ''less.js is pending but not built in rawhide yet''
 
'''Application runtimes (application servers, servlet containers, etc)'''
 
{|
! '''Package !! Description !! yum install command'''
|-
| ||  || <code>  </code>
|-
| ||  || <code>  </code>
|-
| ||  || <code>  </code>
|-
| ||  || <code>  </code>
|-
| ||  || <code>  </code>
|-
| ||  || <code>  </code>
|-
| ||  || <code>  </code>
|}
 
'''Development tools (IDEs, editors, debuggers, REPLs, application generators)'''
 
{|
! '''Package !! Description !! yum install command'''
|-
| ||  || <code>  </code>
|-
| ||  || <code>  </code>
|-
| ||  || <code>  </code>
|-
| ||  || <code>  </code>
|-
| ||  || <code>  </code>
|-
| ||  || <code>  </code>
|-
| ||  || <code>  </code>
|}
 
* ''The lack of Spring Roo or JBoss Forge in Fedora is problematic''
 
'''Build tools (compile and package the code)'''
 
{|
! '''Package !! Description !! yum install command'''
|-
| ||  || <code>  </code>
|-
| ||  || <code>  </code>
|-
| ||  || <code>  </code>
|-
| ||  || <code>  </code>
|-
| ||  || <code>  </code>
|-
| ||  || <code>  </code>
|-
| ||  || <code>  </code>
|}
 
'''Databases and drivers (connectors)'''
 
{|
! '''Package !! Description !! yum install command'''
|-
| ||  || <code>  </code>
|-
| ||  || <code>  </code>
|-
| ||  || <code>  </code>
|-
| ||  || <code>  </code>
|-
| ||  || <code>  </code>
|-
| ||  || <code>  </code>
|-
| ||  || <code>  </code>
|}
 
'''Code quality and coverage tools'''
 
{|
! '''Package !! Description !! yum install command'''
|-
| ||  || <code>  </code>
|-
| ||  || <code>  </code>
|-
| ||  || <code>  </code>
|-
| ||  || <code>  </code>
|-
| ||  || <code>  </code>
|-
| ||  || <code>  </code>
|-
| ||  || <code>  </code>
|}
 
* ''Why wasn't Spock .6, a testing and specification framework for Java and Groovy applications, included in this list?''
 
'''Source control systems'''
 
{|
! '''Package !! Description !! yum install command'''
|-
| ||  || <code>  </code>
|-
| ||  || <code>  </code>
|-
| ||  || <code>  </code>
|-
| ||  || <code>  </code>
|-
| ||  || <code>  </code>
|-
| ||  || <code>  </code>
|-
| ||  || <code>  </code>
|}
 
'''Documentation tools'''
 
{|
! '''Package !! Description !! yum install command'''
|-
| ||  || <code>  </code>
|-
| ||  || <code>  </code>
|-
| ||  || <code>  </code>
|-
| ||  || <code>  </code>
|-
| ||  || <code>  </code>
|-
| ||  || <code>  </code>
|-
| ||  || <code>  </code>
|}
 
'''Monitoring and instrumentation'''
 
{|
! '''Package !! Description !! yum install command'''
|-
| ||  || <code>  </code>
|-
| ||  || <code>  </code>
|-
| ||  || <code>  </code>
|-
| ||  || <code>  </code>
|-
| ||  || <code>  </code>
|-
| ||  || <code>  </code>
|-
| ||  || <code>  </code>
|}
 
'''Virtualization and cloud'''
 
{|
! '''Package !! Description !! yum install command'''
|-
| ||  || <code>  </code>
|-
| ||  || <code>  </code>
|-
| ||  || <code>  </code>
|-
| ||  || <code>  </code>
|-
| ||  || <code>  </code>
|-
| ||  || <code>  </code>
|-
| ||  || <code>  </code>
|}
 
* ''Why aren't there any Continuous integration servers or Artifact repositories available in Fedora?''


=== What's next ===
=== What's next ===

Latest revision as of 09:30, 14 February 2013

Development Brochure Anatomy

Developing with (language, framework, environment of your choice) on Fedora

Fedora Fedora is a fast, stable, and powerful Linux-based operating system for everyday use built by a worldwide community of friends. It's completely free to use, study, and share.

Benefits of developing with abc on Fedora

  • packages
  • yum
  • stable of tools and environment
  • virtualization and collaboration capabilities?

Getting started

  • set up and commands
  • screen shots?

Use case or cool thing being done with this language on Fedora/with Fedora?

  • screen shots?

Migration tips from other systems?

Links to more information

  • QR code
  • SIG(s)

About Fedora OS

Fedora is a secure, stable, and powerful Linux-based operating system that provides the latest free and open source software within a flexible and manageable environment for developers. We strive to:

  • Be on the leading edge of free and open source technology by adopting and helping to develop new features and version upgrades.
  • Establish and implement technical standards for packages, ensuring the quality and consistency of the operating system.
  • Promote rapid adoption of new releases by allowing for easy upgrades with minimal disturbances to existing configurations.

Why use Fedora for Python development?

Fedora is a great Python development platform because many of the tools Python developers need are available right out of the box in Fedora, such as [...]

  • Python 2.x and Python 3.x runtimes
  • jython, a Java implementation of the Python 2.x language
  • pypy, an implementation of the Python 2.x language written in python and compiled to native code
  • ScientificPython, a collection of Python modules ideal for scientific computing
  • PythonCAD, a Python-scriptable CAD package
  • python-ipython, an enhanced interactive Python shell
  • python-ropemacs, python refactoring for emacs
  • google-appengine-python, a Google AppEngine SDK
  • Controlled and secure development environment with up-to-date package management
  • Virtual environment integration for deployment and runtime integration
  • Thousands of managed python packages, including
    • GitPython, a library for interacting with git repos
    • MySQL-python, a Pythoon binding for MySQL
    • fuse-python, a Python binding for managing filesystems in userspace
    • gstreamer-python, a Python binding for gstreamer control

Setting up your Python development environment in Fedora

How do I yum?

Open a terminal and type su -c yum install [name-of-package] .

What's a package? A package consists of the metadata and compiled code for a library, collection, service, or application which the Fedora operating system can query, install, upgrade and remove, typically via a package management system.

Why use a package versus downloading?

By using a package, you get all of a library's dependencies automatically installed, and any updates to the entire dependency tree are automatically applied.

You also get a replicable installation, easing the installation for end users.

Steps and commands to set up a basic development environment su -c yum install vim-enhanced # (or python-ropeemacs, which will include emacs as a dependency) su -c yum install git # (or subversion) su -c yum install python # or python3

Should we include a virtual environment like openshift or ovirt?

What's next

Questions Mailing list Chat

References Fedora Project

  • Python SIG
    • python-devel@lists.fedoraproject.org
    • #fedora-python on irc.freenode.net

Fedora Packages search: https://apps.fedoraproject.org/packages/