"Flow" is an experiment, an exemplar, a framework, a tool, and a way of life. The core ideal of "Flow" is the alignment of the way you use your computer with the way your brain works.
Information today comes to us at blistering speeds. The current paradigm of organizing that information does not correlate very well with how our brain works. Thus we find a heavy reliance on complex indexing and search solutions. Consider the process of researching
information on the Internet. Starting with a search, you follow a few hits that look promising. Each of those might branch into a few more that provide more information. You might download a whitepaper or two for more in depth reading and possibly even purchase
By the end of your research, the information you've gathered is scattered across a dozen websites, multiple documents, and a book or two. The question now is how do you link them all together? Today, you make a bookmark for the websites, save the documents
in a folder, and put the book on your shelf. A week later, you come across a video interview discussing the topic you were researching along with a few articles in your RSS reader. Now your information is spread across several applications, in addition to
Even if you were able to organize the information so that it is easy to retrieve, you have lost the original context of the information. There are just a bunch of links and documents. What was it that led you from one to the next? Let's not talk about the
scenario where one line of research diverges into an entirely different topic. How do you organize that in a meaningful manner while again keeping the context of that information?
How can I link information that relates to multiple contexts in a meaningful manner? The article on high performance computing might also contain information relevant to application security. Do I make a copy of the article in two places? Use a shortcut? Or
just lose that connection altogether.
Finally, since no man is an island, what happens when you want to share your information among co-workers, family, or friends? Do you send emails, instant message, set up a website? How do you keep it all together?
As a knowledge worker, I have constantly run into this issue. How do I get my electronic information organized in a way that is more meaningful to me? I began to think, what if my information was organized in a manner similar to how my brain works. What if
I could provide a meaningful connection between pieces of information: emails, websites, RSS feeds, documents, tasks, events, appointments?
The Start of a Journey
While developing a piece of enterprise software, I had an epiphany. All actions within the application I was designing occur within a context. There is a stream that gets a user from the login page to any point within an application. Some websites symbolize
this stream through breadcrumbs (links to previous pages that the user navigated to get to the current page).
This realization made me think of how my interaction with my computer on a daily basis has a similar stream. Unfortunately, the computer doesn’t let me capture that stream so that I could review it later. I take advantage tricks within the applications I use
to set reminders that I should follow up on a particular piece of information. But once I leave that particular stream and move to something else, the context is lost.
I started fiddling around with a high level design of an application that can record your information streams for you. Each Stream consists of Nodes with each node linking to a piece of information (or Artifact). Rather than forcing a user to manage his Streams,
the application would track it for him and allow him to navigate, annotate, and extend the Stream. The application would also allow the user to connect two streams together by linking a node in one stream into another stream. This would allow the user to visualize
how his information connects easier than through a strict hierarchy of folders.
Shortly after I started designing this solution I read an
article on Infoq.com regarding Stream oriented applications
. This article both validated my thoughts and gave me conviction that it is something I should pursue. I’m not the only person with this issue.
The gap that I see in many of these offerings is that they deal with managing your stream after the fact. Or they collect them from other applications. The goal of Flow is to be the user’s information dashboard. Collecting the information you see, and organizing
the stream in a connected way. Flow will also allow you to share a stream with friends, family, or coworkers and allow them to contribute to the stream. You will also be able to enhance your Stream with similar streams from the NET. For instance, if I browse
to a blog post, I can look at other shared Flows that included that post as a node.
Flow will leverage Microsoft’s WPF platform for rich visualization of info streams. The built in Media, Text, animation, and layout of the framework make it perfect for displaying and manipulating multiple forms of information. With the cross platform capabilities
of the platform coming in Silverlight 2.0, Flow will be deployable to the Web and mobile devices. In addition, Flow will use Live Framework to provide the synchronization services necessary to move your information between devices and share it with others.
Imagine calling a client and logging the discussion with your cell phone and being able to follow up that call from your desktop with an info Stream built off the conversation. You share the flow with your team and collaborate to organize the information into
a presentation. Flow provides your information where you need it, when you need it.
Version 1 and beyond
Flow begins with a built in web browser, email client, RSS reader, and document editor. Other possible plug-ins include a twitter client, instant messaging, time tracking, and whatever else brings the user’s information where he needs it.
Additional information on starting a new project is available here:
Project Startup Guide