Katello as a Plugin: Where are We Now

Howdy,

Roughly a year and a half ago, the Katello team with the help of the
Foreman team embarked on migrating Katello to both the Foreman community
and architecture. On the heels of what will be the second release of
Katello, what follows is a review of the items that were previously
identified as overlap between the two projects prior to 'enginification'
(or turning Katello into a plugin) and where they stand currently.
Apologies for the length - there are many topics to cover. Note, the
percentage next to each topic represents my personal estimate of the
percent done towards full integration. Items are sorted by percentage from
high to low.

Plugin definition and integration points (100%)
Pre-enginifcation:

  • Katello and Foreman were maintaining support for plugins using their
    own defined interfaces.

Katello 2.1/Foreman 1.7:

  • Katello is now a plugin to Foreman.

Authentication (100%)
Pre-enginifcation:

  • Katello and Foreman maintained their own authentication systems and
    were linked up using Signo to provide single sign-on.

Katello 2.1/Foreman 1.7:

  • Katello relies entirely on Foreman's authentication system.

User Interface Menu (100%)
Pre-enginifcation:

  • Katello maintained a separate UI with separate angular-based menu
    structure.
  • Foreman maintained a separate UI with separate ERB based menu
    structure.

Katello 2.1/Foreman 1.7:

  • Katello adds it's menu items to the Foreman infrastructure which are
    displayed as a single unified navigation structure.

Command Line Interface (100%)
Pre-enginifcation:

  • Katello maintained a python-based CLI tool that included some Foreman
    commands.
  • Foreman started a CLI project called hammer that provided a bridge to
    the python CLI Katello had.

Katello 2.1/Foreman 1.7:

  • Katello now provides a hammer plugin for CLI commands and no longer
    maintains the python CLI.

Identity Management (95%)
Pre-enginifcation:

  • Katello and Foreman had their own user and role models and
    authorization systems.

Katello 2.1/Foreman 1.7:

  • Katello uses Foreman's users and adds the following:
    • help_tips
    • user notices
    • search favorites
    • search history
    • preferences
  • Katello uses Foreman's roles and authorization system entirely.

Continuous Integration (95%)
Pre-enginifcation:

  • Katello largely relied on Travis to handle testing of pull requests
    and merges to master.
  • Foreman maintained a Jenkins server handling testing of pull requests,
    merges to master, plugins, and their deployment pipeline.

Katello 2.1/Foreman 1.7:

  • Katello now uses the Foreman Jenkins to handle testing pull requests,
    merges to master, plugins, and the deployment pipeline.
  • Foreman runs Katello unit tests on every PR to Foreman.
  • Foreman and Katello both use and collaborate on a prprocessor for
    setting labels, checking PRs and automating Redmine interactions for PRs.

Needs Work:

RESTful API (80%)
Pre-enginifcation:

  • Katello and Foreman maintained separate V1 APIs and specifications.
  • Katello and Foreman maintained separate developing V2 APIs and
    specifications.

Katello 2.1/Foreman 1.7:

  • Katello and Foreman worked on a joint V2 specification and implemented
    with some mis-communication along the way.
  • V2 API for each roughly follows the same input and output formats with
    some differences found within specific APIs.
  • Katello and Foreman API namespace are rooted separately - /katello and
    /api

Packaging (70%)
Pre-enginifcation:

  • Katello maintained it's own set of yum repos hosted at fedorapeople.org
    and carried it's own packages within individual git repositories.
  • Foreman maintained it's own packaging repository for it's components
    and their own set of repos at yum.theforeman.org.
  • Katello did not test packaging.
  • Foreman maintained a testing and deployment pipeline for their
    packages before releasing them.

Katello 2.1/Foreman 1.7:

  • Katello and Foreman have converged on the same SCL and duplicate
    packages pre-dominantly removed from Katello where Foreman provides.
  • Both maintain separate yum repositories.
  • Katello now employs a test pipeline for packages before releases them.
  • Katello continues to maintain spec files and packaging within
    individual repositories, while Foreman utilizes foreman-packaging for
    itself, dependencies and plugins.
  • Neither Katello or Foreman bats tests are run against each others
    changes.

Organizations (60%)
Pre-enginifcation:

  • Katello and Foreman had separate organization models with duplicated
    attributes
  • Katello required all entities to belong to a single organization and
    for users to be in the context of an organization. Foreman allowed entities
    (except hosts) to belong to multiple organizations and allowed an 'Any
    Context' mode.

Katello 2.1/Foreman 1.7:

  • Katello and Foreman use the same Organization model with Katello
    adding:
    • relationships to Katello entities
    • default_info
    • description
    • label
    • default capsule
    • Library lifecycle environment
    • Default content view
  • Katello still requires all entities to belong to a single organization
    and for users to be in the context of an organization. Foreman allow
    entities (except hosts) to belong to multiple organizations and allowed an
    'Any Context' mode.

Release and Project Management (60%)
Pre-enginifcation:

  • Katello used Trello for project management.
  • Katello wrapped Foreman releases within it's releases.
  • Foreman used their own instance of Redmine for project management.
  • Katello and Foreman both used 3 week sprints but with separate
    planning, retrospectives and planning.
  • Katello releases were feature-based with some consideration of time
    since last release.
  • Foreman releases were quarterly.

Katello 2.1/Foreman 1.7:

  • Katello migrated to and now makes full use of the Foreman Redmine for
    project management.
  • Katello and Foreman now have a single joint sprint demo.
  • Katello releases are still partially feature-based and partially based
    on Foreman's schedule given Katello deploys Foreman during installation and
    thus requires a full Foreman release.
  • Katello is planning to use 2.2 to sync up with Foreman timing wise for
    releases.
  • Katello and Foreman still maintain separate planning and
    retrospectives.

Installer Tooling (40%)
Pre-enginifcation:

  • Katello maintained katello-configure and capsule-installer, a puppet
    based installer with tightly coupled puppet modules for installing Katello
    with Foreman.
  • Foreman created kafo and maintained an installer based off of kafo
    using Puppet modules and compiling them together at build time.

Katello 2.1/Foreman 1.7:

  • Katello maintains a Kafo based katello-installer which produces
    katello-installer, katello-devel-installer, and the capsule-installer which
    installs Katello with Foreman.
  • Foreman maintains foreman-installer which produces foreman-installer
    and handles installing Foreman and a subset of plugins.
  • The two installers are modeled similarly but are separate from one
    another.
  • Katello cannot be added to an existing Foreman.

