Fedora Core Customizer

This is a new project to write a new software to enhance and customize Fedora Core X systems.

Thursday, August 04, 2005

Discussion No. 1

This is a brief summary of a discussion Sag and I had about the rough outline of the project.

What could be the possible features of the software?
* User should get a fully configured system to suit all needs without any searching/compiling/installing/etc.
* User should be able to easily locate and install more features on demand almost automatically.

How can we go about doing it?
* Finding out the basic config of FC2/3/4.
* Finding what all packages will be required.
* Writing/editing required scripts automatically.

One more thing or feature required is.."finding the current config and installing a new capability"

When a person installs FCX, he install some of the packages in the complete setup of FCX. Then he updates, installs, removes packages from the system. This config which is thus generated is the input to our software.

* We need to get this input.
* We need to ask the user what new thing he wants.
* We need to figure out what packages will be required.
* Is it even possible to get the new thing or is it practically unlikely?
* Where will we get the packages from?
* How to guarantee that we get the latest versions?
* We need to configure some of the scripts to set up a working environment for the software.
* We need to provide a link in the software to access that new "capability"

RPM, YUM, APT are a few software which have some of the capabilities listed above. We can use these softwares/APIs to
* calculate dependencies
* fetch the required packages
* install them

For Average Joe, the domain of thinking is like...
[MP3 player] [Video player] [Browser] [Messenger]

and for us it is...
[xmms] [configure aRts to run on startup] [xmms-mp3] [xmms-arts]
[if aRts is not running, tell xmms to use alsa] [install a good xmms skin]

So, the Average Joe domain will be called "capabilities" and to "enable" a capability, we need to perform tasks of..
* installing packages
* configuring the general scripts
* run time checking (like aRts running or not?)

Run time checking is a feature we are capable of providing because we said, our software is also an "application launcher", so all the softwares average joe requires, he can run by clicking on an icon in our software, and so we can run some scripts prior to loading the specified application.

For Average Joe, the software will be..
* Installed on the system.
* Like a control panel.
* Everything that Joe ever wanted.

He doesn't understand many alternatives available and when we ask...
"You wanna use Firefox or Konqueror or Mozilla?", he says, Linux sucks, lets switch to Windows.
So, another feature would be
* Enforcing some standard. (Now if Average Joe says "Browser", then "firefox" is what we understand, none other)

How will the software be framed for providing necessary functionality for the above mentioned task?
It will definitely be in a CDROM. Now, we need to know that the world is changing fast. So, to provide Average Joe the capability to move with the world, the software must not be hardcoded and should change according to need.

For this, the software will have three parts(as of now, as in what we discussed yesterday night).

* Software.
* Capabilities Database.
* Sources Database.

Software is nothing but code, hehe.

Capabilities Database will be a database mapping capabilities like [Playing MP3] to [all tasks of installing the correct software and running/editing/creating suitable scripts]. The CDROM will provide a database for some of the basic capabilities required in general. The database could be extended or changed by downloading more information from a internet server or another CDROM or disk. Thus, this will be very dynamic and configurable.

You will argue, why do we need it?
I think, AJ wants Browser, MP3, Video and Messenger. He got a new cam! He wants to capture videos! I didn't expect that. So, he can connect to a server "dedicated to providing capability info" (just like YUM repos) and try to look for a tuple related to information about "Video Capturing". Thus, enhancing the usage of the software altogether.

This would require on the part of the "enligtened people" to contribute in making such repositories of "capabilities", and also make sure that "only the best" software for that job is listed to be installed, because as we said, AJ doesn't like options.

The third part, which is somewhat similar to YUM is "Sources Database". This will essentially contain information about what all packages can be fetched from which places, etc. The CDROM could contain information about which package in the FCX setup lies in which CDROM of FCX. Also, it could contain a small database about the packages which are in the CDROM we provide to enable some minimal requirements.

Most of the time, the sources database will not strictly require downloading a package from the FCX setup CDROM. Our software could as well download it from the internet mirrors of Redhat. Similarly, softwares not in the basic setup could be downloaded from YUM repositories and other places.

Thus, a major part will also include "updating the Databases" through the internet or will additional CDROMs which we release.

Also, when the software is installed initially, it should automatically install and configure some of the things to bring it to some prescribed configuration. A lot of times our software needs to go for alternatives, like, I don't have KDE, so even if our software knows "best MP3 player is Amarok", because its not possible to install it, we select the "second best" as XMMS. Thus, the capabilities database should somehow contain a priority order of all the possible alternatives to a "capability".

For eg. I look for MP3 Player, the software shows, Amarok (a maybe a screenshot), XMMS, Rhythmbox, etc. along with the "goodness" and the cost "amount of data in MBs to be downloaded, etc". Then Average Joe can choose, or our software can autochoose based on some AI. We can keep this option in the preferences as to "auto Choose" or "allow the user to choose".

There can be modifications and a lot more people need to pour in.
http://www.linuxquestions.org/questions/showthread.php?s=&threadid=349723 is a link to the forum where you can post your comments and views and ideas. We can also work as a team in the development process.


Post a Comment

<< Home