Bodhi/2.0

From FedoraProject

< Bodhi(Difference between revisions)
Jump to: navigation, search
(SQLObject -> SQLAlchemy migration script written)
(Improved karma)
 
(9 intermediate revisions by one user not shown)
Line 1: Line 1:
 
{{admon/note|This is a draft|This is a draft of potential features for Bodhi v2.0.  It is meant to spawn discussion and will most likely evolve in the future.  Please feel free to add your ideas, comments, and criticism to the 'discussion' section of this page.}}
 
{{admon/note|This is a draft|This is a draft of potential features for Bodhi v2.0.  It is meant to spawn discussion and will most likely evolve in the future.  Please feel free to add your ideas, comments, and criticism to the 'discussion' section of this page.}}
 +
 +
 +
== Mockups ==
 +
 +
* [http://lewk.org/img/bodhi-20-frontpage.png Bodhi 2.0 Front Page Mockup] by [[User:Duffy|Máirín Duffy]]
  
 
== Status ==
 
== Status ==
* tg2 branch created in bodhi's git repo
+
* pyramid branch created in bodhi's git repo
 
* Bodhi's test suite has been ported to the WebTest framework
 
* Bodhi's test suite has been ported to the WebTest framework
 
* Bodhi's database model has been ported from SQLObject to SQLAlchemy
 
* Bodhi's database model has been ported from SQLObject to SQLAlchemy
 
* Templates have been partially ported from Kid to Mako
 
* Templates have been partially ported from Kid to Mako
* To complete the TG1->TG2 port, bodhi's widgets, controllers, and templates need to be ported
+
* To complete the TG1->pyramid port, bodhi's widgets and controllers
* SQLObject -> SQLAlchemy migration script written ([https://fedorahosted.org/bodhi/ticket/609 ticket #609])
+
* Pyramid resource traversal has been written ([http://git.fedorahosted.org/git?p=bodhi.git;a=blob;f=bodhi/resources.py;h=6d15cadf1ae749fd462d519d399286106c84ad86;hb=refs/heads/pyramid bodhi/resources.py])
 +
* Generic JSON and HTML grid views are now available for all models (Updates, Builds, Comments, Users, Releases, etc)
 +
* SQLObject -> SQLAlchemy migration script written ([https://fedorahosted.org/bodhi/ticket/609 ticket #609] [https://git.fedorahosted.org/cgit/bodhi.git/tree/tools/pickledb.py?h=pyramid tools/pickledb.py])
 +
** You can import an old bodhi database snapshot by running `python tools/pickledb.py migrate <snapshot>`.
 +
* All of the sanity checking in bodhi's save() method has been ported to ToscaWidgets2/FormEncode validators, and tests cases have been written. ([https://git.fedorahosted.org/cgit/bodhi.git/tree/bodhi/validators.py?h=pyramid bodhi/validators.py])
  
 
== Goals ==
 
== Goals ==
Line 13: Line 22:
 
=== Painless update submission ===
 
=== Painless update submission ===
 
* At the moment we have an auto-completion widget that aids in the creation of new updates from the web form.  With bodhi v2.0, we wish to take this a step further and make it even easier to submit new updates.  This could be done in a variety of ways: from providing a list of your candidate updates, to being able to clone existing updates, or by making it simple to submit full 'stack' updates (e.g: firefox & related deps)
 
* At the moment we have an auto-completion widget that aids in the creation of new updates from the web form.  With bodhi v2.0, we wish to take this a step further and make it even easier to submit new updates.  This could be done in a variety of ways: from providing a list of your candidate updates, to being able to clone existing updates, or by making it simple to submit full 'stack' updates (e.g: firefox & related deps)
 +
* Bodhi shall ensure that a package and its dependencies are always pushed together as a single update unit, even if the update unit is maintained by multiple parties, pushed initially as independent updates.
  
 
=== Policy Knobs ===
 
=== Policy Knobs ===
Line 25: Line 35:
 
* Fine grained karma types
 
* Fine grained karma types
 
* Karma ideas: http://lists.fedoraproject.org/pipermail/devel/2010-March/134087.html http://bochecha.fedorapeople.org/bodhi_karma_revamped
 
* Karma ideas: http://lists.fedoraproject.org/pipermail/devel/2010-March/134087.html http://bochecha.fedorapeople.org/bodhi_karma_revamped
 +
* Preview of karma implementation:  http://threebean.org/blog/bodhi2-karma-system-preview/
  
 
===Testing dashboard===
 
===Testing dashboard===
Line 61: Line 72:
 
* Right now exceptions propagate to the bodhi logs, but there is no proactive measurements that notify us of errors as they happen.  The WebError middleware that comes with TG2 will email us upon every exception and offers a rich traceback debugger that we can use even after the exception has occured.
 
* Right now exceptions propagate to the bodhi logs, but there is no proactive measurements that notify us of errors as they happen.  The WebError middleware that comes with TG2 will email us upon every exception and offers a rich traceback debugger that we can use even after the exception has occured.
  
===Optimized push process===
+
===Improved push process===
 
* The current push process within bodhi (aka The Masher) does a lot of work that can be done in parallel.  The next version will effectively scale to multiple processors, prioritize critical/security updates, and sync each release to the mirrors once it is complete (as opposed to waiting until all releases are complete)
 
* The current push process within bodhi (aka The Masher) does a lot of work that can be done in parallel.  The next version will effectively scale to multiple processors, prioritize critical/security updates, and sync each release to the mirrors once it is complete (as opposed to waiting until all releases are complete)
 
* There are a variety of race-conditions that can occur with the current push process.  Bodhi v2.0 aims to eliminate these, potentially by locking updates when they are being pushed, or by some other means.
 
* There are a variety of race-conditions that can occur with the current push process.  Bodhi v2.0 aims to eliminate these, potentially by locking updates when they are being pushed, or by some other means.
 +
* Ensure that packages are not pushed which would break dependencies within Fedora (or EPEL).
  
 
===Fedora agnostic===
 
===Fedora agnostic===
Line 71: Line 83:
 
* Will retain backwards compatibility at the JSON level and within python-fedora.
 
* Will retain backwards compatibility at the JSON level and within python-fedora.
  
===Ported from TurboGears 1 to 2===
+
===Ported from TurboGears 1 to Pyramid===
 
* Will benefit from many speed enhancements and architectural improvements
 
* Will benefit from many speed enhancements and architectural improvements
 
* Current bodhi stack: TG1, SQLObject, CherryPy, Kid
 
* Current bodhi stack: TG1, SQLObject, CherryPy, Kid
* Potential v2.0 stack: TG2, SQLAlchemy, ToscaWidgets2, Mako
+
* Potential v2.0 stack: Pyramid, SQLAlchemy, Mako

Latest revision as of 16:47, 9 May 2014

Note.png
This is a draft
This is a draft of potential features for Bodhi v2.0. It is meant to spawn discussion and will most likely evolve in the future. Please feel free to add your ideas, comments, and criticism to the 'discussion' section of this page.


Contents

[edit] Mockups

[edit] Status

  • pyramid branch created in bodhi's git repo
  • Bodhi's test suite has been ported to the WebTest framework
  • Bodhi's database model has been ported from SQLObject to SQLAlchemy
  • Templates have been partially ported from Kid to Mako
  • To complete the TG1->pyramid port, bodhi's widgets and controllers
  • Pyramid resource traversal has been written (bodhi/resources.py)
  • Generic JSON and HTML grid views are now available for all models (Updates, Builds, Comments, Users, Releases, etc)
  • SQLObject -> SQLAlchemy migration script written (ticket #609 tools/pickledb.py)
    • You can import an old bodhi database snapshot by running `python tools/pickledb.py migrate <snapshot>`.
  • All of the sanity checking in bodhi's save() method has been ported to ToscaWidgets2/FormEncode validators, and tests cases have been written. (bodhi/validators.py)

[edit] Goals

[edit] Painless update submission

  • At the moment we have an auto-completion widget that aids in the creation of new updates from the web form. With bodhi v2.0, we wish to take this a step further and make it even easier to submit new updates. This could be done in a variety of ways: from providing a list of your candidate updates, to being able to clone existing updates, or by making it simple to submit full 'stack' updates (e.g: firefox & related deps)
  • Bodhi shall ensure that a package and its dependencies are always pushed together as a single update unit, even if the update unit is maintained by multiple parties, pushed initially as independent updates.

[edit] Policy Knobs

  • As opposed to hardcoding policy logic into the system, every aspect of bodhi 2.0's update policy will be exposed as configuration options which will allow us to tweak them as we see necessary without any code changes.
  • Policy ideas: User:Kevin/Updates_Policy_Changes_Ideas_Container

[edit] Improved bugzilla integration

  • During update creation, bodhi v2.0 will display a list of bugs that are potentially related to your update, allowing you to easily add them to it.
  • Bodhi will also make it easier for testers to file bugs from bodhi

[edit] Improved karma

[edit] Testing dashboard

  • Make it much more obvious as to what high-priority updates need testing
  • For each update, make it obvious what people can do to effectively test the update and provide useful feedback (https://fedorahosted.org/fedora-qa/ticket/154)
  • Make it clear *exactly* what has changed in each update, from spec file changes to full code diffs.

[edit] AutoQA integration

  • Bodhi v2.0 will provide tight AutoQA integration, allowing us to require AutoQA results in our policy, and making it simple to view results and such.

[edit] Better security features & workflows

  • Improved CVE handling and tracking
  • OVAL metadata creation

[edit] Improved metrics

  • Interactive graphs
  • Metric reports

[edit] Message bus integration

  • Bodhi v2.0 will offer AMQP broker integration. This means that upon various events, bodhi will send notifications to a central message broker, allowing clients and other services to react to them accordingly.
  • It will also be designed to potentially listen for events that our infrastructure may send out in the future, such as when a new koji build completes, or when AutoQA finishes testing an update, etc.

[edit] Improved database model

  • Porting from SQLObject to SQLAlchemy
    • Migration tools will for our schema to easily evolve over time
    • Will allow us to perform more sophisticated and efficient SQL queries, thanks to features such as eager-loading

[edit] Release phases

  • Bodhi v2.0 will become aware of the various release phases. So, when an upcoming release branches from rawhide, bodhi will automatically know to enable the "No Frozen Rawhide" policies. When a release goes EOL, bodhi will know to freeze it, while still making the data easily available and accessible.
  • Bodhi v2.0 will also become more flexible with handling different releases, such as Fedora and EPEL, which have different policies.

[edit] i18n

  • TG2/Pylons makes it very easy to make your application internationalizable.

[edit] Improved exception handling

  • Right now exceptions propagate to the bodhi logs, but there is no proactive measurements that notify us of errors as they happen. The WebError middleware that comes with TG2 will email us upon every exception and offers a rich traceback debugger that we can use even after the exception has occured.

[edit] Improved push process

  • The current push process within bodhi (aka The Masher) does a lot of work that can be done in parallel. The next version will effectively scale to multiple processors, prioritize critical/security updates, and sync each release to the mirrors once it is complete (as opposed to waiting until all releases are complete)
  • There are a variety of race-conditions that can occur with the current push process. Bodhi v2.0 aims to eliminate these, potentially by locking updates when they are being pushed, or by some other means.
  • Ensure that packages are not pushed which would break dependencies within Fedora (or EPEL).

[edit] Fedora agnostic

  • Bodhi is currently used in many places outside of Fedora. One of the goals of v2.0 is to make it much more flexible for people that aren't within a koji/pkgdb/fas/bz environment.

[edit] Well tested and well documented RESTful API

  • Will retain backwards compatibility at the JSON level and within python-fedora.

[edit] Ported from TurboGears 1 to Pyramid

  • Will benefit from many speed enhancements and architectural improvements
  • Current bodhi stack: TG1, SQLObject, CherryPy, Kid
  • Potential v2.0 stack: Pyramid, SQLAlchemy, Mako