Labs/Extensions2/Notes: Difference between revisions

Jump to navigation Jump to search
no edit summary
(New page: = 1-clickweather = == general == * toolbar extension * uses a JS import function to namespace javascript included from files * uses some complicated object heir...)
 
No edit summary
Line 1: Line 1:
= 1-clickweather =
= 1-clickweather =
    == general ==
== general ==
        * toolbar extension
* toolbar extension
        * uses a JS import function to namespace javascript included from files
* uses a JS import function to namespace javascript included from files
        * uses some complicated object heirarchies to manage prefs / config
* uses some complicated object heirarchies to manage prefs / config


    == prefs ==
== prefs ==
        * uses it's own system to manage prefs
* uses it's own system to manage prefs
            - uses observer pattern to get updates (as opposed to listenting to the prefs observers)
** uses observer pattern to get updates (as opposed to listenting to the prefs observers)
           
    == overlays ==
        * basic statusbar overlay
            - popupset


        * uses windows for config/about/etc.
== overlays ==
* basic statusbar overlay
** popupset


    == state ==
* uses windows for config/about/etc.
        * capture in saved xml files


    == ajax ==
== state ==
        * wrote their own AJAX library to handle simple async requests
* capture in saved xml files
 
== ajax ==
* wrote their own AJAX library to handle simple async requests


= adblock plus =
= adblock plus =
    == general ==
== general ==
        * content filter
* content filter
        * localized
* localized


    == prefs ==
== prefs ==
        * uses the built in prefs tools and defaults
* uses the built in prefs tools and defaults


    == overlays ==
== overlays ==
        * dialog for about
* dialog for about
        * window for subscribing
* window for subscribing
        * sidebar
* sidebar


    == state ==
== state ==
        * stores filters as a line deliminted file in the profile
* stores filters as a line deliminted file in the profile


    == ajax ==
== ajax ==
        * handles it's own async calls with XMLHttpRequest() primitive
* handles it's own async calls with XMLHttpRequest() primitive
            - used for synchronizing subscriptions for filters
** used for synchronizing subscriptions for filters


= autopager =
= autopager =
    == general ==
== general ==
        * content enhancement
* content enhancement
        * has an interesting auto-xpath generator for grabbing the links it needs
* has an interesting auto-xpath generator for grabbing the links it needs


    == installation ==
== installation ==
        * handles install with file, lots of poking profile dir, registering content
* handles install with file, lots of poking profile dir, registering content
        * option to install to profile :)
* option to install to profile :)


    == prefs ==
== prefs ==
        * uses firefox supplied prefs framework
* uses firefox supplied prefs framework
        * has a system to dynamically add the prefs file to prevent some of the weirdness in initializing new defaults
* has a system to dynamically add the prefs file to prevent some of the weirdness in initializing new defaults


    == overlays ==
== overlays ==
        * extensive use of sidebar, mostly as a container for what appears to be "page" elements
* extensive use of sidebar, mostly as a container for what appears to be "page" elements
        * statusbar
* statusbar
        * does not use settings overlay, builds it's own UI for that
* does not use settings overlay, builds it's own UI for that
    == state ==
== state ==
        * installation is handled seperately from everything else, involve file manipulation etc.
* installation is handled seperately from everything else, involve file manipulation etc.


    == ajax ==
== ajax ==


= boost =
= boost =
    == general ==
== general ==
        * content enhancement
* content enhancement


    == prefs ==
== prefs ==
        * uses firefox supplied prefs framework
* uses firefox supplied prefs framework
        * does not use settings overlay, builds it's own UI for that
* does not use settings overlay, builds it's own UI for that
        * builds a library for dealing with prefs
* builds a library for dealing with prefs
            - wraps setting / getting
** wraps setting / getting
            - easily add / remove listeners
** easily add / remove listeners


    == overlays ==
== overlays ==
        * basic status bar overlay
* basic status bar overlay
        * prefs ui
* prefs ui


    == state ==
== state ==
    == ajax ==
== ajax ==
        * has it's own library, doing something weird involving chrome security contexts.
* has it's own library, doing something weird involving chrome security contexts.
            - /I/ think this is about adding in page elements that can be called into the chrome context, there's some work to sanitize content etc.
** /I/ think this is about adding in page elements that can be called into the chrome context, there's some work to sanitize content etc.


= colorfultabs =
= colorfultabs =
    == general ==
== general ==
        * ui enhancement
* ui enhancement


    == installation ==
== installation ==
        * handles install with file, lots of poking profile dir, registering content
