_UnPrEdictAbLe_

All that you need to find out about what am I upto.

Archive for the 'Fedora Core Customizer' Category


Another combo post :D

Posted by Anurag on 4 October, 2006

Its not fair. I write so less these days and most of the posts are just a sum total of the past days. Anyways, what can I do, lets continue the trend.

Tomorrow

Tomorrow is a busy day. I have to prepare a BTP presentation, a Advanced Graphics course presentation along with normal classes (read it as one class at 11). The upcoming matches from 7th of this month is to be recorded match-by-match on the tv.iiit.ac.in server. Yes!! The same old server which people enjoyed. We are working on the audio-video sync of the recording system these days. Hopefully after the series, the server will be open for the public.

This week

Well, I’ve to finish a lot of things this week. There is a pile of backlog for the Cognitive science course and a pending GPU assignment. We’ve set up a YUM REPOSITORY SERVER for IIIT. But mirroring 12 repositories for 6 platforms is a wastage of disk space and bandwidth. As a result, we are working on a better mechanism to create the repository. Sagar and I are jointly working on the project to come up with something good. Lets see what do we make.

This month

Diwali is ’scheduled’ this month. And its been 3 long months since I went home. I came to college on 7th of July 2006 and today is 4th of October 2006. I’m thinking to go home from 16th to 22nd of this month. As a result I’ve to skip a few classes and also finish the BTP final report beforehand, which is to be submitted on 24th of this month. Hopefully Jawahar sir will allow me to go home. I have to restart the work on the 4th semester 4 credit Mobile Blogging software project. The placements have come very near, and I need to have a clean marksheet.

Qt 4

Wow! This new thing is such a marvel. Initially I used to hate it, because I didn’t understand how to use it. But now I am familiar with the Ui namespace, resource files and other fundas, it feels good. For starters, let me tell you a good news. In Qt 3, if we created a Ui from Qt designer, and edited the header and sources generated using the uic command, the ui files used to overwrite them next time we needed to change something in Ui. Now, they’ve separated Ui component from the functionality code. As a result, the programmer can completely rely for Ui on Qt4 designer and on his code for the rest of it. Another good thing is resources. Now we can define the resources like images, text files used by the application we develop. All of them will get embedded inside the executable itself. As a result, we need to ship only single files instead of zip archives.

My experiments - Embedder

I was thinking about making something like ’setup.exe’ of windows. Generally linux setups come as tar archives or like rpm files. Almost nothing (except jdk setups, etc) come like a single setup file which handles everything. I wrote a command line utility as the first steps to generate something similar for linux. The command is called ‘createArchive’. This command takes two arguments, name of a new executable and a resource file. The resource file contains a list of files, both executable and ordinary. The command reads all files given in the resource file and finally creates an executable by the name as specified. This new executable contains all the files embedded in itself. Upon execution, this executable creates a temporary directory in /tmp and extracts all the files. It then executes the executables in a specified order. It has options of ‘quiet’ and ‘destroy extracted files on exit’ too. You can try this too. Download the files from here. It works on Linux, but is pretty much platform independent, most of if is just CORE C++. Maybe you can try it on windows as well. Does “FILE * fp;” work on windows? Sorry, the code isn’t documented (at all).

Movies

Ok, not many in the list. Lage Raho Munnabhai has been the favorite since a few days. I don’t know if the director had any intention to spread the gandhigiri, but I can see it already spreading (at least in orkut profiles). What I think one should notice is that the ‘noble thought’ is being internalized and understood by someone who has been violent and aggressive all the time, a gunda. If such a person can understand the words of truth and non-violence, we, the ordinary people ought to.

Pyaar ke side effects… they are already there. Actually Tanu wanted me to see this one. And after people appreciated it, I got desperate to see it. Eh, well I can already notice some of the side effects in my life too, hehe. In all a fun movie, a must see for your PC and can be worthy for the cinema hall as well.

Blogging - bring me back

Oh its been so long since I last visited my blog or someone elses. I am like out of the blogging world. Not that I am busy or something, but I do other things more often. They include movies, orkutting, chatting, working on the YUM REPO, etc. And rest of the time I am outside my room doing some other activities. Lets see if I revert back with this opening post. Actually I was considering of creating a private blog as well, or making this one private or something similar. I think a lot of my thoughts don’t find place in this open blog. Maybe its too early to let my ideas open for the public to read and judge.

Conclusion

Ok fine, now that I wrote a post, I have to have a conclusion. There is nothing to conclude though. Welcome me back to the blogging world. Hopefully going home this diwali. And well keep your fingers crossed for the upcoming YUM REPOSITORY and TV.IIIT.AC.IN.

