Skip to content

Latest commit

 

History

History
434 lines (431 loc) · 13.4 KB

project-overview.org

File metadata and controls

434 lines (431 loc) · 13.4 KB

Most important concept: OrgMode web interface Second import concept: get the hacker base (software development?)

About this file

Why (Purpose)

  • Current systems are not accessible everywhere
  • Org-mode is a great conceptual system
    • Simple system
    • Flexible enough to accomodate lots of complexity
    • Headings (** style) are a nice organizational structure
    • Very steep learning curve
    • Keyboard shortcuts should be optional
  • Want to get benefits of org-mode without the need to learn org-mode
  • Let individuals run their own cloud if desired
  • Find a way to determine what stuff is
    • Then find a way to turn that into income

What (Outcome) - It should (be)…

  • Open source
  • Modular
  • Flexible
    • Allow quick addition of plugins for different inbox sources
  • Intuitive
  • Accessible without an internet connection
  • Cross platform
    • Server
    • Clients
  • Optimized for GTD use
    • Able to handle content that is not GTD structured
  • Valuable from day 0
  • Provide all currently actionable items
  • Hide currently non-actionable items
  • Scalable to enterprise level needs
  • Able to merge offline changes into database
    • Include some form of version control
  • Unify as many inboxes as possible
  • Provide tutorials for how to maximize value
    • Not require tutorials to be useable
  • An interface with others, even if they’re not using this application

Angular components

Outline twisty states

ConditionsMPTT condition# of statesVisual cue
Children and detailslft - rght > 13100% opacity
No children, detailslft - rght == 1250% opacity

Development priorities

Things I need for my own use

  • Week long agendas
  • Built-in calendar
    • Time-specific vs day-specific
  • Penetration testing
  • IMAP/POP import plugin
  • GMail import plugin
  • Google calendar import plugin
  • Google voice import plugin

Things that others will need

  • Google tasks import plugin (Emily)

New messaging protocol

  • My inbox is not messages but a disorganized todo list
  • New protocol should be independent of OrgWolf application
  • Messages should include TODO information
    • Current e-mail format (SMTP?) with extra pieces?
      • Find out what the current format of SMTP messages is
    • New format entirely?
  • The sender should not have to worry whether the recipient has this capability
    • Fail to standard e-mail
  • Messaging could use non-email forms for some recipients
    • eg. a friend only uses SMS so send a text instead
    • Once set, this should be transparent to the sender
  • The recipient should have total control over the status, deadline, etc.
    • The sender can ask for:
      • Status (NEXT, DFRD, HARD)
      • Deadline
      • Scheduled date (for deferred)
    • Regardless of status is shows up as “in” for approval
    • Recipient can then change parameters as necessary
      • Should this be communicated back to the sender?
  • The standard defines some basic TODO states
    • Can individual implementations add their own?
    • Would this lead to fragmentation problems?
  • Add sent messages to [waiting for] list
  • Allow for encryption and signing (GPG?)
    • Required by individual implementation?
  • Sender can ask for return receipt?
    • Sender can ask to be kept informed of all decisions/changes?
  • Group messages (similar to Facebook messenger)
  • Encryption

Mobile apps/Usage portals

Web application (django)

  • Update mechanism
  • Keyboard shortcuts
  • Setup wizard for server app
  • Quick add tasks
    • How to implement without javascript?

Mobile clients

  • Barcode scanner?
    • I need to buy one of these [snap]
  • What transfer protocol to use
    • XML/JSON/etc
    • SSH/SSL/etc
    • Encryption
  • Sync dismissals across devices
  • Dictate to inbox or todo list
    • Try and transcribe voice dictations
  • Keep local copy for offline use
    • How should we manage conlicting changes?
  • Capture voicemail in inbox
  • Make it easy to capture ad-hoc ideas
  • Alarms with varying intensity)
    • Notification
    • Wake-up alarm
    • System checks morning alarm against daily calendar
  • Document scanning
    • Send image to inbox
    • Can be cropped/stored later
    • System can try and predict cropping while item sits in inbox
  • Take notes after a call
    • New NEXT items
    • New DFRD items
  • RESTfull

