Features/DevelopersAssistant

From FedoraProject

< Features(Difference between revisions)
Jump to: navigation, search
m (Scope)
(GitHub Integration)
(37 intermediate revisions by 7 users not shown)
Line 4: Line 4:
 
<!-- The actual name of your feature page should look something like: Features/Your_Feature_Name.  This keeps all features in the same namespace -->
 
<!-- The actual name of your feature page should look something like: Features/Your_Feature_Name.  This keeps all features in the same namespace -->
  
= Features/DevelopersAssistant =
+
= Developers Assistant =
  
 
== Summary ==
 
== Summary ==
 +
Perform a series of various changes to improve developer experience on Fedora.
  
 
== Owner ==
 
== Owner ==
Line 21: Line 22:
 
== Current status ==
 
== Current status ==
 
* Targeted release: [[Releases/19 | Fedora 19 ]]  
 
* Targeted release: [[Releases/19 | Fedora 19 ]]  
* Last updated: 2013-1-23
+
* Last updated: 2013-03-12
* Percentage of completion: 2%
+
* Percentage of completion: 100%
 +
 
 +
See the progress at [https://github.com/bkabrda/devassistant https://github.com/bkabrda/devassistant]. Currently, we're finishing C/Java/Python assistants, we decided to include other languages later on (we'll probably do a non-disruptive update before beta freeze).
 +
 
 +
Package is now on review: https://bugzilla.redhat.com/show_bug.cgi?id=919460
 +
 
 +
Done.
  
 
<!-- CHANGE THE "FedoraVersion" TEMPLATES ABOVE TO PLAIN NUMBERS WHEN YOU COMPLETE YOUR PAGE. -->
 
<!-- CHANGE THE "FedoraVersion" TEMPLATES ABOVE TO PLAIN NUMBERS WHEN YOU COMPLETE YOUR PAGE. -->
Line 33: Line 40:
 
There are other optional activities like vim/eclipse/emacs/... plugins, integration of rpm build tools, .... These optional parts are not goal for F19 but they will be integrated in time.
 
There are other optional activities like vim/eclipse/emacs/... plugins, integration of rpm build tools, .... These optional parts are not goal for F19 but they will be integrated in time.
  
 +
Assistants can be written either as YAML configuration files or as python module.
  
 
Languages:  
 
Languages:  
* C (phracek)
+
* C/C++ (phracek [https://fedoraproject.org/wiki/User:Phracek/DevelopersAssistant FedoraProjectWiki])
 +
** create YAML configuration file
 +
** sample C/C++ files
 +
** rpm dependencies
 +
** compilation over autotools
 +
** spec file for creating RPM package
 +
** documentation how add new C/C++ sources and how to build up (README)
 
* Ruby (vondruch)
 
* Ruby (vondruch)
 +
** Ruby on Rails - create a default Ruby on Rails application and install all necessary dependencies; running "rails s" in the project directory starts the web server and allows to try the application in web browser
 +
** All Ruby assistants: create a git repository in the directory of the project; can register project repo on github
 
* Python (bkabrda)
 
* Python (bkabrda)
* Perl (mmaslano)
+
** Django - create a Django project with sane settings and install dependencies; running "manage.py runserver" in the project directory works straight away with no needed changes
* PHP
+
** Flask - create a Flask project with sane settings and install dependencies; running "manage.py runserver" in the project directory works straight away with no needed changes
 +
** Lib - create a custom Python (setuptools using) library skeleton; running "setup.py sdist" in the project directory works straight away with no needed changes
 +
** All the Python assistants: create a git repository in the directory of the project; can setup eclipse with pydev and import project into workspace; can register project repo on github
 +
* Perl ()
 +
* PHP (rcollet)
 
* Java (msrb)
 
* Java (msrb)
 +
** Maven - create simple Maven project, install dependencies; command "./run" from project directory will run the project
 +
** JSF - create simple JavaServer Faces project, install dependencies; command "./run" from project directory will start embedded web server and user can check the result from browser (localhost:8080); command "./run rpm" from project directory will create SRPM and RPM packages
 +
** All Java assistants: create a git repository in the directory of the project; build the project; create tarball; can setup eclipse project which user can import to his workspace; can register project repository on github
 
* Javascript
 
* Javascript
 +
 +
 +
Other activities:
 +
* vim (phracek)
 +
** clarify whether is possible to include into vimrc file row which will enable devassistant
 +
* eclipse (phracek)
 +
** integrate project into eclipse environment
 +
** test basic eclipse functionality like compilation, debugging, etc.
 +
* rpm build tools
 +
** each assistant should have one spec file for building RPM package
 +
** create sample subroutine in YAML configuration file which can be used by each language
 +
* git integration
 +
** create local repository
 +
** call git commands from configuration script (YAML)
 +
** registration project on GitHub repository
 +
** downloading project from GitHub repository
  
 
== Benefit to Fedora ==
 
== Benefit to Fedora ==
Line 48: Line 87:
 
== Scope ==
 
== Scope ==
 
* Adding new (leaf) packages, which will contain setup scripts.
 
* Adding new (leaf) packages, which will contain setup scripts.
* Comps - there will be new groups or adjustment of groups, which can make installation of developer tools for various languages easier.
+
* Comps: a review of existing development-related package groups will take place
 +
** cleanup of some groups will be necessary
 +
** new groups might be created to meet the demand for per-language tool and library sets
  
 
== How To Test ==
 
== How To Test ==
Line 71: Line 112:
  
 
== Dependencies ==
 
== Dependencies ==
None needed at the moment.
+
None at the moment, none expected. We intend to build on top of current state of Fedora.
  
 
== Contingency Plan ==
 
== Contingency Plan ==
Do not ship it if not ready.
+
Do not ship the result if not ready. Since the feature is not required for anything else in the system, there will be no complications if not shipped. Changes in comps groups will be consulted before pushed and if necessary, changes can be simply reverted.
  
 
== Documentation ==
 
== Documentation ==
 
<!-- Is there upstream documentation on this feature, or notes you have written yourself?  Link to that material here so other interested developers can get involved. -->
 
<!-- Is there upstream documentation on this feature, or notes you have written yourself?  Link to that material here so other interested developers can get involved. -->
There will be blog posts.
+
Blog posts will be released to make some publicity. Man pages will be primary source of documentation for the functionality. The documentation will be developed along with the functionality
 +
 
 +
=== adding user to sudoers is needed ===
 +
For right developer assistant functionality user has to be added to sudoers file. This has to be done because of during the work with developer assistant some packages could be installed.
 +
 
 +
This can be done so that user will switch to user root (over <b>su -</b> command) and write down command visudo.
 +
Following row has to be added at the end of that file which will ensure that user will be allowed for installing packages
 +
after entering user password
 +
 
 +
  <user_name> ALL=(ALL) /usr/bin/yum, /usr/bin/yum-builddep
 +
 
 +
<user_name> is not <b>root</b> by real username (can be obtained by command <b>id</b>).
 +
 
 +
Each assistant (or language) should distribute documentation how to change current created project and how to use them.
 +
Including IDE and usability.
 +
 
 +
=== GitHub Integration ===
 +
 
 +
one part of that feature was to have a possibility export projects to the GitHub repository.
 +
 
 +
This part is mostly done but has one restriction.
 +
 
 +
User has to have already created account on the GitHub server. Without that it is not possible to upload projects on the GitHub server.
  
 
== Release Notes ==
 
== Release Notes ==
 
<!-- The Fedora Release Notes inform end-users about what is new in the release.  Examples of past release notes are here: http://docs.fedoraproject.org/release-notes/ -->
 
<!-- The Fedora Release Notes inform end-users about what is new in the release.  Examples of past release notes are here: http://docs.fedoraproject.org/release-notes/ -->
 
<!-- The release notes also help users know how to deal with platform changes such as ABIs/APIs, configuration or data file formats, or upgrade concerns.  If there are any such changes involved in this feature, indicate them here.  You can also link to upstream documentation if it satisfies this need.  This information forms the basis of the release notes edited by the documentation team and shipped with the release. -->
 
<!-- The release notes also help users know how to deal with platform changes such as ABIs/APIs, configuration or data file formats, or upgrade concerns.  If there are any such changes involved in this feature, indicate them here.  You can also link to upstream documentation if it satisfies this need.  This information forms the basis of the release notes edited by the documentation team and shipped with the release. -->
Will be prepared.
+
Developers Assistant feature will provide packages containing skeletons, settings, which will provide help to developers. Also new or improved yum groups are part of this feature.
  
 
== Comments and Discussion ==
 
== Comments and Discussion ==
* See [[Talk:Features/Your_Feature_Name]]  <!-- This adds a link to the "discussion" tab associated with your page.  This provides the ability to have ongoing comments or conversation without bogging down the main feature page -->
+
* See [[Talk:Features/DevelopersAssistant]]  <!-- This adds a link to the "discussion" tab associated with your page.  This provides the ability to have ongoing comments or conversation without bogging down the main feature page -->
  
 +
[[Category:FeatureAcceptedF19]]
  
<!--[[Category:FeatureReadyForFesco]]-->
 
 
<!-- When your feature page is completed and ready for review -->
 
<!-- When your feature page is completed and ready for review -->
 
<!-- remove Category:FeaturePageIncomplete and change it to Category:FeatureReadyForWrangler -->
 
<!-- remove Category:FeaturePageIncomplete and change it to Category:FeatureReadyForWrangler -->
 
<!-- After review, the feature wrangler will move your page to Category:FeatureReadyForFesco... if it still needs more work it will move back to Category:FeaturePageIncomplete-->
 
<!-- After review, the feature wrangler will move your page to Category:FeatureReadyForFesco... if it still needs more work it will move back to Category:FeaturePageIncomplete-->
 
<!-- A pretty picture of the page category usage is at: https://fedoraproject.org/wiki/Features/Policy/Process -->
 
<!-- A pretty picture of the page category usage is at: https://fedoraproject.org/wiki/Features/Policy/Process -->

Revision as of 08:31, 22 April 2013


Contents

Developers Assistant

Summary

Perform a series of various changes to improve developer experience on Fedora.

Owner

  • Email: <jzeleny@redhat.com>
  • Email: <mmaslano@redhat.com>

(Please add yourself if you are responsible for some part of it).

Current status

  • Targeted release: Fedora 19
  • Last updated: 2013-03-12
  • Percentage of completion: 100%

See the progress at https://github.com/bkabrda/devassistant. Currently, we're finishing C/Java/Python assistants, we decided to include other languages later on (we'll probably do a non-disruptive update before beta freeze).

Package is now on review: https://bugzilla.redhat.com/show_bug.cgi?id=919460

Done.


Detailed Description

This feature aims on setting up development environment for various languages. Target groups include beginning developers but also experienced developers not used to GNU/Linux as well as experienced Linux developers not used to Fedora.

This feature will cover a basic set of tasks which will prepare Fedora for later additions. The first part of the feature is a review of comps groups which would lead to better granularity of package sets necessary for development in different languages. Another part is about providing tool or tools for simple start of a project in terms of creating project template based on different languages and/or frameworks which the project should use.

There are other optional activities like vim/eclipse/emacs/... plugins, integration of rpm build tools, .... These optional parts are not goal for F19 but they will be integrated in time.

Assistants can be written either as YAML configuration files or as python module.

Languages:

  • C/C++ (phracek FedoraProjectWiki)
    • create YAML configuration file
    • sample C/C++ files
    • rpm dependencies
    • compilation over autotools
    • spec file for creating RPM package
    • documentation how add new C/C++ sources and how to build up (README)
  • Ruby (vondruch)
    • Ruby on Rails - create a default Ruby on Rails application and install all necessary dependencies; running "rails s" in the project directory starts the web server and allows to try the application in web browser
    • All Ruby assistants: create a git repository in the directory of the project; can register project repo on github
  • Python (bkabrda)
    • Django - create a Django project with sane settings and install dependencies; running "manage.py runserver" in the project directory works straight away with no needed changes
    • Flask - create a Flask project with sane settings and install dependencies; running "manage.py runserver" in the project directory works straight away with no needed changes
    • Lib - create a custom Python (setuptools using) library skeleton; running "setup.py sdist" in the project directory works straight away with no needed changes
    • All the Python assistants: create a git repository in the directory of the project; can setup eclipse with pydev and import project into workspace; can register project repo on github
  • Perl ()
  • PHP (rcollet)
  • Java (msrb)
    • Maven - create simple Maven project, install dependencies; command "./run" from project directory will run the project
    • JSF - create simple JavaServer Faces project, install dependencies; command "./run" from project directory will start embedded web server and user can check the result from browser (localhost:8080); command "./run rpm" from project directory will create SRPM and RPM packages
    • All Java assistants: create a git repository in the directory of the project; build the project; create tarball; can setup eclipse project which user can import to his workspace; can register project repository on github
  • Javascript


Other activities:

  • vim (phracek)
    • clarify whether is possible to include into vimrc file row which will enable devassistant
  • eclipse (phracek)
    • integrate project into eclipse environment
    • test basic eclipse functionality like compilation, debugging, etc.
  • rpm build tools
    • each assistant should have one spec file for building RPM package
    • create sample subroutine in YAML configuration file which can be used by each language
  • git integration
    • create local repository
    • call git commands from configuration script (YAML)
    • registration project on GitHub repository
    • downloading project from GitHub repository

Benefit to Fedora

Make the development on Fedora easier for beginners.

Scope

  • Adding new (leaf) packages, which will contain setup scripts.
  • Comps: a review of existing development-related package groups will take place
    • cleanup of some groups will be necessary
    • new groups might be created to meet the demand for per-language tool and library sets

How To Test

Try to install package containing setup for your favourite language.

User Experience

Entry barrier for development on Linux should be lower. Inexperienced users will be able to setup their development faster.

Dependencies

None at the moment, none expected. We intend to build on top of current state of Fedora.

Contingency Plan

Do not ship the result if not ready. Since the feature is not required for anything else in the system, there will be no complications if not shipped. Changes in comps groups will be consulted before pushed and if necessary, changes can be simply reverted.

Documentation

Blog posts will be released to make some publicity. Man pages will be primary source of documentation for the functionality. The documentation will be developed along with the functionality

adding user to sudoers is needed

For right developer assistant functionality user has to be added to sudoers file. This has to be done because of during the work with developer assistant some packages could be installed.

This can be done so that user will switch to user root (over su - command) and write down command visudo. Following row has to be added at the end of that file which will ensure that user will be allowed for installing packages after entering user password

 <user_name> ALL=(ALL) /usr/bin/yum, /usr/bin/yum-builddep

<user_name> is not root by real username (can be obtained by command id).

Each assistant (or language) should distribute documentation how to change current created project and how to use them. Including IDE and usability.

GitHub Integration

one part of that feature was to have a possibility export projects to the GitHub repository.

This part is mostly done but has one restriction.

User has to have already created account on the GitHub server. Without that it is not possible to upload projects on the GitHub server.

Release Notes

Developers Assistant feature will provide packages containing skeletons, settings, which will provide help to developers. Also new or improved yum groups are part of this feature.

Comments and Discussion