Search Unification (30%)
Pre-enginifcation:

  • Katello made use of Elasticsearch for indexing and searching through
    the API and UI in part due to data types coming from Pulp and the need for
    flexibility.
  • Foreman uses scoped search and active record for searching.

Katello 2.1/Foreman 1.7:

  • Katello continues to use elasticsearch but has converted some entities
    over to AR and scoped search.
  • Katello has added scoped search autocomplete to those pages.
  • Katello has not integrated the use of search history and bookmarks.

System Management (25%)
Pre-enginifcation:

  • Katello used a system model, API, and UI page for managing hosts.
    Foreman used a host model, API and UI for managing hosts.
  • Katello systems and hosts had a loose connection between them even
    when they represented the same box.

Katello 2.1/Foreman 1.7:

  • Katello uses 'Content Host' via the system model and API with it's own
    UI. Foreman uses their same host model, API and UI.
  • Content hosts are created for hosts when the two are in the same
    organization and the hostname's match up and connected to one another at
    the model level.
  • Host information shows up on a Provisioning tab of the content host
    page and subscription information shows up on the host page.

User Interface Building Blocks (10%)
Pre-enginifcation:

  • Katello maintained a partial AngularJS and partial HAML based UI that
    relied on Bootstrap
  • Foreman maintained an ERB based UI that relied on Bootstrap

Katello 2.1/Foreman 1.7:

  • Katello continues to have an AngularJS based UI that talks to the APIs
    and a few legacy HAML pages that continue to use UI controllers. The
    styling is provided by Patternfly with Bootstrap underneath and Font
    Awesome.
  • Foreman continues to maintain their ERB based UI that relies on
    Bootstrap.

Notifications (0%)
Pre-enginifcation:

  • Katello maintained system wide and user notifications with their own
    UI page. Foreman maintained system wide notifications. Both used some form
    of floating UI notifications but were separate implementations.

Katello 2.1/Foreman 1.7:

  • Katello still produces some backend notifications and adds a
    notifications UI page. Form, and action notifications have moved inline
    within the UI and are not persisted in the database.
  • Foreman still maintains their previous notification system.

Auditing (0%)
Pre-enginifcation:

  • Katello provided notifications for system actions but no real form of
    user action auditing.
  • Foreman made use of the auditing gem to record and display active
    record level user actions.

Katello 2.1/Foreman 1.7:

  • Katello still does not make significant use of the auditing gem and
    there is no auditing mechanism for non active record actions.
  • Foreman continues to use auditing gem for active record actions only.

Application Settings (0%)
Pre-enginifcation:

  • Katello maintained katello.yml configuration and Katello.config within
    code for accessing configuration values for the system. Users also had
    preferences for some items stored on them.
  • Foreman used settings.yml and SETTINGS object within code for system
    wide configuration that required server restarts. Foreman also maintained
    Settings model for configuring settings from the UI by an administrator
    that are system wide.

Katello 2.1/Foreman 1.7:

  • Same as pre-enginification.

User Interface Dashboard (0%)
Pre-enginifcation:

  • Katello maintained it's own dashboard UI, and dashboarding system.
  • Foreman maintained it's own dashboard UI, and dashboarding system.

Katello 2.1/Foreman 1.7:

  • Same as pre-enginification.

Error Coding (0%)
Pre-enginification:

  • Foreman utilized a system of giving error codes to exceptions
    throughout the application code.
  • Katello had no such system.

Katello 2.1/Foreman 1.7:

  • Same as pre-enginification

Archived here:
http://projects.theforeman.org/projects/katello/wiki/ForemanIntegration

Eric

"Plugin definition and integration points (100%)"

Does that mean there won't be any work towards making it a 'pluggable'
plugin? Currently a large part of the Foreman user base would not be
able to benefit from content management unless they reinstall Foreman.