* handles install with file, lots of poking profile dir, registering content


    == prefs ==
== prefs ==
        * uses firefox supplied prefs framework
* uses firefox supplied prefs framework
        * uses settings overlay
* uses settings overlay


    == overlays ==
== overlays ==
        * basic status bar overlay
* basic status bar overlay
        * uses settings overlay
* uses settings overlay


    == state ==
== state ==
    == ajax ==
== ajax ==
        * has it's own library, doing something weird involving chrome security contexts.
* has it's own library, doing something weird involving chrome security contexts.
            - /I/ think this is about adding in page elements that can be called into the chrome context, there's some work to sanitize content etc.
** /I/ think this is about adding in page elements that can be called into the chrome context, there's some work to sanitize content etc.


= ctrl-tab =
= ctrl-tab =
    == general ==
== general ==
        * ui enhancement
* ui enhancement


    == prefs ==
== prefs ==
        * uses firefox supplied prefs framework
* uses firefox supplied prefs framework


    == overlays ==
== overlays ==
        * only the main overlay used to create a popupset that holds "tab images"
* only the main overlay used to create a popupset that holds "tab images"


= download statusbar =
= download statusbar =
    == general ==
== general ==
        * statusbar
* statusbar
        * includes localization
* includes localization


    == prefs ==
== prefs ==
        * uses firefox supplied prefs framework
* uses firefox supplied prefs framework


    == overlays ==
== overlays ==
        * status bar overlay
* status bar overlay
        * builds it's own window for managing prefs
* builds it's own window for managing prefs


= downthemall =
= downthemall =
    == general ==
== general ==
        * functionality enhancement
* functionality enhancement
        * includes localization
* includes localization


    == installation ==
== installation ==
        * handles install with file, lots of poking profile dir, registering content
* handles install with file, lots of poking profile dir, registering content


    == prefs ==
== prefs ==
        * uses firefox supplied prefs framework
* uses firefox supplied prefs framework


    == overlays ==
== overlays ==
        * status bar overlay
* status bar overlay
        * builds it's own window for managing prefs
* builds it's own window for managing prefs


    == state ==
== state ==
    == ajax ==
== ajax ==


= fast_video_download =
= fast_video_download =
    == general ==
== general ==
        * toolbar extension
* toolbar extension
        * is localized
* is localized


    == installation ==
== installation ==
    == prefs ==
== prefs ==
        * uses the firefox supplied prefs framework
* uses the firefox supplied prefs framework
        * and makes use of the options ui
* and makes use of the options ui


    == overlays ==
== overlays ==
        * uses the options overlay
* uses the options overlay
    == state ==
== state ==
    == ajax ==
== ajax ==
        * uses raw XMLHTttpRequest object
* uses raw XMLHTttpRequest object


= febe =
= febe =
    == general ==
== general ==
        * functionality enhancement (provides backups of firefox profile)
* functionality enhancement (provides backups of firefox profile)
        * is localized
* is localized


    == installation ==
== installation ==
        * checks for first install and initializes
* checks for first install and initializes
        * double checks default prefs
* double checks default prefs
        * checks intialization of prefs to prevent exception calls
* checks intialization of prefs to prevent exception calls


    == prefs ==
== prefs ==
        * uses the firefox supplied prefs framework
* uses the firefox supplied prefs framework


    == overlays ==
== overlays ==
        * lots of use of dialog boxes to present data to users
* lots of use of dialog boxes to present data to users
            - including it's own error and alert and confirm boxes (odd)
** including it's own error and alert and confirm boxes (odd)
    == state ==
== state ==
    == ajax ==
== ajax ==


= fire_fm =
= fire_fm =
    == general ==
== general ==
        * toolbar extension
* toolbar extension
        * uses flash for playing files
* uses flash for playing files


    == installation ==
== installation ==
    == prefs ==
== prefs ==
        * uses the firefox pref framework
* uses the firefox pref framework
        * uses a comma delimited pref for complex data type
* uses a comma delimited pref for complex data type


    == overlays ==
== overlays ==
        * overlays many of the dialogs for it's own alerts/errors
* overlays many of the dialogs for it's own alerts/errors
        * toolbar overlay for main app
* toolbar overlay for main app
        * overlays options
* overlays options


    == state ==
== state ==
        * extensive use of pref framework for storing state
* extensive use of pref framework for storing state


    == ajax ==
== ajax ==
        * uses straight XMLHTTPrequest
* uses straight XMLHTTPrequest
    == logging ==
