[Debtags-commits] [svn] r905 - libtagcoll1/trunk
Enrico Zini
debtags-commits@lists.alioth.debian.org
Sat, 18 Jun 2005 14:31:04 +0000
Author: enrico
Date: Sat Jun 18 14:31:03 2005
New Revision: 905
Added:
libtagcoll1/trunk/DONE
Removed:
libtagcoll1/trunk/TODO
Modified:
libtagcoll1/trunk/README
Log:
Restyled README and TODO
Modified: libtagcoll1/trunk/README
==============================================================================
--- libtagcoll1/trunk/README (original)
+++ libtagcoll1/trunk/README Sat Jun 18 14:31:03 2005
@@ -1,4 +1,8 @@
-README for libtagcoll
+README for libtagcoll1 1.0.3, still unreleased
+==============================================
+
+Functionality
+-------------
The package finally builds some API documentation using doxygen. Not much of
the source code has useful comments yets, but since doxygen support is in
@@ -22,7 +26,32 @@
I would like to involve library users in design discussions and API changes.
-Project resources:
+What is in this release
+-----------------------
+
+TDBFile now copy operations disabled, because it contains a TDB handle which is
+unsafe to copy (it leads to double closes and deallocs). I might consider, in
+the future, to implement proper copy operations if I find a need for it.
+
+
+Compiling from the subversion repository
+----------------------------------------
+
+Additionally to the build-dependencies, you need to install ``libtool`` and
+``automake1.9`::
+
+ apt-get install libtool automake1.9
+ ./autogen.sh
+ ./configure
+ make
+
+The library uses GNU Libtool. While this is very nice, it can be a pain when
+trying to debug a program. For that reason, compilation of shared libraries can
+be turned off by specifying the ``--disable-shared`` option to ``configure``.
+
+
+Resources
+---------
Website:
@@ -52,10 +81,135 @@
deb http://debtags.alioth.debian.org/debian unstable main
-The library uses GNU Libtool. While this is very nice, it can be a pain when
-trying to debug a program. For that reason, compilation of shared libraries can
-be turned off by specifying the `--disable-shared' option to `configure'.
+Further stages of the development
+---------------------------------
+
+Development will now proceed by:
+
+ * Trying to find better data structure and algorithms to improve the
+ efficiency of the various features provided by libdebtags1
+ * Possible restructurings to provide a cleaner API
+
+
+TODO-list items completed so far
+--------------------------------
+
+These are the TODO-list items completed so far::
+
+(older completed items are archived in the DONE file)
+
+
+TODO-list items being worked on
+-------------------------------
+
+These are the TODO-list items currently being worked on::
+
+ - Report a wishlist bug to libtool asking for a feature to generate PIC
+ libraries
+
+ - Document header files and main classes, with usage examples rather than long
+ explanations
+ - Add example code
+ - Add more tests
+
+
+Future TODO-list items
+----------------------
+
+These are the TODO-list items that are to be addressed in the future::
+
+ - Replace Consumers with functors:
+ class Collection
+ {
+ addUntagged(PACKAGE& p)
+ addTagged(PACKAGE& p, TAGS& t)
+ addUntaggedGroup(PACKAGES* p)
+ addTaggedGroup(PACKAGEs& p, TAGS& t)
+ }
+ class CollectionDispatcher
+ {
+ Collection& c;
+ public:
+ void operator() (PACKAGE& p) { c.addUntagged(p); }
+ void operator() (PACKAGE& p, TAGS& t) { c.addTagged(p, t); }
+ void operator() (PACKAGES& p) { c.addUntaggedGroup(p); }
+ void operator() (PACKAGES& pm TAGS& t) { c.addTaggedGroup(p, t); }
+ }
+ (maybe it doesn't make sense)
+
+ - Tagcoll1
+ - Classe Tag, smart pointer, con TagImpl virtuale
+ - Metodo TagImpl* Tag::impl impl(); da usare per chi ha bisogno di
+ accedere a funzioni speciali dell'impl
+ - Compare fatto esclusivamente per nome del tag, cosà da rendere
+ mescolabili Tag di tipo diverso
+ - Facet e quant'altro di conseguenza
+ - Tag rappresentato con un'URL: Organization/facet/tag o
+ Organization/Facet#tag
+
+ - Hierarchization algorithms:
+ If mergeequivalent is called on a child node of a tree node, the
+ resulted hiearchy might come out with a single root node. In that
+ case, the node previously selected is equivalent to the root.
+ Option 1: take the parent into account when merging
+ Option 2: self-expand lone child nodes
+
+ - Implement cleanup of the tagcoll with noise filtering (removing tags with
+ cardinality less than a given threshold) and merging of equivalent tags.
+ Implement as a method of TagCollection, that gives the new, cleaned
+ collection.
+
+ - Another optimization would be to remove intermediate hierarchy nodes wich
+ contain a single child node and no elements.
+
+ It could just be implemented by merging tagsets with cardinality under a
+ given threshold into the nearest, bigger one. Like filtering
+ insignificant or "noise" tag data before building the structure.
+
+ The optimization must be kept optional, because it induces a loss of tag
+ informations if the resulting tagged collection is used as the only way
+ to store the results like with tagbk
+
+ - Document the tree-cleaning features:
+ - noise reduction
+ - merging of equivalent items
+ - flattenThreshold
+
+ - Implications can be seen as a simple form of derived tags: handling them in
+ that way could avoid the need of multiple
+ expand-implications/add-derived-tags/expand-implications cycles
+
+
+
+Discarded TODO-list items
+-------------------------
+
+These TODO-list items have been discarded::
+
+ = Use a generic class instead of Tag
+ - Must be comparable
+ - Must have a name() method
+ - Must have a fullname() method
+ - Must have a facet() method
+ - Must be assignable
+ - Must be possible to construct the "invalid" entry using the
+ constructor with no parameters
+ (doesn't make sense anymore: Tag has been moved to libdebtags1)
+ = Use a generic class instead of Facet
+ - Must be comparable
+ - Must have a name() method
+ - Must have a tags() method
+ - Must be assignable
+ - Must be possible to construct the "invalid" entry using the
+ constructor with no parameters
+ (doesn't make sense anymore: Facet has been moved to libdebtags1)
+ = Use a generic class instead of Vocabulary
+ - Must have a getFacet(const string& name) method
+ - Must have a getTag(const string& name) method
+ (doesn't make sense anymore: Vocabulary has been moved to libdebtags1)
+
+Author
+------
----
Enrico Zini <enrico@debian.org>