··· On Thu, Jan 8, 2015 at 2:19 AM, Eric D Helms wrote: > Howdy, > > Roughly a year and a half ago, the Katello team with the help of the Foreman > team embarked on migrating Katello to both the Foreman community and > architecture. On the heels of what will be the second release of Katello, > what follows is a review of the items that were previously identified as > overlap between the two projects prior to 'enginification' (or turning > Katello into a plugin) and where they stand currently. Apologies for the > length - there are many topics to cover. Note, the percentage next to each > topic represents my personal estimate of the percent done towards full > integration. Items are sorted by percentage from high to low. > > Plugin definition and integration points (100%) > Pre-enginifcation: > > Katello and Foreman were maintaining support for plugins using their own > defined interfaces. > > Katello 2.1/Foreman 1.7: > > Katello is now a plugin to Foreman. > > > Authentication (100%) > Pre-enginifcation: > > Katello and Foreman maintained their own authentication systems and were > linked up using Signo to provide single sign-on. > > Katello 2.1/Foreman 1.7: > > Katello relies entirely on Foreman's authentication system. > > > User Interface Menu (100%) > Pre-enginifcation: > > Katello maintained a separate UI with separate angular-based menu structure. > Foreman maintained a separate UI with separate ERB based menu structure. > > Katello 2.1/Foreman 1.7: > > Katello adds it's menu items to the Foreman infrastructure which are > displayed as a single unified navigation structure. > > > Command Line Interface (100%) > Pre-enginifcation: > > Katello maintained a python-based CLI tool that included some Foreman > commands. > Foreman started a CLI project called hammer that provided a bridge to the > python CLI Katello had. > > Katello 2.1/Foreman 1.7: > > Katello now provides a hammer plugin for CLI commands and no longer > maintains the python CLI. > > > Identity Management (95%) > Pre-enginifcation: > > Katello and Foreman had their own user and role models and authorization > systems. > > Katello 2.1/Foreman 1.7: > > Katello uses Foreman's users and adds the following: > > help_tips > user notices > search favorites > search history > preferences > > Katello uses Foreman's roles and authorization system entirely. > > > Continuous Integration (95%) > Pre-enginifcation: > > Katello largely relied on Travis to handle testing of pull requests and > merges to master. > Foreman maintained a Jenkins server handling testing of pull requests, > merges to master, plugins, and their deployment pipeline. > > Katello 2.1/Foreman 1.7: > > Katello now uses the Foreman Jenkins to handle testing pull requests, merges > to master, plugins, and the deployment pipeline. > Foreman runs Katello unit tests on every PR to Foreman. > Foreman and Katello both use and collaborate on a prprocessor for setting > labels, checking PRs and automating Redmine interactions for PRs. > > Needs Work: > > Running Foreman's unit tests in the context of Katello (see - > https://github.com/Katello/katello/pull/4534) > > > RESTful API (80%) > Pre-enginifcation: > > Katello and Foreman maintained separate V1 APIs and specifications. > Katello and Foreman maintained separate developing V2 APIs and > specifications. > > Katello 2.1/Foreman 1.7: > > Katello and Foreman worked on a joint V2 specification and implemented with > some mis-communication along the way. > V2 API for each roughly follows the same input and output formats with some > differences found within specific APIs. > Katello and Foreman API namespace are rooted separately - /katello and /api > > > Packaging (70%) > Pre-enginifcation: > > Katello maintained it's own set of yum repos hosted at fedorapeople.org and > carried it's own packages within individual git repositories. > Foreman maintained it's own packaging repository for it's components and > their own set of repos at yum.theforeman.org. > Katello did not test packaging. > Foreman maintained a testing and deployment pipeline for their packages > before releasing them. > > Katello 2.1/Foreman 1.7: > > Katello and Foreman have converged on the same SCL and duplicate packages > pre-dominantly removed from Katello where Foreman provides. > Both maintain separate yum repositories. > Katello now employs a test pipeline for packages before releases them. > Katello continues to maintain spec files and packaging within individual > repositories, while Foreman utilizes foreman-packaging for itself, > dependencies and plugins. > Neither Katello or Foreman bats tests are run against each others changes. > > > Organizations (60%) > Pre-enginifcation: > > Katello and Foreman had separate organization models with duplicated > attributes > Katello required all entities to belong to a single organization and for > users to be in the context of an organization. Foreman allowed entities > (except hosts) to belong to multiple organizations and allowed an 'Any > Context' mode. > > Katello 2.1/Foreman 1.7: > > Katello and Foreman use the same Organization model with Katello adding: > > relationships to Katello entities > default_info > description > label > default capsule > Library lifecycle environment > Default content view > > Katello still requires all entities to belong to a single organization and > for users to be in the context of an organization. Foreman allow entities > (except hosts) to belong to multiple organizations and allowed an 'Any > Context' mode. > > > Release and Project Management (60%) > Pre-enginifcation: > > Katello used Trello for project management. > Katello wrapped Foreman releases within it's releases. > Foreman used their own instance of Redmine for project management. > Katello and Foreman both used 3 week sprints but with separate planning, > retrospectives and planning. > Katello releases were feature-based with some consideration of time since > last release. > Foreman releases were quarterly. > > Katello 2.1/Foreman 1.7: > > Katello migrated to and now makes full use of the Foreman Redmine for > project management. > Katello and Foreman now have a single joint sprint demo. > Katello releases are still partially feature-based and partially based on > Foreman's schedule given Katello deploys Foreman during installation and > thus requires a full Foreman release. > Katello is planning to use 2.2 to sync up with Foreman timing wise for > releases. > Katello and Foreman still maintain separate planning and retrospectives. > > > > Installer Tooling (40%) > Pre-enginifcation: > > Katello maintained katello-configure and capsule-installer, a puppet based > installer with tightly coupled puppet modules for installing Katello with > Foreman. > Foreman created kafo and maintained an installer based off of kafo using > Puppet modules and compiling them together at build time. > > Katello 2.1/Foreman 1.7: > > Katello maintains a Kafo based katello-installer which produces > katello-installer, katello-devel-installer, and the capsule-installer which > installs Katello with Foreman. > Foreman maintains foreman-installer which produces foreman-installer and > handles installing Foreman and a subset of plugins. > The two installers are modeled similarly but are separate from one another. > Katello cannot be added to an existing Foreman. > > > Search Unification (30%) > Pre-enginifcation: > > Katello made use of Elasticsearch for indexing and searching through the API > and UI in part due to data types coming from Pulp and the need for > flexibility. > Foreman uses scoped search and active record for searching. > > Katello 2.1/Foreman 1.7: > > Katello continues to use elasticsearch but has converted some entities over > to AR and scoped search. > Katello has added scoped search autocomplete to those pages. > Katello has not integrated the use of search history and bookmarks. > > > System Management (25%) > Pre-enginifcation: > > Katello used a system model, API, and UI page for managing hosts. Foreman > used a host model, API and UI for managing hosts. > Katello systems and hosts had a loose connection between them even when they > represented the same box. > > Katello 2.1/Foreman 1.7: > > Katello uses 'Content Host' via the system model and API with it's own UI. > Foreman uses their same host model, API and UI. > Content hosts are created for hosts when the two are in the same > organization and the hostname's match up and connected to one another at the > model level. > Host information shows up on a Provisioning tab of the content host page and > subscription information shows up on the host page. > > > User Interface Building Blocks (10%) > Pre-enginifcation: > > Katello maintained a partial AngularJS and partial HAML based UI that relied > on Bootstrap > Foreman maintained an ERB based UI that relied on Bootstrap > > Katello 2.1/Foreman 1.7: > > Katello continues to have an AngularJS based UI that talks to the APIs and a > few legacy HAML pages that continue to use UI controllers. The styling is > provided by Patternfly with Bootstrap underneath and Font Awesome. > Foreman continues to maintain their ERB based UI that relies on Bootstrap. > > Notifications (0%) > Pre-enginifcation: > > Katello maintained system wide and user notifications with their own UI > page. Foreman maintained system wide notifications. Both used some form of > floating UI notifications but were separate implementations. > > Katello 2.1/Foreman 1.7: > > Katello still produces some backend notifications and adds a notifications > UI page. Form, and action notifications have moved inline within the UI and > are not persisted in the database. > Foreman still maintains their previous notification system. > > Auditing (0%) > Pre-enginifcation: > > Katello provided notifications for system actions but no real form of user > action auditing. > Foreman made use of the auditing gem to record and display active record > level user actions. > > Katello 2.1/Foreman 1.7: > > Katello still does not make significant use of the auditing gem and there is > no auditing mechanism for non active record actions. > Foreman continues to use auditing gem for active record actions only. > > Application Settings (0%) > Pre-enginifcation: > > Katello maintained katello.yml configuration and Katello.config within code > for accessing configuration values for the system. Users also had > preferences for some items stored on them. > Foreman used settings.yml and SETTINGS object within code for system wide > configuration that required server restarts. Foreman also maintained > Settings model for configuring settings from the UI by an administrator that > are system wide. > > Katello 2.1/Foreman 1.7: > > Same as pre-enginification. > > > User Interface Dashboard (0%) > Pre-enginifcation: > > Katello maintained it's own dashboard UI, and dashboarding system. > Foreman maintained it's own dashboard UI, and dashboarding system. > > Katello 2.1/Foreman 1.7: > > Same as pre-enginification. > > Error Coding (0%) > Pre-enginification: > > Foreman utilized a system of giving error codes to exceptions throughout the > application code. > Katello had no such system. > > Katello 2.1/Foreman 1.7: > > Same as pre-enginification > > > Archived here: > http://projects.theforeman.org/projects/katello/wiki/ForemanIntegration > > > Eric > > -- > You received this message because you are subscribed to the Google Groups > "foreman-dev" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to foreman-dev+unsubscribe@googlegroups.com. > For more options, visit https://groups.google.com/d/optout.