== logging ==
        * uses log4moz
* uses log4moz


= firebug =
= firebug =
    == general ==
== general ==
        * functionality enhancement (provides introspection)
* functionality enhancement (provides introspection)
        * localized
* localized


    == installation ==
== installation ==
    == prefs ==
== prefs ==
        * uses firefox prefs
* uses firefox prefs
    == overlays ==
== overlays ==
    == state ==
== state ==
    == ajax ==
== ajax ==
    == logging ==
== logging ==


= flashgot =
= flashgot =
    == general ==
== general ==
    == installation ==
== installation ==
    == prefs ==
== prefs ==
    == overlays ==
== overlays ==
    == state ==
== state ==
    == ajax ==
== ajax ==
    == logging ==
== logging ==


= greasemonkey =
= greasemonkey =
    == general ==
== general ==
        * uses components
* uses components
        * preloads common scripts into namespace using component
* preloads common scripts into namespace using component
        * has a whole animation library that SHOULD just be jquery
* has a whole animation library that SHOULD just be jquery
        * custom check for updates to greasemonkey
* custom check for updates to greasemonkey
        * uses rdf, loads all prefs up at start to get settings
* uses rdf, loads all prefs up at start to get settings
        * even uses rdf on it's side to check versions
* even uses rdf on it's side to check versions
        * domcontent loaded observer used, seems common everywhere, maybe do this for each extension by default
* domcontent loaded observer used, seems common everywhere, maybe do this for each extension by default
        * functions litter global namespace
* functions litter global namespace
        * custom pref manager
* custom pref manager
        * custom scripts for reading/writing local files
* custom scripts for reading/writing local files
        * from comments looks like code here is pre ff v 1.0.1
* from comments looks like code here is pre ff v 1.0.1
        * custom remote data requested (ajax shitz, xml in their case)
* custom remote data requested (ajax shitz, xml in their case)
        * 3 custom .xpt typelib files files
* 3 custom .xpt typelib files files
        * eventlistener abstraction layer
* eventlistener abstraction layer


= IE Tab =
= IE Tab =
    == general ==
== general ==


        * custom pref manager IN component
* custom pref manager IN component
        * other helper functions also in component
* other helper functions also in component
        * registers itself to namespace
* registers itself to namespace
        * uses "windows*registry*key" service, didn't know that existed
* uses "windows*registry*key" service, didn't know that existed
        * has own plugin DLL to link in ie
* has own plugin DLL to link in ie
        * also uses domloaded