Android app

  • Google Cloud Message
  • Capture widget

iOS app

  • Apple Push Notification

Blackberry app

Windows Phone

Palm Pilot

Desktop client

  • One click add to shopping lists
  • Polished installers
    • “click and go”
  • System tray pop-up
    • NEXT list?
    • Daily agenda?
  • Data available offline
    • eg. on an airplane
  • Guake style overlay dialog

chrome/FF/Opera extensions

  • Pin things for later reading (similar to Pocket)

Embedded clients

  • Smart notepad
  • Wall-mounted touchscreen
  • In-vehicle device
    • Voice dictation?
    • How do we connect to server?
    • Simply tell mobile client you’re in the car?

Communication formats

  • JSON
  • XML
  • Plain text
  • HTML

Communication protocols

  • SSH
  • SSL

Modes and Mindsets

  • A person needs different tools depending on how she’s thinking
  • These may correspond to different Django templates
    • Hide the un-used items or just ghost them
  • How does she switch modes?
  • Reminders to visit modes (like Org Mode)

Org Mode

  • Create the structures for the rest of this
  • Equivalent to writing a .emacs file

Background Mode

  • I’m focused on something else but make sure nothing blows up
  • eg. Emily is teaching

Open/creative Mode

  • Creative thinking
  • Minimal distraction

Process Mode

  • Sort through inbox
  • Decide what “stuff” is

Do Mode

  • Work through items on a to-do list

Weekly-Review Mode

  • Tied in to weekly review workflow?

Django Models

  • Internationalization
  • django caching
  • Org-mode markup
    • bold
    • italic
    • underlined
    • code
    • verbatim
    • strikethrough
  • Remind about TV shows
  • Video to watch
  • Material could be part of more than 1 project
  • Version control
  • Project categories?
    • eg. workout calendar
    • or is this just a project
  • Attachments

GTD

  • how to handle errands, as tool or as location?
  • contexts as a sequence of if…then statements
    • eg. if my students are not in the room then I can do these things
    • could be handled with tags?
  • [ ] validate this model

[15/15] class Node:

  • [X] get_children()
  • [X] scope = ManyToMany(Scope)
  • [X] parent
    • a project is a Node with parent=root
    • material could be part of more than 1 project
  • what-is-it criteria
  • [X] todo_state = ForeignKey(TodoState)
  • scheduling criteria
  • [X] deadline
  • [X] closed_date
  • [X] scheduled
  • [X] repeating (both value and unit)
    • [X] repeat_strict (repeat from when completed or when scheduled)
  • selection criteria
  • [X] tag_string
  • [X] mental_energy (high/low)
  • [X] priority (A/B/C)
  • [X] time_needed (high/low)
  • tools, locations, and people are all tags
  • [X] add_context_item()
  • [X] rm_context_item()
  • [X] get_context_items()

[4/4] class Tag:

  • [X] display
  • [X] value
  • [X] owner
    • No owner means it’s a built-in tag
  • [X] public

[0/0] class Tool(Tag):

[3/3] class Location(Tag):

  • [X] GPS_info
  • [X] tools_available
  • [X] tools_unavailable

[4/4] class Contact(Tag):

  • [X] f_name
  • [X] l_name
  • (display)
    • Automagically determine from f_name + l_name
  • (tag_string)
  • (owner)
  • [X] auth.user
  • [X] messaging.contact

[4/4] class TodoState:

  • make distinction between someday and maybe?
  • [X] actionable = BooleanField(default=True)
  • [X] done
  • [X] abbreviation = CharField()
  • [X] display_text = CharField()

[3/3] class Scope:

  • [X] owner
  • [X] display
  • [X] public

[7/7] class Context:

  • [X] tools_available
  • [X] tools_unavailable
  • [X] locations_available
  • [X] locations_unavailable
  • [X] people_available
  • [X] people_unavailable
  • [X] get_actions_list

[3/3] class Project:

  • [X] title
  • [X] owner
  • [X] other_users
  • (description will be first child node)

[/] class Priority

  • priority_value (0-100, 0 is highest)
  • owner