Daniel Lobato

@elobatoss
blog.daniellobato.me
daniellobato.me

GPG: http://keys.gnupg.net/pks/lookup?op=get&search=0x7A92D6DD38D6DE30

Since this is not at 100 % – what is missing / in the works?

··· On Wed, Jan 07, 2015 at 08:19:16PM -0500, Eric D Helms wrote: > > *Identity Management (95%)* > Pre-enginifcation: > > - Katello and Foreman had their own user and role models and > authorization systems. > > Katello 2.1/Foreman 1.7: > > - Katello uses Foreman's users and adds the following: > - help_tips > - user notices > - search favorites > - search history > - preferences > - Katello uses Foreman's roles and authorization system entirely.


Jan Pazdziora
Principal Software Engineer, Identity Management Engineering, Red Hat

>
> "Plugin definition and integration points (100%)"
>
> Does that mean there won't be any work towards making it a 'pluggable'
> plugin? Currently a large part of the Foreman user base would not be
> able to benefit from content management unless they reinstall Foreman.
>

I put that under the install section (and hopefully you saw my Katello on
Foreman email a month or so ago), since this particular item, at the time,
was more focused on the fact both projects supported plugins with a defined
interface that were not the same.

Eric

> > Howdy,
> >
> > Roughly a year and a half ago, the Katello team with the help of the
Foreman
> > team embarked on migrating Katello to both the Foreman community and
> > architecture. On the heels of what will be the second release of
Katello,
> > what follows is a review of the items that were previously identified as
> > overlap between the two projects prior to 'enginification' (or turning
> > Katello into a plugin) and where they stand currently. Apologies for the
> > length - there are many topics to cover. Note, the percentage next to
each
> > topic represents my personal estimate of the percent done towards full
> > integration. Items are sorted by percentage from high to low.
> >
> > Plugin definition and integration points (100%)
> > Pre-enginifcation:
> >
> > Katello and Foreman were maintaining support for plugins using their own
> > defined interfaces.
> >
> > Katello 2.1/Foreman 1.7:
> >
> > Katello is now a plugin to Foreman.
> >
> >
> > Authentication (100%)
> > Pre-enginifcation:
> >
> > Katello and Foreman maintained their own authentication systems and were
> > linked up using Signo to provide single sign-on.
> >
> > Katello 2.1/Foreman 1.7:
> >
> > Katello relies entirely on Foreman's authentication system.
> >
> >
> > User Interface Menu (100%)
> > Pre-enginifcation:
> >
> > Katello maintained a separate UI with separate angular-based menu
structure.
> > Foreman maintained a separate UI with separate ERB based menu structure.
> >
> > Katello 2.1/Foreman 1.7:
> >
> > Katello adds it's menu items to the Foreman infrastructure which are
> > displayed as a single unified navigation structure.
> >
> >
> > Command Line Interface (100%)
> > Pre-enginifcation:
> >
> > Katello maintained a python-based CLI tool that included some Foreman
> > commands.
> > Foreman started a CLI project called hammer that provided a bridge to
the
> > python CLI Katello had.
> >
> > Katello 2.1/Foreman 1.7:
> >
> > Katello now provides a hammer plugin for CLI commands and no longer
> > maintains the python CLI.
> >
> >
> > Identity Management (95%)
> > Pre-enginifcation:
> >
> > Katello and Foreman had their own user and role models and authorization
> > systems.
> >
> > Katello 2.1/Foreman 1.7:
> >
> > Katello uses Foreman's users and adds the following:
> >
> > help_tips
> > user notices
> > search favorites
> > search history
> > preferences
> >
> > Katello uses Foreman's roles and authorization system entirely.
> >
> >
> > Continuous Integration (95%)
> > Pre-enginifcation:
> >
> > Katello largely relied on Travis to handle testing of pull requests and
> > merges to master.
> > Foreman maintained a Jenkins server handling testing of pull requests,
> > merges to master, plugins, and their deployment pipeline.
> >
> > Katello 2.1/Foreman 1.7:
> >
> > Katello now uses the Foreman Jenkins to handle testing pull requests,
merges
> > to master, plugins, and the deployment pipeline.
> > Foreman runs Katello unit tests on every PR to Foreman.
> > Foreman and Katello both use and collaborate on a prprocessor for
setting
> > labels, checking PRs and automating Redmine interactions for PRs.
> >
> > Needs Work:
> >
> > Running Foreman's unit tests in the context of Katello (see -
> > https://github.com/Katello/katello/pull/4534)
> >
> >
> > RESTful API (80%)
> > Pre-enginifcation:
> >
> > Katello and Foreman maintained separate V1 APIs and specifications.
> > Katello and Foreman maintained separate developing V2 APIs and
> > specifications.
> >
> > Katello 2.1/Foreman 1.7:
> >
> > Katello and Foreman worked on a joint V2 specification and implemented
with
> > some mis-communication along the way.
> > V2 API for each roughly follows the same input and output formats with
some
> > differences found within specific APIs.
> > Katello and Foreman API namespace are rooted separately - /katello and
/api
> >
> >
> > Packaging (70%)
> > Pre-enginifcation:
> >
> > Katello maintained it's own set of yum repos hosted at fedorapeople.org
and
> > carried it's own packages within individual git repositories.
> > Foreman maintained it's own packaging repository for it's components and
> > their own set of repos at yum.theforeman.org.
> > Katello did not test packaging.
> > Foreman maintained a testing and deployment pipeline for their packages
> > before releasing them.
> >
> > Katello 2.1/Foreman 1.7:
> >
> > Katello and Foreman have converged on the same SCL and duplicate
packages
> > pre-dominantly removed from Katello where Foreman provides.
> > Both maintain separate yum repositories.
> > Katello now employs a test pipeline for packages before releases them.
> > Katello continues to maintain spec files and packaging within individual
> > repositories, while Foreman utilizes foreman-packaging for itself,
> > dependencies and plugins.
> > Neither Katello or Foreman bats tests are run against each others
changes.
> >
> >
> > Organizations (60%)
> > Pre-enginifcation:
> >
> > Katello and Foreman had separate organization models with duplicated
> > attributes
> > Katello required all entities to belong to a single organization and for
> > users to be in the context of an organization. Foreman allowed entities
> > (except hosts) to belong to multiple organizations and allowed an 'Any
> > Context' mode.
> >
> > Katello 2.1/Foreman 1.7:
> >
> > Katello and Foreman use the same Organization model with Katello adding:
> >
> > relationships to Katello entities
> > default_info
> > description
> > label
> > default capsule
> > Library lifecycle environment
> > Default content view
> >
> > Katello still requires all entities to belong to a single organization
and
> > for users to be in the context of an organization. Foreman allow
entities
> > (except hosts) to belong to multiple organizations and allowed an 'Any
> > Context' mode.
> >
> >
> > Release and Project Management (60%)
> > Pre-enginifcation:
> >
> > Katello used Trello for project management.
> > Katello wrapped Foreman releases within it's releases.
> > Foreman used their own instance of Redmine for project management.
> > Katello and Foreman both used 3 week sprints but with separate planning,
> > retrospectives and planning.
> > Katello releases were feature-based with some consideration of time
since
> > last release.
> > Foreman releases were quarterly.
> >
> > Katello 2.1/Foreman 1.7:
> >
> > Katello migrated to and now makes full use of the Foreman Redmine for
> > project management.
> > Katello and Foreman now have a single joint sprint demo.
> > Katello releases are still partially feature-based and partially based
on
> > Foreman's schedule given Katello deploys Foreman during installation and
> > thus requires a full Foreman release.
> > Katello is planning to use 2.2 to sync up with Foreman timing wise for
> > releases.
> > Katello and Foreman still maintain separate planning and retrospectives.
> >
> >
> >
> > Installer Tooling (40%)
> > Pre-enginifcation:
> >
> > Katello maintained katello-configure and capsule-installer, a puppet
based
> > installer with tightly coupled puppet modules for installing Katello
with
> > Foreman.
> > Foreman created kafo and maintained an installer based off of kafo using
> > Puppet modules and compiling them together at build time.
> >
> > Katello 2.1/Foreman 1.7:
> >
> > Katello maintains a Kafo based katello-installer which produces
> > katello-installer, katello-devel-installer, and the capsule-installer
which
> > installs Katello with Foreman.
> > Foreman maintains foreman-installer which produces foreman-installer and
> > handles installing Foreman and a subset of plugins.
> > The two installers are modeled similarly but are separate from one
another.
> > Katello cannot be added to an existing Foreman.
> >
> >
> > Search Unification (30%)
> > Pre-enginifcation:
> >
> > Katello made use of Elasticsearch for indexing and searching through
the API
> > and UI in part due to data types coming from Pulp and the need for
> > flexibility.
> > Foreman uses scoped search and active record for searching.
> >
> > Katello 2.1/Foreman 1.7:
> >
> > Katello continues to use elasticsearch but has converted some entities
over
> > to AR and scoped search.
> > Katello has added scoped search autocomplete to those pages.
> > Katello has not integrated the use of search history and bookmarks.
> >
> >
> > System Management (25%)
> > Pre-enginifcation:
> >
> > Katello used a system model, API, and UI page for managing hosts.
Foreman
> > used a host model, API and UI for managing hosts.
> > Katello systems and hosts had a loose connection between them even when
they
> > represented the same box.
> >
> > Katello 2.1/Foreman 1.7:
> >
> > Katello uses 'Content Host' via the system model and API with it's own
UI.
> > Foreman uses their same host model, API and UI.
> > Content hosts are created for hosts when the two are in the same
> > organization and the hostname's match up and connected to one another
at the
> > model level.
> > Host information shows up on a Provisioning tab of the content host
page and
> > subscription information shows up on the host page.
> >
> >
> > User Interface Building Blocks (10%)
> > Pre-enginifcation:
> >
> > Katello maintained a partial AngularJS and partial HAML based UI that
relied
> > on Bootstrap
> > Foreman maintained an ERB based UI that relied on Bootstrap
> >
> > Katello 2.1/Foreman 1.7:
> >
> > Katello continues to have an AngularJS based UI that talks to the APIs
and a
> > few legacy HAML pages that continue to use UI controllers. The styling
is
> > provided by Patternfly with Bootstrap underneath and Font Awesome.
> > Foreman continues to maintain their ERB based UI that relies on
Bootstrap.
> >
> > Notifications (0%)
> > Pre-enginifcation:
> >
> > Katello maintained system wide and user notifications with their own UI
> > page. Foreman maintained system wide notifications. Both used some form
of
> > floating UI notifications but were separate implementations.
> >
> > Katello 2.1/Foreman 1.7:
> >
> > Katello still produces some backend notifications and adds a
notifications
> > UI page. Form, and action notifications have moved inline within the UI
and
> > are not persisted in the database.
> > Foreman still maintains their previous notification system.
> >
> > Auditing (0%)
> > Pre-enginifcation:
> >
> > Katello provided notifications for system actions but no real form of
user
> > action auditing.
> > Foreman made use of the auditing gem to record and display active record
> > level user actions.
> >
> > Katello 2.1/Foreman 1.7:
> >
> > Katello still does not make significant use of the auditing gem and
there is
> > no auditing mechanism for non active record actions.
> > Foreman continues to use auditing gem for active record actions only.
> >
> > Application Settings (0%)
> > Pre-enginifcation:
> >
> > Katello maintained katello.yml configuration and Katello.config within
code
> > for accessing configuration values for the system. Users also had
> > preferences for some items stored on them.
> > Foreman used settings.yml and SETTINGS object within code for system
wide
> > configuration that required server restarts. Foreman also maintained
> > Settings model for configuring settings from the UI by an administrator
that
> > are system wide.
> >
> > Katello 2.1/Foreman 1.7:
> >
> > Same as pre-enginification.
> >
> >
> > User Interface Dashboard (0%)
> > Pre-enginifcation:
> >
> > Katello maintained it's own dashboard UI, and dashboarding system.
> > Foreman maintained it's own dashboard UI, and dashboarding system.
> >
> > Katello 2.1/Foreman 1.7:
> >
> > Same as pre-enginification.
> >
> > Error Coding (0%)
> > Pre-enginification:
> >
> > Foreman utilized a system of giving error codes to exceptions
throughout the
> > application code.
> > Katello had no such system.
> >
> > Katello 2.1/Foreman 1.7:
> >
> > Same as pre-enginification
> >
> >
> > Archived here:
> > ForemanIntegration - Katello - Foreman
> >
> >
> > Eric
> >
> > –
> > You received this message because you are subscribed to the Google
Groups
> > "foreman-dev" group.
> > To unsubscribe from this group and stop receiving emails from it, send
an
> > email to foreman-dev+unsubscribe@googlegroups.com.
> > For more options, visit https://groups.google.com/d/optout.
>
>
>
> –
> Daniel Lobato
>
> @elobatoss
> blog.daniellobato.me
> daniellobato.me
>
> GPG: http://keys.gnupg.net/pks/lookup?op=get&search=0x7A92D6DD38D6DE30
>
> –
> You received this message because you are subscribed to the Google Groups
"foreman-dev" group.
> To unsubscribe from this group and stop receiving emails from it, send an
email to foreman-dev+unsubscribe@googlegroups.com.

