I addded some new requiremens to your list. They are marked with (*). Subrequirements and indents and marked with [*], [**], [***]
Requirements
- New external Python Addon called "FreeCAD Component Library" (or similar)
- No huge up-front library download
- Only download the components you need, but batching enabled (e.g. "all doors", "all fasteners", etc.)
[**] single file selection with metadata in portable way.
[**] substructure selection with metadata in a portable way
[**] saving to local temp library storage (see config). To load to a local ibrary would require to tell target path per file or per folder
[**] also see filtering features, see below. - Get component info/thumbnail image before downloading
[**] optional (bandwith bottle neck) Metadata display may be more useful - (*)The tool must show file metadata.
[**] e.g.: key design parameters (green, 3inx4in, manufacturer, material ), quality value, format, when STP: structure edited?, colorized?. When FCSTD. Parametric? - (*)The tool has a FreeCAD configuration page
[**] The root path of a local library can be defined. There must be a standard default path for each platform (FPA decision)
[**] The root path of a temp download location can be defined. Here downloaded files are stored before the user decides which one are saved to the local library.
[**] A button allows to create metadata into the defined local file structure. pressing again will re-create the metadata to current format
[**] Default settings can be configured, where useful separate for internet and local mode (example Use Thumbnails) - FreeCAD user interface (see BOLTSFC for a possible example)
- Support private local/remote collections
- Support user-specified (possibly private) part repos
- Individual (per-Component) licensing, with tool-assisted attribution (as needed)
- Easily interface to request addition to official library, from within Addon
[**] It must be able to remain open in parallel to using FreeCAD (non-modal). Its a separate window that could be moved e.g. to another screen
[**] It must provide picking from lists
[**] It must allow narrowing down lists by filters. Multiple filters.
[**] It must allow quickly switching into different domains with no click orgies: pick a seal ring, then a axis rod, then a bearing, then a screw.
[**] It must be able to copy a library file to you current project into a configurable local path
[**] It should have an internet mode.
[***] That mode is optimized for efficiently browsing the Freecad Library for files that could be used "Collecting"
[***] It should use local storage to cache data to minimze network load
[***] It should store all items local in a "portable" mode
[***] It should support offline storage (e.g. on a central file server) that is protected from direct internet access. Thus it should allow to store all downloaded data to a medium (USB disk) to transfer to offline target
[***] Uploading a part should be designed with expecting process changes, e.g a screening process
[***] There should be a difference if a user uploads a change to his own file than a file from someone else.
[**] It should have a local mode
[***] That mode is optimized for efficiently browsing a local DB with different structure from the FreeCAD online Library for files to add to the project "Selecting"
[***] Selection can be either as link or copy (configuable)
[***] The mode only works with a local (PC local or network local) library. - The GUI provides
[**] File browsing, Thumbnails can be enabled/disabled
[**] Localtion filters: by adding current location to a filter
[**] Metadata filters: e.g. manufacturer.
[**] Filename filters: either "contains" or "contains not". Optionally case match
[**] Seach function: search global, search current subtree. Search history
[**] Last locations/last File display, optional
[**] Settings are stored in the project file. My filters are back after restart.
[**] 3D view. A simple interactive 3D window allows to inspect the selected part, rotate and zoom it. Wireframe on/off.
[**] A measurement tool is available in 3D view. It can measure Distances (otho, direct), angles and radii/diamters
[**] With no internet access the tool is fully functional,just the internet mode is not available. - Support component versioning
- Easy for non-developer to maintain actual parts libraries
[**] Editing metadata is via a dialog that is prepared for the metadata structure changing over time.
[**] Editing of metadata should be configurable locked, e.g. in a company library files must not be changed by all. - Optional check for updated components
- Optional notice of new components added
[**] The tool in local mode should be able to write a file list based on the current filter/search settings.
[**] Also a list for the current project should be possible.
[**] This list can be used to make an update check in the online mode. - Public API so other parts of FreeCAD can easily open dialog to grab parts
Library Metadata requirements
- Most/all of current "Parts Library" must be migrated to the new "Component Library" (metadata created as necessary)
- Files must have a quality value. A file "bearing.FCSTD" is totally useless as filename. "generic_BallBearing_23x23x5_zz.FSTD"
is much better. The quality value must lead to a selection process to remove all but one file for each item but this is "perfect". - metadata files should use a format that can be user edited. That a requirement for local libraries when
editing metadata with the tool is too tedious because many similar files are added manually (much qucker)
Imho XML is among the most unsuited formats for user editable metadata. - Version control should be made as simple as possible. i.e. string editing assuring you can count only up. Should the
DB or tool really support browsing the history of a file using gits API? Should I be able to download version
12.12.12 via the tool? Or should the tool show you a 3D side_by_side view of "yours" with "theirs"? Thats
very nice to have but I think there are tons of features in this tool that are a lot easier to do and more
useful in day-to-day life.