Project Knoware
SYNOPSIS
An interactive application which relies on user-volunteered system statistics and bug/behavior reports to identify patterns between the two using inductive logic. The goal is to help developers and normal users solve system-related issues easily and rapidly, while involving them in the community.
MOTIVATION
Imagine: An end to forum-based tech support that will revolutionize bug fixing and problem solving.
You open an application that networks you with dozens, hundreds, or thousands of people, but you don't know any of them. You're related by various pieces of your Linux System configuration -- hardware and software information you voluntarily contributed. You're also related because you've subscribed to similar Problems -- bugs or issues of unknown origin that you'd like to fix. Based on statistics and user input, Knoware has determined that one of your Problems is video card related. For example, data collection shows that only people who have ATI cards subscribe to a specific Problem, which may not appear to have any relation to graphics cards. As more users subscribe, it can be narrowed down to a specific generation of cards, or even a specific driver setting for that generation. Knoware analyzes thousands of System configurations and Problem subscriptions and, using inductive reasoning, finds the most likely causes of your Problems. Since Knoware's reach is limited by user input and knowledge of the system, it has also has connected you with the users necessary to communicate, tweak, and log the settings, and gives you the means necessary to post a solution once found. Then, everyone subscribed to that Problem (and even people Knoware has determined *probably do* have the Problem, based on their System) are notified of the solution, and all rejoice!
GOALS
Linux is a platform commonly plagued with hardware and configuration issues, and this is intimidating to many users. With so many possible system configurations, it's easy to see how this has become an issue. Linux can empower a user more than any other platform, but it often does just the opposite. Knoware unveils the root of complex problems and gives users a starting point for solving them. KDE already does a lot to make Linux viable for people -- Knoware expands upon this area. And where the programmed logic fails, human communication prevails. Knoware will:
Conceptually:
- Connect users who face similar issues based on their system configuration
- Use system and problem statistics with inductive logic to solve problems
- Track problems and notify users of solutions
Deliverables:
- A library for gathering system information and 'normalizing' its format to be useful as input to Knoware's classification system (might already exist)
- A library that uses classification hierarchy and statistics to recognize patterns (Bayes nets?) between problem areas and system configuration
- A database layer for managing statistics and user input (configuration records, keyworded problem descriptions, etc.)
- A client interface that unites the above with live 'data browsing' and communication geared towards solving the user's problems
PROJECT DETAILS
This is an ambitious project which relies heavily on user participation in order to succeed. Requirements and open issues include:
Server:
- A beefy server and well-managed database to handle all the statistics and input
- A web interface to the problem database and related statistics
Logic:
- Bayesian filtering/Bayes nets?[1]
- Intelligent logic system that can scrutinize data but also see the forest for the trees
- A threshold for decision-making so that initial data does not appear skewed. But inevitably, as the data set grows, the findings will become more accurate.
Client:
* A lightweight client so that users will not hesitate to participate * The client should promote interactive testing and communication of results by way of forum/live chat/wiki or something similar, community checklists, reports, etc. Most features in this area can be done through a web interface if it proves to be superior.Input:
- System information is gathered automatically through the client, using existing libraries if possible
- Possibly a small database of already-known issues/fixes for initial incentive to participate or proof that it works
- Security: Don't leak everyone's system information, and allow people to choose the granularity of information they provide
- Quality & validation of user input? Instructions to reproduce bugs, problem categorization, etc.
PROJECT SCHEDULE
Most of the development time will need to be spent on the logic used to narrow down problems based on the input statistics, but it is easy to imagine a simplistic version in place well before the end of August. Existing hardware detection libraries will save much time on an otherwise time-consuming but crucial area. The real test will come when the system is made available to a wider audience. This simplistic timeline shows a likely course of action:
- June:
Choose hardware/software detection libraries.
Database design. - July:
Research logic necessary to make the system work.
Existing libraries for this style of induction?
Pick a solution and expand on it. - August:
Make client software work with multiple users.
Simplistic interface?
Give users something, however minimal, to test with large user count.
Tweak! - [1] Bayes nets:
- http://www.norsys.com /tutorials/netica/nt_toc_A.htm
- [2] Case Western Reserve University:
- http://www.case.edu
http://www.eecs.case.edu
DEVELOPER BIO
I am a college senior earning a Computer Science degree at Case Western Reserve University[2] in Cleveland, Ohio. At school I have held positions such as programming TA and tutor, and I spent last summer doing Zope & Plone development for my school's CS department -- an experience which led me to fall in love with Python. I frequent developer newsgroups and contribute recipes to the ActiveState Cookbook and various projects such as CherryPy and SQLObject. I have developed in various languages and on all major platforms including Windows, Linux, Mac OS, and the web (in which I am the most interested). In my spare time I make web applications for my campus community, oversee a student-run creative project lab, do freelance graphic design, and follow the development of Python, Scheme, and Ruby.
FOOTNOTES
[ Edit ]