··· On Jan 8, 2015 3:16 AM, "Daniel Lobato" wrote: > On Thu, Jan 8, 2015 at 2:19 AM, Eric D Helms wrote: > For more options, visit https://groups.google.com/d/optout.

For role based access control (aka RBAC, roles & permissions), I think 95% is overly generous. Some of the bigger issues in my mind…

  • not all foreman objects are scoped to organizations and locations making multi-tenant difficult (impossible?)
  • katello objects don't use scoped search making refined role creation difficult
  • too many actions require the "admin flag" to perform, making true scoping of the tool (UI, CLI, API) impossible
    • at this point, in order to really be able to use the tool one must run as admin.
  • default seeding of roles don't include any katello permissions
  • role manipulation and creation very difficult (except through batch methods leveraging api)
    • for example, try making an org-specific role with many filters. now try cloning that role for a new org.
··· ----- Original Message ----- > On Wed, Jan 07, 2015 at 08:19:16PM -0500, Eric D Helms wrote: > > > > *Identity Management (95%)* > > Pre-enginifcation: > > > > - Katello and Foreman had their own user and role models and > > authorization systems. > > > > Katello 2.1/Foreman 1.7: > > > > - Katello uses Foreman's users and adds the following: > > - help_tips > > - user notices > > - search favorites > > - search history > > - preferences > > - Katello uses Foreman's roles and authorization system entirely. > > Since this is not at 100 % -- what is missing / in the works? > > -- > Jan Pazdziora > Principal Software Engineer, Identity Management Engineering, Red Hat > > -- > You received this message because you are subscribed to the Google Groups > "foreman-dev" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to foreman-dev+unsubscribe@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. >