Ciao.

Posted in Blogging, Events at IIIT, Fedora Core Customizer, KDE, Life at IIIT, Linux, Moods, Movies and Songs, tv.iiit.ac.in | 1 Comment »

How much relevant is this?

Posted by Anurag on 10 October, 2005

We’ve been having talks about the relevance of this project. There is this “Redhat Scholarships”, and we had thought of doing this one for this scholarship.

Analysing the requirement of this project, we see, what all it will “actually” add.

* I wont be required to install a few media players manually.
* I will have one more icon to start XMMS for me, heh.
* It will possibly install all other softwares I need!

Lets look into it this way.
* How many softwares are actually provided in palatable form such as RPM or SRC RPM or even an easily compilable source?
* How many times does it happen that we can install a software flawlessly, and flawlessly on more than one system with the same procedure?
* How many people will actually consider installing it for installing media players for them, which are in some way, easily installable?
* How will it do any better than YUM?
* How many softwares does Fedora lack? (its almost a complete solution for everything)

With the current state, its not possible to frame a really convincing “Requirements list”. We will wait for more ideas to pour in, and begin only when the relevance of the project is proved.

Posted in Fedora Core Customizer | 3 Comments »

How about MODIFYING FEDORA CORE ?

Posted by Anurag on 22 September, 2005

Well, its been long since we last had a discussion on this project, but, another IDEA which has struck me is, instead of trying really hard to get “Fedora Core 2″, “Fedora Core 3″ and “Fedora Core 4″ into a more usable form by providing software in addition to the basic setup, why don’t we try to MODIFY Fedora Core 4, and create a custom Operating System that has all the features MISSING in Fedora Core 4.

Legally, this can be done as FC4 is released under GPL. I read more about the licensing policy and end user license agreement of Redhat Inc. It clearly states that we are free to modify and redistribute a modified version of Fedora Core, but we are NOT ALLOWED to use “Fedora Core” “Redhat” brand names or logos in the new software. That’d just mean changing some screens and image files.

Technically, I was looking at how the REDHAT 8/9/Fedora Core CDROM is formatted. It follows something called the “comps.xml” format. We need the comps-extras rpm package installed in order to “edit” the default installation of Fedora Core, add, substract packages, etc. This will enable us to safely add packages to the “basic setup”, and also allow us to replace “mp3 crippled” kdemultimedia packages with the original ones compiled from kde.org. Similarly, we can include the good media players and some initial scripts plus a good theme, etc. to make the “new operating system” as BETTER THAN FEDORA CORE 4. I still haven’t thought of any name, but for the time being, lets call it “JOSH” (Josh Operating System Hai! .. kind of recursive name, hehe)

I’ll be trying to understand this more and more, and will simultaneously look for all the required things not “already” present in FC4, and also those “not installed by default”.

Another point is, legally, we CAN use Fedora Core 4 (modified) as the brand name, if “there is a provision” to separate out “Fedora Core 4″ and the “(modified)”, and the user has an option to “use the Fedora Core 4 original setup” as well as “install the customized setup”, so we might consider that too.

In addition to these plus points with the new idea, there are a few drawbacks too.
1. Generally Linux users are reluctant to REINSTALL their distro.
2. This would mean, if you want to have a user friendly Fedora, get my distro, there is no other option, while, providing a customizer disk would provide all people to modify their distro, even if the basic setup was the same old.
3. Its more mechanical to follow this idea, and more challenging to try to make a generic customizer software.
4. Creating a new distro will somewhat cripple it, because no server has updates for it.
5. I kind of like the name Fedora Core ;)

References.
Redhat Trademark Guidelines
formatting comps.xml
Creating a custom OS

Posted in Fedora Core Customizer | 5 Comments »

Trying out with understanding .HDR format…

Posted by Anurag on 6 August, 2005

The first thing to simulate YUM is to understand the format in which it downloads the headers of any RPM package. As YUM clearly specifies that HDR are the headers of any RPM and it uses RPM API to access the information, we need to first learn to parse a .HDR file.

The most intuitive feeling which arises is, do the first bytes of RPM files match with HDR files? No, they don’t. But it is not the case that there is no relation. If we ignore some of the bytes in both files, we find that the bytes are exactly same.

Doing a statistical analysis of a RPM and a HDR, (kernel-2.6.12-1.1398_FC4), I found that ignoring the first 440 bytes of the RPM, the HDR is exactly same with the corresponding bytes in the RPM. Thus, there is certainly a relation. It must certainly have been mentioned in the RPM API. I am still reading and trying.