Users

  • dones = ManyToMany(GTD.TodoState)
  • todos = ManyToMany(GTD.TodoState)

Workflows

Weekly review workflow

Django Views

Todo lists

Agenda views

Django Templates

Gate One SSH in browser?

Javascript outline

Archived and children status

defaultshow_all
if heading has…calls open()opacitycalls open()opacity
this.populated = truetextYes100Yes100
has_childrenNo30Yes100
has_unarchived_childrenYes100Yes100
noneNo0No0
this.populated = falsetextYes100Yes100
has_childrenYes60Yes100
noneNo0No0

Combined Lab projects

  • Markdown
  • Merge projects (and related contents)
  • Attachments
  • Different people can change status on same project?
  • Multiple people assigned to a project

Plugins

  • OAuth

Source of “in”

  • E-mail
    • GMail
    • Yahoo mail
    • Any IMAP/POP inbox
    • How to handle labels/folders
  • Facebook
    • Especially invitations
  • Calendars
    • Lotus Notes
    • Google calendar
  • Google tasks
  • Text messaging
    • Google voice
    • Generic text messaging
  • Voicemail
    • Google voice
  • Fax
  • Twitter
  • News aggregators
    • Google reader
    • Reddit
    • Tumblr
  • Browser bookmarks
  • LinkedIn

Outlets for “out”

  • E-mail
    • IMAP/POP folders
    • Directly send mail with SMTP
  • Voice calls connected directly
    • Google voice
  • People
    • Google contacts
  • Calendars
    • Lotus Notes
  • Google tasks
    • Allow use as list manager?
  • Text messaging
    • Google voice
    • Generic text messaging
  • Content to consume
    • Cable providers
    • Netflix
  • Fax
  • Postal address lookup
  • LinkedIn

Org-mode input/output

  • Per-user directories to hold org-mode files
  • Modify (‘write-file) lisp command to save to OrgWolf API
    • Use .emacs file?
  • Read/write using named pipes
  • iNotify for reading changed org-mode files
  • Custom .emacs files for SSH access

Reference Material

  • Key is to make sure there’s action in it!!
  • Version control
  • Purging
  • Allow processing of images and notes off-line
  • Scan and send immediately to “in”
  • Cut/crop/modify scanned images later
  • How to handle storage requirements?
    • Freenet style distributed storage?
  • How to handle support material
  • Desktop clients for reference material
    • Similar to SparkleShare
    • MacOS
    • Windows
    • GNU/Linux
  • How to handle specific life-span material
    • Current info folder
    • Expiration dates

Addition User Info (User.profile)

  • Tutorial status
  • done States
  • Todo States
  • Strict or loose GTD enforcement
  • Track birthdays
    • Facebook?
    • As todo items?
  • User’s birthday

Domain Structure

  • Wordpress style
    • orgwolf.com –> Company and consulting
    • orgwolf.net –> Actual app interface
    • orgwolf.org –> FOSS download and bug tracking
  • Wolfmail.net?
  • orgmail.com?

Current products/competitors

  • David Allen meta app
  • Nozbe
  • doit.im
  • wunderlist
  • fetchnotes (#todo get groceries)
  • Trello
  • Omnifocus
  • workflowwy

GPG

  • Allow multiple forms of key signing
    • NFC?
  • Messaging protocol uses the web of trust for transmission
  • Built in web of trust
  • Unlock private key upon login
  • Re-lock with cookie for later use

Commercial integration

  • This piece should be proprietary
  • eg. “buy new mouse” shows sponsored links
  • Sell users information?
  • GTD consulting services
  • Premium accounts
  • Sell support
    • Enterprise customers
    • “We install on your hardware”
  • sell specialized capture devices
    • eg. electronic notepad

Interface

  • Automatically play music based on what I’m doing?
  • Minimalistic
  • Google style
  • Wordpress column style
  • Bootstrap for CSS
  • Other CSS libraries?
  • Javascript
    • JQuery
  • Different modes hide unwanted areas
  • Different modes refresh with only wanted areas
  • 3-way twisty for project view
    • Collapsed
    • Show summary
    • show details

Miscellaneous ideas

Use natural selection to create new regular expressions