Skip to content

About: ThinkUp Roadmap

anildash edited this page Mar 28, 2011 · 1 revision

Welcome to the ThinkUp roadmap!

This page details the current ThinkUp projects-in-progress. A project will appear here if it involves a series of steps. Individual next actions or TODOs as related to a project will go in the ThinkUp Issues list.

Join the project mailing list to propose additions to this list.

Ongoing Project: Creating New Data Source Plugins

Project: Simplify Installation and Upgrades

See notes on this in the Google Summer of Code Ideas Page.

Something to consider as we write the upgrading mechanisms and API: Semantic versioning

Project: Refine the plugin architecture

Immediate TODOs:

  • Build plugin options interface so that configuration comes out of (Issue #66)
  • Give plugins the ability to register tabs on the front end (Issue #103)
  • Offer database creation methods so that plugins can make new tables, store and retrieve data from them


To make TU truly multi-service and enable users to build their own features into it, it’s got to be pluggable. There should be allowances for both webapp plugins (data visualizations and custom listings, etc) as well as crawler plugins (new data sources like Facebook and Buzz).

As we build TU plugins, we will continue to refine the plugin architecture.

Here’s an update on the current state of the pluggable architecture:


  • All plugin files are now located in a single place, webapp/plugins/.
  • Each individual plugin has its own subfolder there, so the Twitter plugin is in webapp/plugins/twitter/.
  • Templates for rendering plugin-specific things on the frontend are in a templates subdirectory, ie, webapp/plugins/twitter/view/.
  • Classes the plugin requires should be in a lib subdirectory, ie, common/plugins/twitter/model/.
  • Right now the only webapp plugin that’s working is the configuration screen.


  • There are now tt_plugins and tt_plugin_options tables
  • By default, the Twitter plugin is inserted and set to active in the tt_plugins table.

Future plans:

ThinkUp plugins will work like WordPress: you drop a folder into the webapp/plugins/ directory, and it gets listed in the webapp as “Inactive.” Click a link to activate the plugin (insert its row into the db, set is_active to 1, run any relevant installation routines) and the crawler and webapp will execute the methods it registers from there on in.

See also: Plugins: Architecture Wishlist

Project: Expand Documentation

Two sections:

  • For developers – Developer guide in progress
    • PHPDocumentor class documentation (See Issue #98)
    • GitHub help and hints

Project: API

  • Output both JSON and RSS
  • Implement Twitter API?

Project: Code Upgrades

  • Develop code style guide for both PHP and Smarty/HTML/CSS
  • Complete regression tests
  • More sanity checks for when objects aren’t initialized, cover all cases

Project: Optimize SQL Queries

  • Using the sql.log to track slow queries, optimize queries to make selects as fast as possible.

Project: Localization

Make ThinkUp multi-language, possibly by using gettext() and Smarty. Relevant mailing list thread

Assorted New Features Already in the Issues List

  • Capture friends’ Twitter favorites/Facebook likes, add tab/sub-tab displaying those (Issue #20)
  • Lists (Issue #17)
    • Capture all the lists owner’s Twitter users are on, display this somehow (tag cloud?) The Facebook equivalent is groups
    • Sort replies by list membership (show me only replies by people on “my best friends” list or in a Facebook group)
  • Geo-location (Issue #21)
    • Capture geo tags on tweets when available, fuzz them to change them from a city block to a whole city
  • Hashtag/user tracking that’s not the account owner (Issue #23)
    • Start/stop capture of hashtagged tweets
    • Keyword search/saved searches, evaluate Sphinx, Solr, MongoDB as possibilities (Issue #16)
  • Add paging back to see more than just one page of posts (Issue #25)
  • Add the ability to remove an authorized account once it’s added (Issue #27)
Clone this wiki locally
You can’t perform that action at this time.