<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>