* also uses domloaded
        * calls pref service again in other areas (doesn't use abstraction)
* calls pref service again in other areas (doesn't use abstraction)
        * 2nd pref abstraction!!  WTF
* 2nd pref abstraction!!  WTF
        * so it looks like NEITHER is a full abstraction layer, though some functions appear in both, many don't.  so one has a setboolpref while the other has a getboolpref
* so it looks like NEITHER is a full abstraction layer, though some functions appear in both, many don't.  so one has a setboolpref while the other has a getboolpref
        * eventlistener abstraction layer
* eventlistener abstraction layer


= ImageTweak =
= ImageTweak =


    == general ==
== general ==
        * obvious custom logger
* obvious custom logger
        * domloaded
* domloaded
        * custom get pref (not full manager)
* custom get pref (not full manager)


= Interclue =
= Interclue =


    == general ==
== general ==
        * uses RDF format internally
* uses RDF format internally
        * uses annoying register stylesheet methods (I had issues with this in Puff)
* uses annoying register stylesheet methods (I had issues with this in Puff)
        * domloaded
* domloaded
        * custom logging
* custom logging
        * custom pref manager
* custom pref manager
        * writes to local file
* writes to local file
        * should you be allowing tracking of all mouse movement?
* should you be allowing tracking of all mouse movement?
        * custom ajax class
* custom ajax class
        * has js linked to html files that are outside the namespace
* has js linked to html files that are outside the namespace
        * INTERESTING USE of window.opener (unfortunately utilizing iframes) to keep scope by copying interclue to window.interclue and using hte refence to hte window that opened current window
* INTERESTING USE of window.opener (unfortunately utilizing iframes) to keep scope by copying interclue to window.interclue and using hte refence to hte window that opened current window
        * lots of minified code (bastards), namely klib.js and loadclues.js
* lots of minified code (bastards), namely klib.js and loadclues.js
        * seems they minified most of cluecore
* seems they minified most of cluecore


= NoScript =
= NoScript =
    == general ==
== general ==
        * uses rdf for ui info
* uses rdf for ui info
        * various domloaded
* various domloaded
    == prefs ==
== prefs ==
        * crazy amount of preferences (~100 on install)
* crazy amount of preferences (~100 on install)
        * abstracts prefs interfaces
* abstracts prefs interfaces
    == overlays ==
== overlays ==
        * giant overlay file that uses the component with small other files that use it
* giant overlay file that uses the component with small other files that use it
    == components ==
== components ==
        * okay so tons of classes in here, essentially everything is in the component
* okay so tons of classes in here, essentially everything is in the component
        * uses component (8200 line file!!)
* uses component (8200 line file!!)
    == state ==
== state ==
        * uses file read/write
* uses file read/write


= StumbleUpon =
= StumbleUpon =
    == general ==
== general ==
        * most in one long file of many functions, tons of namespace polution
* most in one long file of many functions, tons of namespace polution
        * sets a TON of "global" variables using su_xxx
* sets a TON of "global" variables using su_xxx
        * listens to almost every event, including domloaded of course
* listens to almost every event, including domloaded of course


    == components ==
== components ==
        * uses component for helper functions, including logging and custom ajax
* uses component for helper functions, including logging and custom ajax
    == prefs ==  
== prefs ==  
        * uses prefs and the sqlite db
* uses prefs and the sqlite db
    == state ==
== state ==
        * has giant database abstraction layer
* has giant database abstraction layer
        * csv file to populate db and sql file to build db
* csv file to populate db and sql file to build db
    == overlays ==
== overlays ==
        * 20k stumbleuponoverlay file that is largely one dimensional with just functions
* 20k stumbleuponoverlay file that is largely one dimensional with just functions


= Tab Mix =
= Tab Mix =
    == general ==
== general ==
        * sets about 200 preferences
* sets about 200 preferences
        * doesn't seem to have a pref abstraction layer
* doesn't seem to have a pref abstraction layer
        * whole design seems to be very modular, lots of instances of code appearing to be ripe for abstraction but isnt because of scoping issues
* whole design seems to be very modular, lots of instances of code appearing to be ripe for abstraction but isnt because of scoping issues
        * has a "session manager" for storing current data that uses RDF, man is this painful
* has a "session manager" for storing current data that uses RDF, man is this painful


= Video Download Helper =
= Video Download Helper =
    == general ==
== general ==
        * uses built in xml parser loaded
* uses built in xml parser loaded
        * really impressive layout
* really impressive layout
            - seems the brunt is in several components which are called by individual pages, so no namespace issues
** seems the brunt is in several components which are called by individual pages, so no namespace issues
    == Ajax ==
== Ajax ==
        * custom ajax
* custom ajax


    == State ==
== State ==
        * uses rdf to store data
* uses rdf to store data


    == Pref ==
== Pref ==
        * custom pref layer
* custom pref layer


= Web Developer =
= Web Developer =
    == general ==
== general ==
        * has js and css files in content folder
* has js and css files in content folder
        * has an entire common folder with helpers to do almost everthing
* has an entire common folder with helpers to do almost everthing
            - including pref and history managers, stylesheet managers, cookies, files, ajax
** including pref and history managers, stylesheet managers, cookies, files, ajax


    == prefs ==
== prefs ==
        * preference abstraction functions
* preference abstraction functions


= WOT =
= WOT =
    == general ==
== general ==
        * interesting use of load/unload listeners in almost all js files.  they call core to start, including all the code, so i assume they just set these listeners to run checks when a new page loads.
* interesting use of load/unload listeners in almost all js files.  they call core to start, including all the code, so i assume they just set these listeners to run checks when a new page loads.
 
== Ajax ==
* custom ajax
* built in api to easily deal with requests (i assume to it's server about a pages reliability)
== Prefs ==
* uses a config.js to store a ton of constants used throughout the app
* uses a prefs abstraction
== Debuging ==


    == Ajax ==
* inline error handling just catching and dump()
        * custom ajax
== State ==
        * built in api to easily deal with requests (i assume to it's server about a pages reliability)
* looks like they are using prefs beyond how they should
    == Prefs ==
** ie storing delimited data (there stuff is a little confusing and im tired so im not 100% sure)
        * uses a config.js to store a ton of constants used throughout the app
        * uses a prefs abstraction
    == Debuging ==
   
        * inline error handling just catching and dump()
    == State ==
        * looks like they are using prefs beyond how they should
            - ie storing delimited data (there stuff is a little confusing and im tired so im not 100% sure)
577

edits

Navigation menu