
Currently on my plate :
  * reset password and confirm account links
  * something to kill and restart server threads
  * update madyote pages

_________________________________________________

The Phases :
  * GET IT WORKING        Alpha 0
  * GET IT CORRECT        Alpha 1
  * GET IT FAST           Alpha 2
  * GET IT COMPREHENSIBLE BETA  1
  * GET IT PRETTY         BETA  2
  * ADD MORE FEATURES     BETA  3 / Release Candidate 1 

Currently
   Alpha 0 is complete
   Alpha 1 is nearing completion
   Alpha 2 is started in parallel
   Beta  1 has a few things started   

  * try/catch on the javscript side. dump the cache should there be exceptions that would warrent that.


Beta 3
 MORE FEATURES
  * Add object versioning? Store a new field in the database : version. Then _load can be used to check the version.
  * Security improvement : offer up proxies for other users' accounts. This makes sure that
     the client does not access account data it shouldn't
  * More yote tools
  * Add at least simple modperl support. Maybe use plack?
  * method to get version to client
  * add GRU module for searches against tag lists
  * yote objects that bridge to files an allow for editing.
  * For cron, a repeat_special - something like 'first tuesday of the month or something like that' ( can deal with this much later )
  * Something to kill and restart all server threads to refresh classes

Beta 2
 GET IT PRETTY
  * Fix page counter
 -* Make simple WIKI for updating Yote News
  * build page editor
  * make into daemon if possible. did not have much luck with this before
  * implement email validation request
  * implement a list_delete that removes from a specific index. (rename old list_delete to be remove_from )
  * control_table to work with the cool built in pagination that objects already have!
  * MongoIO pagination update - use different collection for large tables
  * for mongo db, maybe do a separate collection for list parts. When a list is too big, maybe its object nodes uses this other collection to split the list.
  x* caching of paginated lists ( wont do now )
  * Add timing alarm and max execute length parameter for configuration ( though use something other than sleep, a watchdog thread maybe

 js/perl IO
  * have methods sent just once per class
  * clean up widgets to make sure tag id fields are unique. prep_edit, for example, does not guarantee this
  * bug : undefined showing up for undefined me.prefix_classname

Beta 1
 GET IT COMPREHENSIBLE
  * review all methods and classes and remove those that no longer fit
 -* Indexing for lists always starts at 0...no jumping around with undefs? Agreed. Done and done.
 x* Cron - make scheduled_times a list of objects with 'time' and 'note' fields.
  * add comments for crons
  * Document all the widgets
 -* for control_table, show showing a-n of y numbering.
 -* Move MongoIO, etc, to an IO sub package
  * Create admin pages
 -* Unify unit tests for different stores
 -* add test only requirements to Build.PL
 -* include app class rather than app id in the IO
 -* Create yote admin page for
        -* viewing apps
        -* viewing user login objects
        -* cron admin
  * Create guest page to be hosted at madyote.com
 -* build yote homepage
  * reorganize package structure
  * Update how logging is done. Access log and error log like apache. Capture STDERR and collect to error log
  x* consider moving this list to github for tracking. ( this is always here. just need discipline to do it)

 Javascript Side
  * control table for scalar list entries ( javascript )
  * control_table sort

Alpha 2
 GET IT CORRECT

 Perl Side
 -* unit tests for new permissions models for Yote::Obj, Yote::UserObj, Yote::RootObj
 -* cron reclaculate not working for scheduled times. fix
 -* check to see if recycling needs the rest shut down. Actually fixed in the IO modules so that objects can only be recycled after being completely written to disk. 
    May need more testing of course.
 -* add tests for list_insert, list_delete, hash_insert, hash_delete ( done, needs test )
 -* make sure dirty is marked for list_insert, list_delete, hash_insert, hash_delete. (add a dirty_if_present?)
 -* make sure search and sort fields can both be given. update the tests for that.
  x* Permissions updates
        -x* Consider with the LOCK_MODE change below. Maybe the default should be make things as permissive as 
           possible and the user can override that permissivity, possibly with a set of tags or conditions to allow the thing to happen.
    	   with a double underscore as the reserved space for this __. The goal for this is ease of programming. Maybe the default is
    	   the object creator or root can edit it. CRUD permissions? Or use the subclassing below ( or even configuring with __ )
         x* configuration for LOCK_MODE
 -* Object Locking updates. The objects can be cooperatively locked between threads with the _lock method on the object. This requires that the user 
 -* new subclasses for Yote::Obj, one that allows anyone to update its fields, and the other that allows only root to - these should supplant creating some objects. may be made moot with the permissiveness above
 x* Exclusive cron. Means cron entry must have a unique name and that by default only one of that name may be run at once.
 x* changed permissions model so that YoteRoot checks if accounts are root. (won't do it now)
 -* complete test cases for hash pagination
 -* search_hash for all IO types, as well as tests for it ( just one sort )
 -* add sort for control table for Mongo and Mysql
 -* unify sort, search and pagination
 -* Move encrypt_pass to somewhere self, maybe? Moved to ObjProvider
 -* Make guest tokens required for running any non-root app command.
 -* Enable caching that pays attention to who has what.
 -* Make installer work for the common case of user having root. [ done, needs testing ]
 -* Have server respond to javascript permissions requests. ( this is now moot )
 x* update to not use backticks for cron ( since admin crons, it should have freedom )
 -* replace Crypt:Passwd with something better.


 Javascript Side
 -* test for pagination in unit_tests.html
 -* Control table : make sure that html tags it creates have appropriate classes. Use the new 'prefix_classname' variable
 -* update control table widget to use new paginate
  * UI - account change password and request password reset link [ note - may need configuration for mail. may not need anything fancy, just something to pipe to sendmail or telnet to port 25


Alpha 1
 GET IT WORKING

 -* add_to, remove_from, delete_key - Obj methods to allow for list or hash manipulation off of this object. Will work only for root if _ is the first letter
 -* count for searches! This is missing and makes control_table buggy.
 -* add option to yote_server to do a full reconfiguring of the server
 -* deadlock test cases
 -* cache clearning test cases
 ?x* refactor IO to include better back references. Object will have to take note. ( again, maybe not with the new paginate )
 -* Enable Cron
 -* Create program to reset root password
 -* Create program to reset whole config ( code for this is done as part of Yote.pm )
 -* installer so that other scripts work (rename them to yote_ )
 -* make sure installer script works universally ( well, windows fails due to threads :( )