>
>
> > >
> > > Identity Management (95%)
> > > Pre-enginifcation:
> > >
> > > - Katello and Foreman had their own user and role models and
> > > authorization systems.
> > >
> > > Katello 2.1/Foreman 1.7:
> > >
> > > - Katello uses Foreman's users and adds the following:
> > > - help_tips
> > > - user notices
> > > - search favorites
> > > - search history
> > > - preferences
> > > - Katello uses Foreman's roles and authorization system entirely.
> >
> > Since this is not at 100 % – what is missing / in the works?
> >
> > –
> > Jan Pazdziora
> > Principal Software Engineer, Identity Management Engineering, Red Hat
> >
> > –
> > You received this message because you are subscribed to the Google Groups
> > "foreman-dev" group.
> > To unsubscribe from this group and stop receiving emails from it, send an
> > email to foreman-dev+unsubscribe@googlegroups.com.
> > For more options, visit https://groups.google.com/d/optout.
> >
>
> For role based access control (aka RBAC, roles & permissions), I think 95%
> is overly generous. Some of the bigger issues in my mind…
> + not all foreman objects are scoped to organizations and locations making
> multi-tenant difficult (impossible?)
>

See the organizations section.

> + katello objects don't use scoped search making refined role creation
> difficult
>

See search integration section.

> + too many actions require the "admin flag" to perform, making true
> scoping of the tool (UI, CLI, API) impossible
> - at this point, in order to really be able to use the tool one must run
> as admin.
>

Not an integration issue - just an overall issue.

> + default seeding of roles don't include any katello permissions
>

I don't follow this one.

> + role manipulation and creation very difficult (except through batch
> methods leveraging api)
> - for example, try making an org-specific role with many filters. now
> try cloning that role for a new org.
>

Not an integration issue - just an overall issue.

··· On Thu, Jan 8, 2015 at 10:28 AM, Tom McKay wrote: > ----- Original Message ----- > > On Wed, Jan 07, 2015 at 08:19:16PM -0500, Eric D Helms wrote:


You received this message because you are subscribed to the Google Groups
"foreman-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an
email to foreman-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Nevermind I just didn't read it the first time. Thanks for the summary!

