<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    Thanks for providing this feedback, Brian.!  Good stuff.<br>
    <br>
    <br>
    <div class="moz-cite-prefix">On 02/12/2018 03:57 PM, Brian Bouterse
      wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:CAAcvrTFyCfCJ8VGP+-+nDhTAbCaRT7pnasy_6cY15QacKP61oQ@mail.gmail.com">
      <div dir="ltr">
        <div>At the Foreman Construction day [0] last Wednesday, we had
          our first code focused plugin writer's workshop. About 6
          people were actively engaged as we talked through the plugin
          API, example code, and then tried to install Pulp3. All of
          this happened over about 4-5 hours. In contrast to the devconf
          workshop which was planning focused, this was a "let's look at
          and write some code together" workshop. Two attendees came to
          both, and they got all the way to calling their own sync code.<br>
          <br>
        </div>
        <div>We got a lot of feedback, which I will try to group into
          some areas. (my feedback in parens)<br>
          <br>
        </div>
        <div>[installation issues]<br>
          - the pypi install commands are missing the migrations and
          they produce broken installations<br>
        </div>
        <div>- the vagrantcloud boxes couldn't have a plugin installed
          on them :(<br>
        </div>
        <div>- the dev environments worked great but we didn't recommend
          them until we realized all of these other methods were broken<br>
        </div>
        <div>- we assume the user 'pulp' in a lot of places, e.g.
          systemd file, ansible, etc<br>
        </div>
        <div>- assumptions about Fedora both in ansible, but also the
          copy/paste commands<br>
        </div>
        <div>- some users who copied and pasted commands didn't realize
          they weren't for their OS<br>
        </div>
        <div><br>
        </div>
        <div>[desire for simpler things]<br>
        </div>
        <div>- there is a strong desire to use sqlite as the default db
          not postgresql<br>
        </div>
      </div>
    </blockquote>
    <br>
    Very interesting.  Can you elaborate about why?<br>
    <br>
    <blockquote type="cite"
cite="mid:CAAcvrTFyCfCJ8VGP+-+nDhTAbCaRT7pnasy_6cY15QacKP61oQ@mail.gmail.com">
      <div dir="ltr">
        <div>- desire to not install a message bus. (I think this is
          unavoidable)<br>
          <br>
        </div>
        <div>[need examples]<br>
        </div>
        <div>- pulp_file is our example, but it's laid out into
          different functions and classes. People were confused by this
          because they thought the classes and function names are
          meaningful when they aren't. For example we were asked "what
          is a synchronizer" <a
href="https://github.com/pulp/pulp_file/blob/master/pulp_file/app/tasks.py#L139"
            moz-do-not-send="true">https://github.com/pulp/pulp_file/blob/master/pulp_file/app/tasks.py#L139</a><br>
        </div>
      </div>
    </blockquote>
    <br>
    The Synchronizer used to be the FileImporter and got renamed as part
    of early mitigation of the "circular import" problem.  I plan to do
    some final refactoring as soon as the plugin API stabilizes (really
    soon).  I suspect the Synchronizer class (at least the name), will
    go away.  That said, I'm a little puzzled as to what led to actual
    "confusion" about a class named Synchronizer that was used to
    synchronize a repository.  You also mentioned that some of the
    function names where somehow confusing - can you name them and why
    they were confusing? <br>
    <br>
    <blockquote type="cite"
cite="mid:CAAcvrTFyCfCJ8VGP+-+nDhTAbCaRT7pnasy_6cY15QacKP61oQ@mail.gmail.com">
      <div dir="ltr">
        <div>- pulp_file doesn't provide a good example because
          changesets do everything for you. (The main pulp_file should
          be a simple, direct example of the objects they have to save).<br>
        </div>
      </div>
    </blockquote>
    <br>
    True, but It does provides a good example of how to use the
    ChangeSet.<br>
    <br>
    <blockquote type="cite"
cite="mid:CAAcvrTFyCfCJ8VGP+-+nDhTAbCaRT7pnasy_6cY15QacKP61oQ@mail.gmail.com">
      <div dir="ltr">
        <div>- people found pulp_example via github and thought "oh here
          is what I needed to find!" only to base their code on outdated
          code (we need to delete pulp_example)<br>
        </div>
        <div>- a database picture would be helpful to show off the data
          layer objects, foreign keys, and attributes.<br>
        </div>
      </div>
    </blockquote>
    <br>
    Yes!  We really need to publish an ER diagram.  I'm overdue on an
    action item to produce one.<br>
    <br>
    <blockquote type="cite"
cite="mid:CAAcvrTFyCfCJ8VGP+-+nDhTAbCaRT7pnasy_6cY15QacKP61oQ@mail.gmail.com">
      <div dir="ltr">
        <div><br>
        </div>
        <div>[specific things]<br>
        </div>
        <div>- 'id' on the inherited content unit conflicted with a
          content unit which also uses 'id'.<br>
          - qpid vs rabbitmq defaults confusion. The settings.yaml says
          we default to qpid so they installed qpid, but really in
          settings.py it's rabbitmq. (this is a 1 line fix)<br>
          <br>
        </div>
        <div><br>
        </div>
        <div>In terms of the installation challenges, we should consider
          consolidating onto a single installation method of pip with
          virtualenv. Of all the methods we offer [1] that is the one
          everyone could use and no one minded. We could remove the
          other options from the install page so that for for now
          (pre-GA) everyone is doing the same, simple thing. I think we
          should consolidate our effort and not focus on end-user
          installations as the main thing right now.**<br>
          <br>
        </div>
        <div>I also think we should do these things:<br>
          <br>
        </div>
        <div>* switch pulp to use sqlite3 by default. An ansible
          installer can both install postgres and configure it, later.<br>
        </div>
        <div>* rewrite pulp_file to be a really really simple example<br>
        </div>
      </div>
    </blockquote>
    <br>
    The file-plugin is already a "really really simple example". 
    Rewriting it not using the ChangeSet will significantly increase
    code line count and complexity.  As you know, the file-plugin
    supports managing FileContent like .img and .iso files.  The primary
    goal of the pulp-file project is to support real use cases.  Because
    it's the only plugin, it has taken on a secondary goal of being an
    example.  I'm opposed to increasing complexity in support of the
    secondary "example" goal at the expense of its primary goal.  <br>
    <br>
    The file-plugin currently provides a good example of how to use the
    ChangeSet.  I have no doubt that plugin writers want additional
    examples but I think that if we intend to continue to rely on "real"
    plugins as natural examples, we should identify a plugin on the
    roadmap that has made the design choice to be implemented without
    the ChangeSet and prioritize it.  Another choice could be to
    refactor the example plugin to support a broader range of examples
    and continue to maintain it.<br>
    <br>
    <blockquote type="cite"
cite="mid:CAAcvrTFyCfCJ8VGP+-+nDhTAbCaRT7pnasy_6cY15QacKP61oQ@mail.gmail.com">
      <div dir="ltr">
        <div>* delete pulp_example<br>
          <br>
          Please send ideas, questions, or any kind of feedback.<br>
          <br>
          [0]: <a href="http://cfgmgmtcamp.eu/fringe.html#foreman"
            moz-do-not-send="true">http://cfgmgmtcamp.eu/fringe.html#foreman</a><br>
          [1]: <a
href="https://docs.pulpproject.org/en/3.0/nightly/installation/index.html"
            moz-do-not-send="true">https://docs.pulpproject.org/en/3.0/nightly/installation/index.html</a><br>
          <br>
          ** I still see Ansible as the right cross-distro installer as
          we approach the GA date. @ichimonji10 I  am still +1 on your
          proposal, I think we just need to consolidate both dev and
          testing effort for now. This is similar to the approach for
          the migration tool which we know is really important but we
          aren't starting yet.<br>
          <br>
        </div>
        <div>-Brian<br>
        </div>
        <div><br>
        </div>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
Pulp-dev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Pulp-dev@redhat.com">Pulp-dev@redhat.com</a>
<a class="moz-txt-link-freetext" href="https://www.redhat.com/mailman/listinfo/pulp-dev">https://www.redhat.com/mailman/listinfo/pulp-dev</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>