<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <p><b>xpiLib:</b><br>
      <br>
      Overview/Impetus:<br>
      <br>
      I believe all developers, core and extension, smartly peruse other
      people 's code for inspiration<br>
      and answers.  This is certainly how I began my journey with
      Thunderbird, and you need to do the same<br>
       more now than ever.  While there is DXR and Bugzilla, these only
      house references to the core code trees.<br>
      xpiLib is basically an attempt to provide a simplified version for
      ALL extension code in one place<br>
      regardless if the extension has its own repository on GH or some
      other repository site.  This<br>
      it is only part of the intended use.<br>
      <br>
      Currently there is a beta level release with the following:<br>
      <br>
      - Complete metadata (extension detail, versions and manifest
      files) - all 1339 existing extensions<br>
      - Extension source code for all TB68 and TB60 compatible
      extensions. - I will upload the remaining later<br>
      - A "basic, focused" search that can target the source library,
      issues and gists <br>
      - Use of the issue system for posting solutions, links, code
      snippets et cetera related to the library<br>
        or relevant external links<br>
      - Navigation to both the metadata and source from the extension
      list reports<br>
      <br>
      The library already houses over one gigabyte of data, over 20k
      files (not yet including the bulk of source code)<br>
      , however, this is new and evolving.<br>
      <br>
      I believe it is already useful and sufficiently populated  for the
      most likely purpose is currently.<br>
      Here are some brief notes on usage which I will augment as this
      progresses.<br>
      <br>
      The xpiLib Repository/Library: <br>
      <br>
      - Contained within the ThunderKdB GitHub repository<br>
      - xpiLib is implemented as a hybrid repository including the
      source code tree as well as GH pages<br>
        to accomplish the search as well as a nicer HTML UI<br>
      - Navigation is pretty basic and needs to be improved, the main
      entry point is the index<br>
      for the GitHub pages side:<br>
      <br>
              <a class="moz-txt-link-freetext" href="https://cleidigh.github.io/ThunderKdB/">https://cleidigh.github.io/ThunderKdB/</a><br>
      <br>
      <br>
      - This gets you to the reports, xpiLib search, links to the
      repository directly and eventually other useful links<br>
      - Clicking any extension name on a report will take you to a
      details page which is still work in progress<br>
      - The details page is where you eventually will be able to get all
      metadata, including all old version information<br>
        currently it gives you pointers to the source tree.<br>
      - The source code trees are currently organized in a fashion to
      allow searching within three sets:<br>
         xall - top of the tree for extensions<br>
         x68 - all extensions that are 68 compatible <br>
         x60 - all extensions that are 60 compatible BUT NOT 68
      compatible<br>
         xOther - <60 compatible extensions (metadata only , source
      to be uploaded soon)<br>
      - The organization set up to specifically deal with how you can
      GitHub searches done on repository code<br>
      <br>
      Search Notes:<br>
      <br>
      - I am shamelessly letting GitHub do the hard work, therefore I
      have to follow with rules<br>
      - The current xpiLib search uses GitHub's URL search, NOT THE REST
      api. <br>
      - This means that there are some differences in capability since
      GH searches and renders the results<br>
      - Some specific limitations are:<br>
          - The search topic(s) ignores almost all special characters
      (this is crazy but true)<br>
          - Quoting GitHub:<br>
          <br>
          "You can't use the following wildcard characters as part of
      your search query:<br>
             . , : ; / \ ` ' " = * ! ? # $ & + ^ | ~ < > ( ) {
      } [ ]. <br>
           The search will simply ignore these symbols."<br>
      <br>
          - Multiple word topics can be used enclosed in quotation
      marks, unfortunately it does not solve the above. (currently this
      is the best way to reduce results)<br>
          - I have not yet found the ability to define the number of
      results <br>
          - I have also not found a way to change the number of source
      code lines returned<br>
          - Some of the above could be fixed by using the actual API,
      but this would require doing all the results rendering <br>
      <br>
      - Search Filters/Pointers:<br>
          - Use the file filters to reduce results and increase
      specificity<br>
          - When searching for an XUL element, e.g. <datepicker>
      use just 'datepicker' (excluding quotes)<br>
            AND filter for XUL files only that help since you cannot
      rely on the < or > to be included<br>
          - I have filters for markup files, JavaScript files and a few
      others.  Additional file type suggestions welcome.<br>
          - You can also look for codes specifically within the 60 or 68
      trees or everything<br>
          - Another important note is that the search will also include
      issues and ultimately gists<br>
            this is where share developer information in the library
      really synchronize<br>
            It is importantly powerful in the sense that anyone can
      create an issue that provides guidance<br>
            as well as pointers to Code or information and these issues
      will be included in searches that are relevant.<br>
          - Once search results are returned, one can dive into the
      particular files or tree to get the full picture<br>
      <br>
      The issues and topic points:<br>
      <br>
       - Issues are viewed or created the core repository:<br>
      <br>
       The core repository link (not the GH pages root);<br>
      <br>
              <a class="moz-txt-link-freetext" href="https://github.com/cleidigh/ThunderKdB">https://github.com/cleidigh/ThunderKdB</a><br>
      <br>
       - All developers can submit "issues" that get tagged for relevant
      topics that can point to <br>
         a particular extension solution, external content, gists et
      cetera<br>
       - This is really where the power of the library comes in,
      community participation, easy pointers to code<br>
       - The idea is to augment the forums which are good places to ask
      questions, xpiLib is a place to do searches<br>
         and ideally memorialize people solutions.  The utility will be
      proportional to community participation.<br>
       - The issue for datepicker is something I made from my experience
      looking to replace the deprecated date picker<br>
         it also includes references to how SendLater from Jonathan K.
      used the component from lightning.<br>
       - There is another example for the deprecation of listbox -
      something both myself and Klaus have faced<br>
      <br>
      Conclusion:<br>
      <br>
      - it's a work in progress, focused on the extension developer
      community<br>
      - I have lots of ideas to extend, and I am perfectly willing to do
      so if the community really finds this useful<br>
      - Suggestions are best done within the repository issues itself
      unless people want a wider discussion on the forums<br>
      - Thanks for suggestions from the few people who've taken a look
      at it already.<br>
      <br>
      I realize this is just one tool in the tool chest, I am really
      hoping it becomes more useful with participation!<br>
      <br>
      Saludos,<br>
      Christopher<br>
      <br>
    </p>
  </body>
</html>