··· On Thu, Jan 8, 2015 at 12:42 PM, Eric D Helms wrote: > > On Jan 8, 2015 3:16 AM, "Daniel Lobato" wrote: >> >> "Plugin definition and integration points (100%)" >> >> Does that mean there won't be any work towards making it a 'pluggable' >> plugin? Currently a large part of the Foreman user base would not be >> able to benefit from content management unless they reinstall Foreman. >> > > I put that under the install section (and hopefully you saw my Katello on > Foreman email a month or so ago), since this particular item, at the time, > was more focused on the fact both projects supported plugins with a defined > interface that were not the same. > > Eric > >> On Thu, Jan 8, 2015 at 2:19 AM, Eric D Helms wrote: >> > Howdy, >> > >> > Roughly a year and a half ago, the Katello team with the help of the >> > Foreman >> > team embarked on migrating Katello to both the Foreman community and >> > architecture. On the heels of what will be the second release of >> > Katello, >> > what follows is a review of the items that were previously identified as >> > overlap between the two projects prior to 'enginification' (or turning >> > Katello into a plugin) and where they stand currently. Apologies for the >> > length - there are many topics to cover. Note, the percentage next to >> > each >> > topic represents my personal estimate of the percent done towards full >> > integration. Items are sorted by percentage from high to low. >> > >> > Plugin definition and integration points (100%) >> > Pre-enginifcation: >> > >> > Katello and Foreman were maintaining support for plugins using their own >> > defined interfaces. >> > >> > Katello 2.1/Foreman 1.7: >> > >> > Katello is now a plugin to Foreman. >> > >> > >> > Authentication (100%) >> > Pre-enginifcation: >> > >> > Katello and Foreman maintained their own authentication systems and were >> > linked up using Signo to provide single sign-on. >> > >> > Katello 2.1/Foreman 1.7: >> > >> > Katello relies entirely on Foreman's authentication system. >> > >> > >> > User Interface Menu (100%) >> > Pre-enginifcation: >> > >> > Katello maintained a separate UI with separate angular-based menu >> > structure. >> > Foreman maintained a separate UI with separate ERB based menu structure. >> > >> > Katello 2.1/Foreman 1.7: >> > >> > Katello adds it's menu items to the Foreman infrastructure which are >> > displayed as a single unified navigation structure. >> > >> > >> > Command Line Interface (100%) >> > Pre-enginifcation: >> > >> > Katello maintained a python-based CLI tool that included some Foreman >> > commands. >> > Foreman started a CLI project called hammer that provided a bridge to >> > the >> > python CLI Katello had. >> > >> > Katello 2.1/Foreman 1.7: >> > >> > Katello now provides a hammer plugin for CLI commands and no longer >> > maintains the python CLI. >> > >> > >> > Identity Management (95%) >> > Pre-enginifcation: >> > >> > Katello and Foreman had their own user and role models and authorization >> > systems. >> > >> > Katello 2.1/Foreman 1.7: >> > >> > Katello uses Foreman's users and adds the following: >> > >> > help_tips >> > user notices >> > search favorites >> > search history >> > preferences >> > >> > Katello uses Foreman's roles and authorization system entirely. >> > >> > >> > Continuous Integration (95%) >> > Pre-enginifcation: >> > >> > Katello largely relied on Travis to handle testing of pull requests and >> > merges to master. >> > Foreman maintained a Jenkins server handling testing of pull requests, >> > merges to master, plugins, and their deployment pipeline. >> > >> > Katello 2.1/Foreman 1.7: >> > >> > Katello now uses the Foreman Jenkins to handle testing pull requests, >> > merges >> > to master, plugins, and the deployment pipeline. >> > Foreman runs Katello unit tests on every PR to Foreman. >> > Foreman and Katello both use and collaborate on a prprocessor for >> > setting >> > labels, checking PRs and automating Redmine interactions for PRs. >> > >> > Needs Work: >> > >> > Running Foreman's unit tests in the context of Katello (see - >> > https://github.com/Katello/katello/pull/4534) >> > >> > >> > RESTful API (80%) >> > Pre-enginifcation: >> > >> > Katello and Foreman maintained separate V1 APIs and specifications. >> > Katello and Foreman maintained separate developing V2 APIs and >> > specifications. >> > >> > Katello 2.1/Foreman 1.7: >> > >> > Katello and Foreman worked on a joint V2 specification and implemented >> > with >> > some mis-communication along the way. >> > V2 API for each roughly follows the same input and output formats with >> > some >> > differences found within specific APIs. >> > Katello and Foreman API namespace are rooted separately - /katello and >> > /api >> > >> > >> > Packaging (70%) >> > Pre-enginifcation: >> > >> > Katello maintained it's own set of yum repos hosted at fedorapeople.org >> > and >> > carried it's own packages within individual git repositories. >> > Foreman maintained it's own packaging repository for it's components and >> > their own set of repos at yum.theforeman.org. >> > Katello did not test packaging. >> > Foreman maintained a testing and deployment pipeline for their packages >> > before releasing them. >> > >> > Katello 2.1/Foreman 1.7: >> > >> > Katello and Foreman have converged on the same SCL and duplicate >> > packages >> > pre-dominantly removed from Katello where Foreman provides. >> > Both maintain separate yum repositories. >> > Katello now employs a test pipeline for packages before releases them. >> > Katello continues to maintain spec files and packaging within individual >> > repositories, while Foreman utilizes foreman-packaging for itself, >> > dependencies and plugins. >> > Neither Katello or Foreman bats tests are run against each others >> > changes. >> > >> > >> > Organizations (60%) >> > Pre-enginifcation: >> > >> > Katello and Foreman had separate organization models with duplicated >> > attributes >> > Katello required all entities to belong to a single organization and for >> > users to be in the context of an organization. Foreman allowed entities >> > (except hosts) to belong to multiple organizations and allowed an 'Any >> > Context' mode. >> > >> > Katello 2.1/Foreman 1.7: >> > >> > Katello and Foreman use the same Organization model with Katello adding: >> > >> > relationships to Katello entities >> > default_info >> > description >> > label >> > default capsule >> > Library lifecycle environment >> > Default content view >> > >> > Katello still requires all entities to belong to a single organization >> > and >> > for users to be in the context of an organization. Foreman allow >> > entities >> > (except hosts) to belong to multiple organizations and allowed an 'Any >> > Context' mode. >> > >> > >> > Release and Project Management (60%) >> > Pre-enginifcation: >> > >> > Katello used Trello for project management. >> > Katello wrapped Foreman releases within it's releases. >> > Foreman used their own instance of Redmine for project management. >> > Katello and Foreman both used 3 week sprints but with separate planning, >> > retrospectives and planning. >> > Katello releases were feature-based with some consideration of time >> > since >> > last release. >> > Foreman releases were quarterly. >> > >> > Katello 2.1/Foreman 1.7: >> > >> > Katello migrated to and now makes full use of the Foreman Redmine for >> > project management. >> > Katello and Foreman now have a single joint sprint demo. >> > Katello releases are still partially feature-based and partially based >> > on >> > Foreman's schedule given Katello deploys Foreman during installation and >> > thus requires a full Foreman release. >> > Katello is planning to use 2.2 to sync up with Foreman timing wise for >> > releases. >> > Katello and Foreman still maintain separate planning and retrospectives. >> > >> > >> > >> > Installer Tooling (40%) >> > Pre-enginifcation: >> > >> > Katello maintained katello-configure and capsule-installer, a puppet >> > based >> > installer with tightly coupled puppet modules for installing Katello >> > with >> > Foreman. >> > Foreman created kafo and maintained an installer based off of kafo using >> > Puppet modules and compiling them together at build time. >> > >> > Katello 2.1/Foreman 1.7: >> > >> > Katello maintains a Kafo based katello-installer which produces >> > katello-installer, katello-devel-installer, and the capsule-installer >> > which >> > installs Katello with Foreman. >> > Foreman maintains foreman-installer which produces foreman-installer and >> > handles installing Foreman and a subset of plugins. >> > The two installers are modeled similarly but are separate from one >> > another. >> > Katello cannot be added to an existing Foreman. >> > >> > >> > Search Unification (30%) >> > Pre-enginifcation: >> > >> > Katello made use of Elasticsearch for indexing and searching through the >> > API >> > and UI in part due to data types coming from Pulp and the need for >> > flexibility. >> > Foreman uses scoped search and active record for searching. >> > >> > Katello 2.1/Foreman 1.7: >> > >> > Katello continues to use elasticsearch but has converted some entities >> > over >> > to AR and scoped search. >> > Katello has added scoped search autocomplete to those pages. >> > Katello has not integrated the use of search history and bookmarks. >> > >> > >> > System Management (25%) >> > Pre-enginifcation: >> > >> > Katello used a system model, API, and UI page for managing hosts. >> > Foreman >> > used a host model, API and UI for managing hosts. >> > Katello systems and hosts had a loose connection between them even when >> > they >> > represented the same box. >> > >> > Katello 2.1/Foreman 1.7: >> > >> > Katello uses 'Content Host' via the system model and API with it's own >> > UI. >> > Foreman uses their same host model, API and UI. >> > Content hosts are created for hosts when the two are in the same >> > organization and the hostname's match up and connected to one another at >> > the >> > model level. >> > Host information shows up on a Provisioning tab of the content host page >> > and >> > subscription information shows up on the host page. >> > >> > >> > User Interface Building Blocks (10%) >> > Pre-enginifcation: >> > >> > Katello maintained a partial AngularJS and partial HAML based UI that >> > relied >> > on Bootstrap >> > Foreman maintained an ERB based UI that relied on Bootstrap >> > >> > Katello 2.1/Foreman 1.7: >> > >> > Katello continues to have an AngularJS based UI that talks to the APIs >> > and a >> > few legacy HAML pages that continue to use UI controllers. The styling >> > is >> > provided by Patternfly with Bootstrap underneath and Font Awesome. >> > Foreman continues to maintain their ERB based UI that relies on >> > Bootstrap. >> > >> > Notifications (0%) >> > Pre-enginifcation: >> > >> > Katello maintained system wide and user notifications with their own UI >> > page. Foreman maintained system wide notifications. Both used some form >> > of >> > floating UI notifications but were separate implementations. >> > >> > Katello 2.1/Foreman 1.7: >> > >> > Katello still produces some backend notifications and adds a >> > notifications >> > UI page. Form, and action notifications have moved inline within the UI >> > and >> > are not persisted in the database. >> > Foreman still maintains their previous notification system. >> > >> > Auditing (0%) >> > Pre-enginifcation: >> > >> > Katello provided notifications for system actions but no real form of >> > user >> > action auditing. >> > Foreman made use of the auditing gem to record and display active record >> > level user actions. >> > >> > Katello 2.1/Foreman 1.7: >> > >> > Katello still does not make significant use of the auditing gem and >> > there is >> > no auditing mechanism for non active record actions. >> > Foreman continues to use auditing gem for active record actions only. >> > >> > Application Settings (0%) >> > Pre-enginifcation: >> > >> > Katello maintained katello.yml configuration and Katello.config within >> > code >> > for accessing configuration values for the system. Users also had >> > preferences for some items stored on them. >> > Foreman used settings.yml and SETTINGS object within code for system >> > wide >> > configuration that required server restarts. Foreman also maintained >> > Settings model for configuring settings from the UI by an administrator >> > that >> > are system wide. >> > >> > Katello 2.1/Foreman 1.7: >> > >> > Same as pre-enginification. >> > >> > >> > User Interface Dashboard (0%) >> > Pre-enginifcation: >> > >> > Katello maintained it's own dashboard UI, and dashboarding system. >> > Foreman maintained it's own dashboard UI, and dashboarding system. >> > >> > Katello 2.1/Foreman 1.7: >> > >> > Same as pre-enginification. >> > >> > Error Coding (0%) >> > Pre-enginification: >> > >> > Foreman utilized a system of giving error codes to exceptions throughout >> > the >> > application code. >> > Katello had no such system. >> > >> > Katello 2.1/Foreman 1.7: >> > >> > Same as pre-enginification >> > >> > >> > Archived here: >> > http://projects.theforeman.org/projects/katello/wiki/ForemanIntegration >> > >> > >> > Eric >> > >> > -- >> > You received this message because you are subscribed to the Google >> > Groups >> > "foreman-dev" group. >> > To unsubscribe from this group and stop receiving emails from it, send >> > an >> > email to foreman-dev+unsubscribe@googlegroups.com. >> > For more options, visit https://groups.google.com/d/optout. >> >> >> >> -- >> Daniel Lobato >> >> @elobatoss >> blog.daniellobato.me >> daniellobato.me >> >> GPG: http://keys.gnupg.net/pks/lookup?op=get&search=0x7A92D6DD38D6DE30 >> >> -- >> You received this message because you are subscribed to the Google Groups >> "foreman-dev" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to foreman-dev+unsubscribe@googlegroups.com. >> For more options, visit https://groups.google.com/d/optout. > > -- > You received this message because you are subscribed to the Google Groups > "foreman-dev" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to foreman-dev+unsubscribe@googlegroups.com. > For more options, visit https://groups.google.com/d/optout.


Daniel Lobato

@elobatoss
blog.daniellobato.me
daniellobato.me

GPG: http://keys.gnupg.net/pks/lookup?op=get&search=0x7A92D6DD38D6DE30