Also, the YUM sourcecode is of help. Still trying to find a file which actually downloads the header from the server and parses it.

References:

http://www.rpm.org/
www.mialug.org/downloads/static/documentation/max-rpm.pdf
http://www.linuxquestions.org/questions/showthread.php?s=&threadid=350432

Posted in Fedora Core Customizer | No Comments »

Query response for poorna shashank…

Posted by Anurag on 4 August, 2005

So does that mean when a joe wants to play mp3s on his pc, your (5th cd)/FCC will take care of all that?

does that mean that once joe doesnt want to play the media, the software installed will be deleted from user?

Can i assume that your software will be similar to ‘Software-On-CD’ something akin to ‘Linux-On-CD’. Which simply means, once the cd is taken out the system is as is? Or you are going to make permanent changes to the system?

No, its not a “Linux-On-CD” kind of a thing. If you see Discussion No. 1, we clearly state that it is “installed on the system just like a control panel”.
So,
* AJ can open FCC (FC Customizer).
* Search for a particular capability and install.
* Browse through the already installed capabilities and use.
* Remove a capability.
* Set the preferences about the Internet Repos, etc.
* Update the software database/version using the next released CDROM.
* Some other features which we might think of later.

So, what is your response after you know this additional information about the whole design? Is there any way of improving? Is there any other feature which is a MUST-INCLUDE? Waiting for a prompt response. You can get membership of this blog and post directly, want it?

Posted in Fedora Core Customizer | 1 Comment »

Discussion No. 1

Posted by Anurag on 4 August, 2005

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.
* IN A BROAD SENSE, WILL ACT LIKE YasT.

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.

Posted in Fedora Core Customizer | No Comments »

Understanding YUM

Posted by Anurag on 4 August, 2005

* How does YUM do it?
* Why is it so fast?
* What is the header?
* How to use it in my software?
* etc etc.

These are some of the questions that are coming to our minds in the process of making this new piece of software. The beauty of open source is that I can download the sourcecode of YUM, and read it to get what is it doing. Also, I can read their site to find out things. And then, I can use it in my code to make it run better.

YUM mentions that the header is actually a small part of the RPM itself, so that the information about the particular RPM is given by itself, which removes a lot of complexity. Now, there is no specification about what this header actually is or how does YUM use this header to actually find out information about the RPM. It also mentions that YUM directly uses “RPM’s dependency resolution” to resolve dependencies, and doesn’t implement its own.

References:
http://linux.duke.edu/projects/yum/
http://wiki.linux.duke.edu/YumIdeas

Posted in Fedora Core Customizer | No Comments »

Rough Draft No. 1

Posted by Anurag on 4 August, 2005

Hi,
I am a Fedora Core user since long now. I am beginning a project out of my own interest in order to enhance or customize Fedora Core(2/3/4) to make it usable for an average user.

The idea is to provide an addition 5th CDROM with the FC Setup, which will install a software into the system (similar to YasT), which will enable to user to configure and enhance the user experience for Fedora Core 2/3/4 systems.

One of the many uses of this software would be “Getting software”. Now, “getting software” should not be confused with just “installing” RPMS or sources. Here, we are dealing with a different level.

Average Joe says “I want to play MP3″.
I would say,
* install XMMS, XMMS-arts, XMMS-mp3, XMMS-skins.
* Configure KDE to start ARTS
* Configure XMMS to use ARTS
* Configure XMMS to use a good theme
* Provide a link to “MP3 Player” in my software. (YES, the software will behave as a app launcher too)

So, the “CAPABILITY” of “playing MP3″ is provided by the set of operations given above. So, the software will basically function using a database that is built based on “CAPABILITY” rather than “PACKAGE NAMES”.

Most of the time, “enabling a particular capability” will include
* installing packages/sources
* configuring some scripts of KDE/GNOME/etc.
* giving a link to the capability in the software.

We are just beginning the project, and are just analysing the problem. We would like to know if the idea is good enough or needs any amendment?

To install packages, we need to
* resolve dependencies
* identify sources of packages and dependencies (CDROM/ISO/INTERNET)
A lot of this capability seems to be built in the RPMLIB and YUM. We are trying to figure out how to use YUM or YUM API or YUM REPOSITORIES or ALL to benifit our cause. Please help us for the same.

Thanks,
Anurag.
anurag_rana [AT] students [DOT] iiit [DOT] ac [DOT] in

Posted in Fedora Core Customizer | 1 Comment »