here we put things that don't fit in any other place.
About the SSTE conference i don't know if they will ask us to talk about the unemployment and development in communication and information technology or not but I just prepared some points to talk about in case they asked us to talk about this issue ... and I need cooperation from all of u if u found something not good to tell me and to add some points too..
-The Philosophy behind open source.
open source and what is open source and why it is important... and why people choose to use open source instead of closed source... and why when making the source published in public that will offer much more opportunities for sharing and cooperation between all those who are interested in the field.. and will reduce monopolism and increase healthy competition between developers and contributors.. and also it will not be againest business development. it will be just a little introduction as all of them already knew about open source from the last conference.
-Open source and development cooperation.
how it will be great to make open source cooperate in development of countries in its many ways especially open source software.. and the advantage of open source software applications.
-Open source as a development path.
how using open source will make a right path to development as it has a less cost completely free license that will save money and help in economic development that will lead in development to the whole country.. and the economic development will be explained in the next points.
-Why developing countries must use open source.
i think this point will be important As Egypt is considered one of the developing country.. how the open source is suitable for the developing countries.. as it has no cost so it will save the money that is paid in licenses to be used in another fields..also open source needs many developers and contributors so many people will be able to work in this field and develop in it as it will be easy to learn for many people because of its GPLd tutorials and documentations .. so using open source in developing countries will be a good solution for the lake of money as many millions will be saved to be used in other fields .
-how reduction of unemployment will be one of the results of economic development that was caused by using open source.
and at last it will be so clear that due to economic development that was caused by the use of open source that will reduce unemployment.. and also many people can work in developing and contribution of the open source ..
I really appreciate ur cooperation very much..
<?php // -*-php-*-
/*
* Original module by Alaa Abd El Fatah.
* Mohammed Sameer: My Modifications Copyright (c) 2004 Mohammed Sameer,
* under the GNU GPL v2 or later.
* Mohammed Sameer: 2004 10 30
* * Ported to drupal 4.5 API.
*/
setlocale(LC_ALL, "ar_EG.UTF-8");
function bidi_help($section) {
$output = "";
switch ($section) {
case 'admin/modules#description':
$output = t("Automaticaly sets line direction");
break;
}
return $output;
}
function bidi_filter($op, $delta = 0, $format = -1, $text = "") {
switch ($op) {
case 'list':
return array(0 => t('BiDi'));
// case "name":
// return t("Bidi filter");
case 'description':
return t("Bidi filter");
case "process":
return _bidi_filter_process($text);
case "settings":
return _bidi_filter_settings($text);
default:
return $text;
}
}
//get dir needs to be split into a single include file so it can be used on theme and other places
function _get_dir($text) {
$text = strtolower($text);
$len = strlen($text);
$arabic = 0;
$english = 0;
//constants
$a = ord('a');
$z = ord('z');
//arabic UTF-8 letters have one of these values in the 1st byte
$ar1 = 0xd8;
$ar2 = 0xd9;
// this calculates the dominant language in the text, most bidi implementations just use the first letter (which may be more efficient)
for ($i = 0; $i < $len; ++$i) {
$bin = ord($text[$i]);
if ($bin == $ar1 || $bin == $ar2) {
++$arabic;
++$i;
} else if ($bin >= $a && $bin <= $z) {
++$english;
}
}
//should this return a bool instead?
if ($english || $arabic) {
if ($english > $arabic)
return ' class="left2right"';
else
return ' class="right2left"';
} else {
return "";
}
}
function _bidi_filter_process($text) {
$output = "";
$len = strlen($text);
$i = 0;
while ($i < $len) {
//find next tag
$e = strpos(substr($text, $i), "<");
if ($e === FALSE) break;
$output.=substr($text, $i, $e);
$i += $e;
//find end of next tag
$e = strcspn(substr($text, $i), "/> ");
$tag = substr($text, $i+1, $e-1);
$output.=substr($text, $i, $e);
$i += $e;
switch ($tag) {
//single tag entity
case "img":
case "br":
case "hr":
continue;
break;
//nested cases
case "ul":
case "ol":
case "dl":
case "div":
$e = 0;
$j = 1; //stack counter
// if $j = 0 then stack is empty
while ($j > 0) {
$e += strpos(substr($text, $i+$e) , $tag);
//yeah I know I'm assuming certain sizes for tags, sue me
if ($text[$i+$e-1] == '<') { //new nested block
++$j;
} else if ($text[$i+$e-1] == '/') { //end of block
--$j;
}
$e += 2; //skip current tag
}
$content = substr($text, $i+1, $e);
$output.=_get_dir(strip_tags($content));
$e += strlen($tag);
$output.= substr($text, $i, $e);
$i += $e;
break;
//block elements these get out attention
case "p":
case "blockquote":
case "pre":
case "h1":
case "h2":
case "h3":
case "h4":
case "h5":
case "h6":
//nested lists are proken better think of a fix
case "li":
$close_tag = "</".$tag.">";
//breaks on extra whitespaces, maybe I should use regexps instead
$e = strpos(substr($text, $i), $close_tag);
$content = substr($text, $i+1, $e-1);
//calculate directions
$output.= _get_dir(strip_tags($content));
$e += strlen($close_tag);
$output.= substr($text, $i, $e);
$i += $e;
break;
//non block tags we are not handeling
default:
$close_tag = "</".$tag.">";
$e = strpos(substr($text, $i), $close_tag) + strlen($close_tag);
$output.= substr($text, $i, $e);
$i += $e;
}
}
//any missing content
$output .= substr($text, $i);
return $output;
}
function _bidi_filter_settings() {
return form_group(t("Bidi filter"), t("automatic bidi"));
}
function bidi_filter_tips() {
if ($long)
{
}
else {
return t("You may write mixed Arabic and English freely, line direction will be computed automaticaly");
}
}
?>
ALT x (written as M-x) opens the emacs command.
CTRL x (written as C-x) for commands related to the editor.
CTRL h (written as C-h) for help commands, also u can access it through F1
This is the first issue of the magazine
it contain few lessons about some basic command line, and an article about migrate from other environments to GNU/Linux and short review for some GNU/Linux applications.
it is all in Arabic
<?php // -*-php-*-
/*
* Original module by Alaa Abd El Fatah.
* Modifications to enclude the admin configuration by Mohammed Sameer.
* Copyright (c) 2004 Mohammed Sameer, All rights reserved.
* Mohammed Sameer: My Modifications are under the GNU GPL v2 or later.
* Mohammed Sameer: 2004 09 10:
* * Output is themed by drupal.
* * Don't modify the variables if you can't open the file.
* * The "more..." link should include the country ISO code.
* * s/||/|/ between the 2 links at the bottom per alaa's request.
* 2004 10 29L
* * Ported to drupal 4.5 API.
*/
function lincount_help($section) {
switch ($section) {
case 'admin/modules#description':
$output = "<p>displays a block with the current Egypt statistics from Linux Counter Project</p>";
break;
}
return $output;
}
function lincount_cron() {
$file = 'http://counter.li.org/reports/short.txt';
$data = file_get_contents($file);
if ($data == FALSE)
{
return;
}
$country = variable_get("lincount_country", "EG");
$matches = array();
preg_match("|([0-9]+)\s*$country\s*([0-9a-zA-Z]+)\s*([0-9]+)\s*([0-9]+)\s*([0-9]+)\s*([0-9]+\.[0-9]+)\s*([0-9]+.[0-9]+)|", $data, $matches);
$rank = $matches[1];
$country = $matches[2];
$users = $matches[3] + $matches[4];
$machines = $matches[5];
$userdensity = $matches[6];
variable_set("lincount_rank", $rank);
variable_set("lincount_users", $users);
variable_set("lincount_machines", $machines);
variable_set("lincount_userdensity", $userdensity);
variable_set("lincount_country_long", $country);
}
function lincount_block($op = "list", $delta = 0) {
if ($op == "list") {
$blocks[0]["info"] = t("Linux Counter Statistics");
return $blocks;
}
else {
$country = variable_get("lincount_country_long", "Egypt");
$block["subject"] = t("Linux Counter %s Statistics",array("%s" => $country));
$block["content"] = lincount_display_block();
return $block;
}
}
function lincount_display_block() {
$rank = variable_get("lincount_rank",0);
$users = variable_get("lincount_users",0);
$machines = variable_get("lincount_machines",0);
$userdensity = variable_get("lincount_userdensity",0);
$country = variable_get("lincount_country","EGY");
$lincount_array[] = "Country Rank: $rank";
$lincount_array[] = "Number Of Users: $users";
$lincount_array[] = "Number Of Machines: $machines";
$lincount_array[] = "User Density: $userdensity";
$output = theme_node_list($lincount_array);
$output .= "<br />";
$output_array[] = l("Get Counted","http://counter.li.org/enter-person.php");
$output_array[] = l("more...","http://counter.li.org/reports/arearank.php?area=$country");
$output .= "<div class=\"more-link\">";
$output .= theme_links($output_array, ' | ');
$output .= "</div>";
return $output;
}
function lincount_settings()
{
$country = variable_get("lincount_country", "EG");
$output .= form_textfield(t("Enter the ISO code for the country:"), "lincount_country", $country, 55, 100);
return $output;
}
?>
this is the famous flamewar between Linus & Tanenbaum , i've posted it before on linux-egypt but i think here it will look much better ;-)
Linus vs. Tanenbaum Linux is obsolete Andy Tanenbaum Microkernel vs Monolithic System Portability Linus Benedict Torvalds Andy Tanenbaum Linus Benedict Torvalds Linus Benedict Torvalds Unhappy campers Andy Tanenbaum Fred Fish Andy Tanenbaum Linus Benedict Torvalds This is an extract of the discussion between Andy Tanenbaum and Linus Benedict Torvalds about kernel design, free software, and more. Only contributions from the main actors are included. The complete archive is also available, but only in BABYL format. You can use Emacs RMAIL to read it conveniently.
Per Abrahamsen Linux is obsolete Andy Tanenbaum From: ast@cs.vu.nl (Andy Tanenbaum) Newsgroups: comp.os.minix Subject: LINUX is obsolete Date: 29 Jan 92 12:12:50 GMT Organization: Fac. Wiskunde &h Informatica, Vrije Universiteit, Amsterdam
I was in the U.S. for a couple of weeks, so I haven't commented much on LINUX (not that I would have said much had I been around), but for what it is worth, I have a couple of comments now.
As most of you know, for me MINIX is a hobby, something that I do in the evening when I get bored writing books and there are no major wars, revolutions, or senate hearings being televised live on CNN. My real job is a professor and researcher in the area of operating systems.
As a result of my occupation, I think I know a bit about where operating are going in the next decade or so. Two aspects stand out:
Microkernel vs Monolithic System Most older operating systems are monolithic, that is, the whole operating system is a single a.out file that runs in 'kernel mode.' This binary contains the process management, memory management, file system and the rest. Examples of such systems are UNIX, MS-DOS, VMS, MVS, OS/360, MULTICS, and many more. The alternative is a microkernel-based system, in which most of the OS runs as separate processes, mostly outside the kernel. They communicate by message passing. The kernel's job is to handle the message passing, interrupt handling, low-level process management, and possibly the I/O. Examples of this design are the RC4000, Amoeba, Chorus, Mach, and the not-yet-released Windows/NT.
While I could go into a long story here about the relative merits of the two designs, suffice it to say that among the people who actually design operating systems, the debate is essentially over. Microkernels have won. The only real argument for monolithic systems was performance, and there is now enough evidence showing that microkernel systems can be just as fast as monolithic systems (e.g., Rick Rashid has published papers comparing Mach 3.0 to monolithic systems) that it is now all over but the shoutin`.
MINIX is a microkernel-based system. The file system and memory management are separate processes, running outside the kernel. The I/O drivers are also separate processes (in the kernel, but only because the brain-dead nature of the Intel CPUs makes that difficult to do otherwise). LINUX is a monolithic style system. This is a giant step back into the 1970s. That is like taking an existing, working C program and rewriting it in BASIC. To me, writing a monolithic system in 1991 is a truly poor idea.
Portability Once upon a time there was the 4004 CPU. When it grew up it became an 8008. Then it underwent plastic surgery and became the 8080. It begat the 8086, which begat the 8088, which begat the 80286, which begat the 80386, which begat the 80486, and so on unto the N-th generation. In the meantime, RISC chips happened, and some of them are running at over 100 MIPS. Speeds of 200 MIPS and more are likely in the coming years. These things are not going to suddenly vanish. What is going to happen is that they will gradually take over from the 80x86 line. They will run old MS-DOS programs by interpreting the 80386 in software. (I even wrote my own IBM PC simulator in C, which you can get by FTP from ftp.cs.vu.nl = 192.31.231.42 in dir minix/simulator.) I think it is a gross error to design an OS for any specific architecture, since that is not going to be around all that long. MINIX was designed to be reasonably portable, and has been ported from the Intel line to the 680x0 (Atari, Amiga, Macintosh), SPARC, and NS32016. LINUX is tied fairly closely to the 80x86. Not the way to go.
Don`t get me wrong, I am not unhappy with LINUX. It will get all the people who want to turn MINIX in BSD UNIX off my back. But in all honesty, I would suggest that people who want a **MODERN** "free" OS look around for a microkernel-based, portable OS, like maybe GNU or something like that.
Andy Tanenbaum (ast@cs.vu.nl) P.S. Just as a random aside, Amoeba has a UNIX emulator (running in user space), but it is far from complete. If there are any people who would like to work on that, please let me know. To run Amoeba you need a few 386s, one of which needs 16M, and all of which need the WD Ethernet card.
Linus Benedict Torvalds From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds) Newsgroups: comp.os.minix Subject: Re: LINUX is obsolete Date: 29 Jan 92 23:14:26 GMT Organization: University of Helsinki
Well, with a subject like this, I'm afraid I'll have to reply. Apologies to minix-users who have heard enough about linux anyway. I'd like to be able to just "ignore the bait", but ... Time for some serious flamefesting!
In article ast@cs.vu.nl (Andy Tanenbaum) writes:
I was in the U.S. for a couple of weeks, so I haven't commented much on LINUX (not that I would have said much had I been around), but for what it is worth, I have a couple of comments now. As most of you know, for me MINIX is a hobby, something that I do in the evening when I get bored writing books and there are no major wars, revolutions, or senate hearings being televised live on CNN. My real job is a professor and researcher in the area of operating systems.
You use this as an excuse for the limitations of minix? Sorry, but you loose: I've got more excuses than you have, and linux still beats the pants of minix in almost all areas. Not to mention the fact that most of the good code for PC minix seems to have been written by Bruce Evans.
Re 1: you doing minix as a hobby - look at who makes money off minix, and who gives linux out for free. Then talk about hobbies. Make minix freely available, and one of my biggest gripes with it will disappear. Linux has very much been a hobby (but a serious one: the best type) for me: I get no money for it, and it's not even part of any of my studies in the university. I've done it all on my own time, and on my own machine.
Re 2: your job is being a professor and researcher: That's one hell of a good excuse for some of the brain-damages of minix. I can only hope (and assume) that Amoeba doesn't suck like minix does.
1. MICROKERNEL VS MONOLITHIC SYSTEM True, linux is monolithic, and I agree that microkernels are nicer. With a less argumentative subject, I'd probably have agreed with most of what you said. From a theoretical (and aesthetical) standpoint linux looses. If the GNU kernel had been ready last spring, I'd not have bothered to even start my project: the fact is that it wasn't and still isn't. Linux wins heavily on points of being available now.
MINIX is a microkernel-based system. deleted, but not so that you miss the point? LINUX is a monolithic style system. If this was the only criterion for the "goodness" of a kernel, you'd be right. What you don't mention is that minix doesn't do the micro-kernel thing very well, and has problems with real multitasking (in the kernel). If I had made an OS that had problems with a multithreading filesystem, I wouldn't be so fast to condemn others: in fact, I'd do my damndest to make others forget about the fiasco.
yes, I know there are multithreading hacks for minix, but they are hacks, and bruce evans tells me there are lots of race conditions?
2. PORTABILITY
"Portability is for people who cannot write new programs" -me, right now (with tongue in cheek)
The fact is that linux is more portable than minix. What? I hear you say. It's true - but not in the sense that ast means: I made linux as conformant to standards as I knew how (without having any POSIX standard in front of me). Porting things to linux is generally /much/ easier than porting them to minix.
I agree that portability is a good thing: but only where it actually has some meaning. There is no idea in trying to make an operating system overly portable: adhering to a portable API is good enough. The very /idea/ of an operating system is to use the hardware features, and hide them behind a layer of high-level calls. That is exactly what linux does: it just uses a bigger subset of the 386 features than other kernels seem to do. Of course this makes the kernel proper unportable, but it also makes for a /much/ simpler design. An acceptable trade-off, and one that made linux possible in the first place.
I also agree that linux takes the non-portability to an extreme: I got my 386 last January, and linux was partly a project to teach me about it. Many things should have been done more portably if it would have been a real project. I'm not making overly many excuses about it though: it was a design decision, and last april when I started the thing, I didn't think anybody would actually want to use it. I'm happy to report I was wrong, and as my source is freely available, anybody is free to try to port it, even though it won't be easy.
Linus PS. I apologise for sometimes sounding too harsh: minix is nice enough if you have nothing else. Amoeba might be nice if you have 5-10 spare 386's lying around, but I certainly don't. I don't usually get into flames, but I'm touchy when it comes to linux :)
Andy Tanenbaum From: ast@cs.vu.nl (Andy Tanenbaum) Newsgroups: comp.os.minix Subject: Re: LINUX is obsolete Date: 30 Jan 92 13:44:34 GMT Organization: Fac. Wiskunde &h Informatica, Vrije Universiteit, Amsterdam
In article torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds) writes:
You use this being a professor? as an excuse for the limitations of minix? The limitations of MINIX relate at least partly to my being a professor: An explicit design goal was to make it run on cheap hardware so students could afford it. In particular, for years it ran on a regular 4.77 MHZ PC with no hard disk. You could do everything here including modify and recompile the system. Just for the record, as of about 1 year ago, there were two versions, one for the PC (360K diskettes) and one for the 286/386 (1.2M). The PC version was outselling the 286/386 version by 2 to 1. I don't have figures, but my guess is that the fraction of the 60 million existing PCs that are 386/486 machines as opposed to 8088/286/680x0 etc is small. Among students it is even smaller. Making software free, but only for folks with enough money to buy first class hardware is an interesting concept. Of course 5 years from now that will be different, but 5 years from now everyone will be running free GNU on their 200 MIPS, 64M SPARCstation-5.
Re 2: your job is being a professor and researcher: That's one hell of a good excuse for some of the brain-damages of minix. I can only hope (and assume) that Amoeba doesn't suck like minix does. Amoeba was not designed to run on an 8088 with no hard disk.
If this was the only criterion for the "goodness" of a kernel, you'd be right. What you don't mention is that minix doesn't do the micro-kernel thing very well, and has problems with real multitasking (in the kernel). If I had made an OS that had problems with a multithreading filesystem, I wouldn't be so fast to condemn others: in fact, I'd do my damndest to make others forget about the fiasco. A multithreaded file system is only a performance hack. When there is only one job active, the normal case on a small PC, it buys you nothing and adds complexity to the code. On machines fast enough to support multiple users, you probably have enough buffer cache to insure a hit cache hit rate, in which case multithreading also buys you nothing. It is only a win when there are multiple processes actually doing real disk I/O. Whether it is worth making the system more complicated for this case is at least debatable.
I still maintain the point that designing a monolithic kernel in 1991 is a fundamental error. Be thankful you are not my student. You would not get a high grade for such a design :-)
The fact is that linux is more portable than minix. What? I hear you say. It's true - but not in the sense that ast means: I made linux as conformant to standards as I knew how (without having any POSIX standard in front of me). Porting things to linux is generally /much/ easier than porting them to minix. MINIX was designed before POSIX, and is now being (slowly) POSIXized as everyone who follows this newsgroup knows. Everyone agrees that user-level standards are a good idea. As an aside, I congratulate you for being able to write a POSIX-conformant system without having the POSIX standard in front of you. I find it difficult enough after studying the standard at great length.
My point is that writing a new operating system that is closely tied to any particular piece of hardware, especially a weird one like the Intel line, is basically wrong. An OS itself should be easily portable to new hardware platforms. When OS/360 was written in assembler for the IBM 360 25 years ago, they probably could be excused. When MS-DOS was written specifically for the 8088 ten years ago, this was less than brilliant, as IBM and Microsoft now only too painfully realize. Writing a new OS only for the 386 in 1991 gets you your second 'F' for this term. But if you do real well on the final exam, you can still pass the course.
Prof. Andrew S. Tanenbaum (ast@cs.vu.nl) Linus Benedict Torvalds From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds) Newsgroups: comp.os.minix Subject: Re: LINUX is obsolete Date: 31 Jan 92 10:33:23 GMT Organization: University of Helsinki
In article ast@cs.vu.nl (Andy Tanenbaum) writes:
The limitations of MINIX relate at least partly to my being a professor: An explicit design goal was to make it run on cheap hardware so students could afford it. All right: a real technical point, and one that made some of my comments inexcusable. But at the same time you shoot yourself in the foot a bit: now you admit that some of the errors of minix were that it was too portable: including machines that weren't really designed to run unix. That assumption lead to the fact that minix now cannot easily be extended to have things like paging, even for machines that would support it. Yes, minix is portable, but you can rewrite that as "doesn't use any features", and still be right.
A multithreaded file system is only a performance hack. Not true. It's a performance hack /on a microkernel/, but it's an automatic feature when you write a monolithic kernel - one area where microkernels don't work too well (as I pointed out in my personal mail to ast). When writing a unix the "obsolete" way, you automatically get a multithreaded kernel: every process does it's own job, and you don't have to make ugly things like message queues to make it work efficiently.
Besides, there are people who would consider "only a performance hack" vital: unless you have a cray-3, I'd guess everybody gets tired of waiting on the computer all the time. I know I did with minix (and yes, I do with linux too, but it's /much/ better).
I still maintain the point that designing a monolithic kernel in 1991 is a fundamental error. Be thankful you are not my student. You would not get a high grade for such a design :-) Well, I probably won't get too good grades even without you: I had an argument (completely unrelated - not even pertaining to OS's) with the person here at the university that teaches OS design. I wonder when I'll learn :)
My point is that writing a new operating system that is closely tied to any particular piece of hardware, especially a weird one like the Intel line, is basically wrong. But /my/ point is that the operating system /isn't/ tied to any processor line: UNIX runs on most real processors in existence. Yes, the /implementation/ is hardware-specific, but there's a HUGE difference. You mention OS/360 and MS-DOG as examples of bad designs as they were hardware-dependent, and I agree. But there's a big difference between these and linux: linux API is portable (not due to my clever design, but due to the fact that I decided to go for a fairly- well-thought-out and tested OS: unix.)
If you write programs for linux today, you shouldn't have too many surprises when you just recompile them for Hurd in the 21st century. As has been noted (not only by me), the linux kernel is a miniscule part of a complete system: Full sources for linux currently runs to about 200kB compressed - full sources to a somewhat complete developement system is at least 10MB compressed (and easily much, much more). And all of that source is portable, except for this tiny kernel that you can (provably: I did it) re-write totally from scratch in less than a year without having /any/ prior knowledge.
In fact the /whole/ linux kernel is much smaller than the 386-dependent things in mach: i386.tar.Z for the current version of mach is well over 800kB compressed (823391 bytes according to nic.funet.fi). Admittedly, mach is "somewhat" bigger and has more features, but that should still tell you something.
Linus Linus Benedict Torvalds From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds) Newsgroups: comp.os.minix Subject: Apologies (was Re: LINUX is obsolete) Date: 30 Jan 92 15:38:16 GMT Organization: University of Helsinki
In article I wrote:
Well, with a subject like this, I'm afraid I'll have to reply. And reply I did, with complete abandon, and no thought for good taste and netiquette. Apologies to ast, and thanks to John Nall for a friendy "that's not how it's done"-letter. I over-reacted, and am now composing a (much less acerbic) personal letter to ast. Hope nobody was turned away from linux due to it being (a) possibly obsolete (I still think that's not the case, although some of the criticisms are valid) and (b) written by a hothead :-)
Linus "my first, and hopefully last flamefest" Torvalds Unhappy campers Andy Tanenbaum From: ast@cs.vu.nl (Andy Tanenbaum) Newsgroups: comp.os.minix Subject: Unhappy campers Date: 3 Feb 92 22:46:40 GMT Organization: Fac. Wiskunde &h Informatica, Vrije Universiteit, Amsterdam
I've been getting a bit of mail lately from unhappy campers. (Actually 10 messages from the 43,000 readers may seem like a lot, but it is not really.) There seem to be three sticking points:
Monolithic kernels are just as good as microkernels Portability isn't so important Software ought to be free If people want to have a serious discussion of microkernels vs. monolithic kernels, fine. We can do that in comp.os.research. But please don't sound off if you have no idea of what you are talking about. I have helped design and implement 3 operating systems, one monolithic and two micro, and have studied many others in detail. Many of the arguments offered are nonstarters (e.g., microkernels are no good because you can't do paging in user space-- except that Mach DOES do paging in user space). If you don't know much about microkernels vs. monolithic kernels, there is some useful information in a paper I coauthored with Fred Douglis, Frans Kaashoek and John Ousterhout in the Dec. 1991 issue of COMPUTING SYSTEMS, the USENIX journal). If you don't have that journal, you can FTP the paper from ftp.cs.vu.nl (192.31.231.42) in directory amoeba/papers as comp_sys.tex.Z (compressed TeX source) or comp_sys.ps.Z (compressed PostScript). The paper gives actual performance measurements and supports Rick Rashid's conclusion that microkernel based systems are just as efficient as monolithic kernels.
As to portability, there is hardly any serious discussion possible any more. UNIX has been ported to everything from PCs to Crays. Writing a portable OS is not much harder than a nonportable one, and all systems should be written with portability in mind these days. Surely Linus' OS professor pointed this out. Making OS code portable is not something I invented in 1987.
While most people can talk rationally about kernel design and portability, the issue of free-ness is 100% emotional. You wouldn't believe how much expletive deleted? I have gotten lately about MINIX not being free. MINIX costs $169, but the license allows making two backup copies, so the effective price can be under $60. Furthermore, professors may make UNLIMITED copies for their students. Coherent is $99. FSF charges >$100 for the tape its "free" software comes on if you don't have Internet access, and I have never heard anyone complain. 4.4 BSD is $800. I don't really believe money is the issue. Besides, probably most of the people reading this group already have it.
A point which I don't think everyone appreciates is that making something available by FTP is not necessarily the way to provide the widest distribution. The Internet is still a highly elite group. Most computer users are NOT on it. It is my understanding from PH that the country where MINIX is most widely used is Germany, not the U.S., mostly because one of the (commercial) German computer magazines has been actively pushing it. MINIX is also widely used in Eastern Europe, Japan, Israel, South America, etc. Most of these people would never have gotten it if there hadn't been a company selling it.
Getting back to what "free" means, what about free source code? Coherent is binary only, but MINIX has source code, just as LINUX does. You can change it any way you want, and post the changes here. People have been doing that for 5 years without problems. I have been giving free updates for years, too.
I think the real issue is something else. I've been repeatedly offered virtual memory, paging, symbolic links, window systems, and all manner of features. I have usually declined because I am still trying to keep the system simple enough for students to understand. You can put all this stuff in your version, but I won't put it in mine. I think it is this point which irks the people who say "MINIX is not free," not the $60.
An interesting question is whether Linus is willing to let LINUX become "free" of his control. May people modify it (ruin it?) and sell it? Remember the hundreds of messages with subject "Re: Your software sold for money" when it was discovered the MINIX Centre in England was selling diskettes with news postings, more or less at cost?
Suppose Fred van Kempen returns from the dead and wants to take over, creating Fred's LINUX and Linus' LINUX, both useful but different. Is that ok? The test comes when a sizable group of people want to evolve LINUX in a way Linus does not want. Until that actually happens the point is moot, however.
If you like Linus' philosophy rather than mine, by all means, follow him, but please don't claim that you're doing this because LINUX is "free." Just say that you want a system with lots of bells and whistles. Fine. Your choice. I have no argument with that. Just tell the truth.
As an aside, for those folks who don't read news headers, Linus is in Finland and I am in The Netherlands. Are we reaching a situation where another critical industry, free software, that had been totally dominated by the U.S. is being taken over by the foreign competition? Will we soon see President Bush coming to Europe with Richard Stallman and Rick Rashid in tow, demanding that Europe import more American free software?
Andy Tanenbaum (ast@cs.vu.nl) Fred Fish From: fnf@fishpond.uucp (Fred Fish) Newsgroups: comp.os.minix Subject: Re: Unhappy campers Date: 4 Feb 92 20:57:40 GMT Organization: Amiga Library Distribution Services
In article ast@cs.vu.nl (Andy Tanenbaum) writes:
While most people can talk rationally about kernel design and portability, the issue of free-ness is 100% emotional. You wouldn't believe how much expletive deleted? I have gotten lately about MINIX not being free. MINIX costs $169, but the license allows making two backup copies, so the effective price can be under $60. Furthermore, professors may make UNLIMITED copies for their students. Coherent is $99. FSF charges >$100 for the tape its "free" software comes on if you don't have Internet access, and I have never heard anyone complain. 4.4 BSD is $800. I don't really believe money is the issue. Besides, probably most of the people reading this group already have it. The distribution cost is not the problem. As you've noted, nobody complains about the FSF's distribution fee being too high. The problem, as I see it, is that there is only one legal source for for the software for people that simply want a working release. And from watching the minix group since minix first became available, my impression is that nobody enjoys dealing with PH for a whole host of reasons.
I think the real issue is something else. I've been repeatedly offered virtual memory, paging, symbolic links, window systems, and all manner of features. I have usually declined because I am still trying to keep the system simple enough for students to understand. You can put all this stuff in your version, but I won't put it in mine. I think it is this point which irks the people who say "MINIX is not free," not the $60. If PH was not granted a monopoly on distribution, it would have been possible for all of the interested minix hackers to organize and set up a group that was dedicated to producing enhanced-minix. This aim of this group could have been to produce a single, supported version of minix with all of the commonly requested enhancements. This would have allowed minix to evolve in much the same way that gcc has evolved over the last few years. Sure there are variant versions of gcc, but most of the really good enhancements, bug fixes, etc are eventually folded back into a master source base that future distributions derive from. Thus you would have been left in peace to continue your tight control over the educational version of minix, and everyone else that wanted more than an educational tool could put their energies into enhanced-minx.
The primary reason I've never gotten into using minix, after the initial excitement of hearing about it's availability way back when, is that I have no interest in trying to apply random patches from all over the place, sort out the problems, and eventually end up with a system that does what I want it to, but which I can't pass on to anyone else.
The test comes when a sizable group of people want to evolve LINUX in a way Linus does not want. Until that actually happens the point is moot, however. Where is the sizeable group of people that want to evolve gcc in a way that rms/FSF does not approve of?
Where is the sizeable group of people that want to evolve emacs in a way that rms/FSF doesn't approve of?
I'd say that if the primary maintainers of a large piece of useful, freely redistributable, software are at all responsive to incorporating useful enhancements and acting as the central repository and clearing house for the software, then these splinter groups simply do not have sufficient motivation to form. Having a single source for the software, and having the primary maintainer(s) be unresponsive to the desires of a large group of users, is the catalyst that causes these sorts of pressures; not the freedom of the software.
-Fred -- |\/ o\ Fred Fish, 1835 E. Belmont Drive, Tempe, AZ 85284, USA |/\__/ 1-602-491-0048 {asuvax,mcdphx,cygint,amix}!fishpond!fnf
Andy Tanenbaum From: ast@cs.vu.nl (Andy Tanenbaum) Newsgroups: comp.os.minix Subject: Re: Unhappy campers Date: 5 Feb 92 23:23:26 GMT Organization: Fac. Wiskunde &h Informatica, Vrije Universiteit, Amsterdam
In article fnf@fishpond.uucp (Fred Fish) writes:
If PH was not granted a monopoly on distribution, it would have been possible for all of the interested minix hackers to organize and set up a group that was dedicated to producing enhanced-minix. This aim of this group could have been to produce a single, supported version of minix with all of the commonly requested enhancements. This would have allowed minix to evolve in much the same way that gcc has evolved over the last few years. This IS possible. If a group of people wants to do this, that is fine. I think co-ordinating 1000 prima donnas living all over the world will be as easy as herding cats, but there is no legal problem. When a new release is ready, just make a diff listing against 1.5 and post it or make it FTPable. While this will require some work on the part of the users to install it, it isn't that much work. Besides, I have shell scripts to make the diffs and install them. This is what Fred van Kempen was doing. What he did wrong was insist on the right to publish the new version, rather than diffs against the PH baseline. That cuts PH out of the loop, which, not surprisingly, they weren't wild about. If people still want to do this, go ahead.
Of course, I am not necessarily going to put any of these changes in my version, so there is some work keeping the official and enhanced ones in sync, but I am willing to co-operate to minimize work. I did this for a long time with Bruce Evans and Frans Meulenbroeks.
If Linus wants to keep control of the official version, and a group of eager beavers want to go off in a different direction, the same problem arises. I don't think the copyright issue is really the problem. The problem is co-ordinating things. Projects like GNU, MINIX, or LINUX only hold together if one person is in charge. During the 1970s, when structured programming was introduced, Harlan Mills pointed out that the programming team should be organized like a surgical team--one surgeon and his or her assistants, not like a hog butchering team--give everybody an axe and let them chop away.
Anyone who says you can have a lot of widely dispersed people hack away on a complicated piece of code and avoid total anarchy has never managed a software project.
Where is the sizeable group of people that want to evolve gcc in a way that rms/FSF does not approve of? A compiler is not something people have much emotional attachment to. If the language to be compiled is a given (e.g., an ANSI standard), there isn't much room for people to invent new features. An operating system has unlimited opportunity for people to implement their own favorite features.
Andy Tanenbaum (ast@cs.vu.nl) Linus Benedict Torvalds From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds) Newsgroups: comp.os.minix Subject: Re: Unhappy campers Date: 6 Feb 92 10:33:31 GMT Organization: University of Helsinki
In article ast@cs.vu.nl (Andy Tanenbaum) writes:
If Linus wants to keep control of the official version, and a group of eager beavers want to go off in a different direction, the same problem arises. This is the second time I've seen this "accusation" from ast, who feels pretty good about commenting on a kernel he probably haven't even seen. Or at least he hasn't asked me, or even read alt.os.linux about this. Just so that nobody takes his guess for the full thruth, here's my standing on "keeping control", in 2 words (three?):
I won't.
The only control I've effectively been keeping on linux is that I know it better than anybody else, and I've made my changes available to ftp-sites etc. Those have become effectively official releases, and I don't expect this to change for some time: not because I feel I have some moral right to it, but because I haven't heard too many complaints, and it will be a couple of months before I expect to find people who have the same "feel" for what happens in the kernel. (Well, maybe people are getting there: tytso certainly made some heavy changes even to 0.10, and others have hacked it as well)
In fact I have sent out feelers about some "linux-kernel" mailing list which would make the decisions about releases, as I expect I cannot fully support all the features that will /have/ to be added: SCSI etc, that I don't have the hardware for. The response has been non-existant: people don't seem to be that eager to change yet. (well, one person felt I should ask around for donations so that I could support it - and if anybody has interesting hardware lying around, I'd be happy to accept it :)
The only thing the copyright forbids (and I feel this is eminently reasonable) is that other people start making money off it, and don't make source available etc... This may not be a question of logic, but I'd feel very bad if someone could just sell my work for money, when I made it available expressly so that people could play around with a personal project. I think most people see my point.
That aside, if Fred van Kempen wanted to make a super-linux, he's quite wellcome. He won't be able to make much money on it (distribution fee only), and I don't think it's that good an idea to split linux up, but I wouldn't want to stop him even if the copyright let me.
I don't think the copyright issue is really the problem. The problem is co-ordinating things. Projects like GNU, MINIX, or LINUX only hold together if one person is in charge. Yes, coordination is a big problem, and I don't think linux will move away from me as "head surgeon" for some time, partly because most people understand about these problems. But copyright /is/ an issue: if people feel I do a bad job, they can do it themselves. Likewise with gcc. The minix copyright, however, means that if someone feels he could make a better minix, he either has to make patches (which aren't that great whatever you say about them) or start off from scratch (and be attacked because you have other ideals).
Patches aren't much fun to distribute: I haven't made cdiffs for a single version of linux yet (I expect this to change: soon the patches will be so much smaller than the kernel that making both patches and a complete version available is a good idea - note that I'd still make the whole version available too). Patches upon patches are simply impractical, especially for people that may do changes themselves.
Where is the sizeable group of people that want to evolve gcc in a way that rms/FSF does not approve of? A compiler is not something people have much emotional attachment to. If the language to be compiled is a given (e.g., an ANSI standard), there isn't much room for people to invent new features. An operating system has unlimited opportunity for people to implement their own favorite features. Well, there's GNU emacs... Don't tell us people haven't got emotional attachment to editors :)
Linus
got this info from www.linuxit.com, maybe it would prove useful to someone trying to teach themselves without any particular goals.
wonder if one could find free training material though
seems rather haphazard IMO
initial dump from my PDA, will clean up laters.
menya ------- 17 18 19 6h 30 2pm - 6pm 11am - 4pm : drupal 1pm - 7pm : drupal ---- foss 30m instalation 2hours desktop 30 major application 30 ---=---=-=--- best of breed 45m inovative apps 45m web applications 30m 15m system compenonts 1h file heirarchy 30m security 30m 15m drakconf 1h how to seek help -====- command line 30m arguments 30m options 30m 15m pipes 10m redirects 10m redirect to command line 10m for loops 30m file commands ch-- 20m media commands u/mount, du, df 30m network commands 15m ping ifconfig route /etc/resolv.conf ssh scp process control 10m ps killall kill top fg bg text utils 30m grep sed cut sort uniq comm tr package managment 30m urpmi.addmedia urpmi.removemedia urpmi.update urpmi_rpm-find-leaves urpmi urpme urpmf urpmq services 5m config file 10m applications 10m example commands 30m ====----= control center and wizards
Here are some very short and small tips that can save someone's time.
If you are using linkdotnet's 07770777 and wvdial. Add this line to wvdial.conf
Stupid Mode = yes
<?php
/**
* @file
* Enables your site members to vote on decisions using a simple ranking voting system
*/
/**
* Implementation of hook_help().
*/
function rankvote_help($section) {
switch($section) {
case 'admin/help#rankvote':
return t("<p>some text to help admins</p>");
case 'admin/modules#description':
return t("Enables your site members to vote on decisions using a simple ranking vote system");
case 'node/add#rankvote':
return t("A Ranking Vote is a form where visitors can rank each option");
}
}
/**
* Implementation of hook_access().
*/
function rankvote_access($op, $node) {
if ($op == 'create') {
return user_access('create ranking votes');
}
}
/**
* Implementation of hook_block().
*
* Generates a block containing the latest rankvote.
*/
function rankvote_block($op = 'list', $delta = 0) {
if (user_access('access content')) {
if ($op == 'list') {
$blocks[0]['info'] = t('Most recent Ranking Vote');
return $blocks;
}
else {
// Retrieve the latest rankvote.
$timestamp = db_result(db_query('SELECT MAX(n.created) FROM {node} n '. node_access_join_sql() ." WHERE n.type = 'rankvote' AND n.status = 1 AND ". node_access_where_sql() .' AND n.moderate = 0'));
if ($timestamp) {
$rankvote = node_load(array('type' => 'rankvote', 'created' => $timestamp, 'moderate' => 0, 'status' => 1));
if ($rankvote->nid) {
// rankvote_view() dumps the output into $rankvote->body.
rankvote_view($rankvote, 1, 0, 1);
}
}
$block['subject'] = t('Ranking Vote');
$block['content'] = $rankvote->body;
return $block;
}
}
}
/**
* Implementation of hook_cron().
*
* Closes rankvotes that ave exceeded their allowed runtime.
*/
function rankvote_cron() {
$result = db_query("SELECT p.nid FROM {rankvote} p INNER JOIN {node} n ON p.nid=n.nid WHERE (n.created + p.runtime) < '". time() ."' AND p.active = '1' AND p.runtime != '0'");
while ($rankvote = db_fetch_object($result)) {
db_query("UPDATE {rankvote} SET active='0' WHERE nid = %d", $rankvote->nid);
}
}
/**
* Implementation of hook_delete().
*/
function rankvote_delete($node) {
db_query("DELETE FROM {rankvote} WHERE nid=%d", $node->nid);
db_query("DELETE FROM {rankvote_choices} WHERE nid = %d", $node->nid);
}
/**
* Implementation of hook_validate().
*/
function rankvote_validate(&$node) {
if (isset($node->title)) {
// Check for at least two options and validate amount of votes:
$realchoices = 0;
foreach($node->choice as $i => $choice) {
if ($choice['chtext'] != '') {
$realchoices++;
}
if ($choice['chvotes'] < 0) {
form_set_error("choice][$i][chvotes", t('Negative values are not allowed.'));
}
}
if ($realchoices < 2) {
form_set_error("choice][$realchoices][chtext", t('You must fill in at least two choices.'));
}
}
$node->teaser = rankvote_teaser($node);
}
/**
* Implementation of hook_form().
*/
function rankvote_form(&$node) {
$admin = user_access('administer nodes');
if (function_exists('taxonomy_node_form')) {
$output = implode('', taxonomy_node_form('rankvote', $node));
}
if (!isset($node->choices)) {
$node->choices = max(2, count($node->choice) ? count($node->choice) : 5);
}
// User ticked 'need more choices'.
if ($node->morechoices) {
$node->choices *= 2;
}
$output .= '<div class="rankvote-form">';
// RankVote choices
//$opts = drupal_map_assoc(range(2, $node->choices * 2 + 5));
for ($a = 0; $a < $node->choices; $a++) {
$group1 .= form_textfield(t('Choice %n', array('%n' => ($a + 1))), "choice][$a][chtext", $node->choice[$a]['chtext'], 50, 127);
if ($admin) {
$group1 .= form_textfield(t('Votes for choice %n', array('%n' => ($a + 1))), "choice][$a][chvotes", (int)$node->choice[$a]['chvotes'], 7, 7);
}
}
$group1 .= form_hidden('choices', $node->choices);
$group1 .= form_checkbox(t('Need more choices'), 'morechoices', 1, 0, t("If the amount of boxes above isn't enough, check this box and click the Preview button below to add some more."));
$output .= form_group(t('Choices'), $group1);
// RankVote attributes
$_duration = array(0 => t('Unlimited')) + drupal_map_assoc(array(86400, 172800, 345600, 604800, 1209600, 2419200, 4838400, 9767800, 31536000), "format_interval");
$_active = array(0 => t('Closed'), 1=> t('Active'));
if ($admin) {
$group2 .= form_radios(t('Ranking Vote status'), 'active', isset($node->active) ? $node->active : 1, $_active, t('When a Ranking Vote is closed, visitors can no longer vote for it.'));
}
$group2 .= form_select(t('Ranking Vote duration'), 'runtime', $node->runtime ? $node->runtime : 0, $_duration, t('After this period, the Ranking Vote will be closed automatically.'));
$output .= form_group(t('Settings'), $group2);
$output .= '</div>';
return $output;
}
/**
* Implementation of hook_insert().
*/
function rankvote_insert($node) {
if (!user_access('administer nodes')) {
// Make sure all votes are 0 initially
foreach ($node->choice as $i => $choice) {
$node->choice[$i]['chvotes'] = 0;
}
$node->active = 1;
}
db_query("INSERT INTO {rankvote} (nid, runtime, voters, active) VALUES (%d, %d, '', %d)", $node->nid, $node->runtime, $node->active);
$i=0;
foreach ($node->choice as $choice) {
if ($choice['chtext'] != '') {
db_query("INSERT INTO {rankvote_choices} (nid, chtext, chvotes, chorder) VALUES (%d, '%s', %d, %d)", $node->nid, $choice['chtext'], $choice['chvotes'], $i++);
}
}
}
/**
* Implementation of hook_link().
*/
function rankvote_link($type, $node = 0, $main) {
$links = array();
if ($type == 'page' && user_access('access content')) {
$links[] = l(t('votes'), 'rankvote', array('title' => t('View the list of Ranking Votes on this site.')));
}
return $links;
}
/**
* Implementation of hook_menu().
*/
function rankvote_menu($may_cache) {
$items = array();
if($may_cache) {
$items[] = array('path' => 'node/add/rankvote', 'title' => t('ranking vote'),
'access' => user_access('create ranking votes'));
$items[] = array('path' => 'rankvote', 'title' => t('ranking votes'),
'callback' => 'rankvote_page',
'access' => user_access('access content'),
'type' => MENU_SUGGESTED_ITEM);
$items[] = array('path' => 'rankvote/vote',
'title' => t('vote'),
'callback' => 'rankvote_vote',
'access' => user_access('vote on ranking votes'),
'type' => MENU_CALLBACK);
}
else {
if (arg(0) == 'node' && is_numeric(arg(1))) {
$node = node_load(array('nid' => arg(1)));
if ($node->type == 'rankvote' && $node->allowvotes) {
$items[] = array('path' => 'node/'. arg(1) .'/results',
'title' => t('results'),
'callback' => 'rankvote_results',
'access' => user_access('access content'),
'weight' => 3,
'type' => MENU_LOCAL_TASK);
}
}
}
return $items;
}
/**
* Determine an adjusted user id, to allow for basic tracking of anonymous
* users (IP-based).
*/
function rankvote_uid() {
global $user;
if ($user->uid) {
// Pad the UID with underscores to allow a simple strstr() search
$id = '_'. $user->uid .'_';
}
else {
$id = $_SERVER['REMOTE_ADDR'];
}
return $id;
}
/**
* Implementation of hook_load().
*/
function rankvote_load($node) {
// Load the appropriate choices into the $node object
$rankvote = db_fetch_object(db_query("SELECT runtime, voters, active FROM {rankvote} WHERE nid = %d", $node->nid));
$result = db_query("SELECT chtext, chvotes, chorder FROM {rankvote_choices} WHERE nid=%d ORDER BY RAND()", $node->nid);
while ($choice = db_fetch_array($result)) {
$rankvote->choice[$choice['chorder']] = $choice;
}
// Determine whether or not this user is allowed to vote
$rankvote->allowvotes = false;
if (user_access('vote on ranking votes')) {
if(!strstr($rankvote->voters, rankvote_uid())) {
$rankvote->allowvotes = $rankvote->active;
}
}
return $rankvote;
}
/**
* Implementation of hook_node_name().
*/
function rankvote_node_name($node) {
return t("Ranking Vote");
}
function rankvote_page() {
// List all Ranking Votes
$result = pager_query("SELECT DISTINCT(n.nid), n.title, p.active, n.created, SUM(c.chvotes) AS votes FROM {node} n ". node_access_join_sql() ." INNER JOIN {rankvote} p ON n.nid=p.nid INNER JOIN {rankvote_choices} c ON n.nid=c.nid WHERE type = 'rankvote' AND status = 1 AND ". node_access_where_sql() ." AND moderate = 0 GROUP BY n.nid, n.title, p.active, n.created ORDER BY n.created DESC", 15);
$output = '<ul>';
while ($node = db_fetch_object($result)) {
$output .= '<li>'. l($node->title, "node/$node->nid") .' - '. format_plural($node->votes, '1 vote', '%count votes') .' - '. ($node->active ? t('open') : t('closed')) . '</li>';
}
$output .= '</ul>';
$output .= theme("pager", NULL, 15);
print theme('page', $output);
}
/**
* Implementation of hook_perm().
*/
function rankvote_perm() {
return array('create ranking votes', 'vote on ranking votes');
}
/**
* Creates a simple teaser that lists all the choices.
*/
function rankvote_teaser($node) {
if (is_array($node->choice)) {
foreach ($node->choice as $k => $choice) {
$teaser .= '* '. $choice['chtext'] .'\n';
}
}
return $teaser;
}
/**
* Generates the voting form for a ranking vote.
*/
function rankvote_view_voting(&$node, $main, $page, $block) {
$output = '<div class="rankvote">';
$form = '<div class="vote-form">';
$form .= '<div class="choices">';
if ($node->choice) {
$options = drupal_map_assoc(range(1, count($node->choice)));
foreach ($node->choice as $i => $choice) {
$form .= form_select(drupal_specialchars($choice['chtext']), "choice][". $choice['chorder'], -1, $options, '', 0, false, true);
}
}
$form .= '</div>';
$form .= form_hidden('nid', $node->nid);
$form .= form_submit(t('Vote'), 'vote') .'</div>';
$output .= form($form, 'post', url('rankvote/vote/'. $node->nid));
$output .= '</div>';
return $output;
}
/**
* Generates a graphical representation of the results of a ranking vote.
*/
function rankvote_view_results(&$node, $main, $page, $block) {
// Display the results
// Count the votes and find the maximum
$temp = array();
foreach($node->choice as $i => $choice) {
$temp[$i] = $choice['chvotes'];
}
asort($temp);
// Output the divs for the text, bars and percentages
$output .= '<div class="rankvote">';
if ($block) {
$output .= '<div class="title">'. $node->title .'</div>';
}
$output .= '<ul>';
foreach($temp as $i => $score) {
$output .='<li>'. drupal_specialchars($node->choice[$i]['chtext']) .' <small>score = '. $node->choice[$i]['chvotes'] . '</small></li>';
}
$output .= '</ul></div>';
return $output;
}
/**
* Callback for the 'results' tab for ranking votes you can vote on
*/
function rankvote_results() {
if ($node = node_load(array('nid' => arg(1)))) {
print theme('page', node_show($node, 0), $node->title);
}
else {
drupal_not_found();
}
}
function _valid_rankvote($choice) {
$temp = array();
foreach($choice as $rank) {
$temp[] = $rank;
}
sort($temp);
for ($i=0; $i < count($temp); ++$i) {
if ($i != $temp[$i]-1) return false;
}
return true;
}
/**
* Callback for processing a vote
*/
function rankvote_vote(&$node) {
$nid = arg(2);
if ($node = node_load(array('nid' => $nid))) {
$edit = $_POST['edit'];
$choice = $edit['choice'];
$vote = $_POST['vote'];
if (isset($choice) && count($choice) == count($node->choice)) { //need to check valid vote data here
if (_valid_rankvote($choice)) {
if ($node->allowvotes) {
$id = rankvote_uid();
$node->voters = $node->voters ? ($node->voters .' '. $id) : $id;
db_query("UPDATE {rankvote} SET voters='%s' WHERE nid = %d", $node->voters, $node->nid);
foreach($choice as $i => $rank) {
db_query("UPDATE {rankvote_choices} SET chvotes = chvotes + %d WHERE nid = %d AND chorder = %d", $rank, $node->nid, $i);
$node->choice[$i]['chvotes'] += $rank;
}
$node->allowvotes = false;
drupal_set_message(t('Your vote was recorded.'));
}
else {
drupal_set_message(t("You're not allowed to vote on this ranking vote."), 'error');
}
} else {
drupal_set_message(t("Each choice should get a unique rank for the vote to be valid."), 'error');
}
} else {
drupal_set_message(t("All choices must be ranked for the vote to be valid."), 'error');
}
drupal_goto('node/'. $nid);
}
else {
drupal_not_found();
}
}
/**
* Implementation of hook_view().
*
* @param $block
* An extra parameter that adapts the hook to display a block-ready
* rendering of the ranking vote.
*/
function rankvote_view(&$node, $teaser = FALSE, $page = FALSE, $block = FALSE) {
global $user;
$output = '';
if ($node->allowvotes && ($block || arg(2) != 'results')) {
$output .= rankvote_view_voting($node, $main, $page, $block);
}
else {
$output .= rankvote_view_results($node, $main, $page, $block);
}
// Special display for side-block
if ($block) {
// No 'read more' link
$node->body = $node->teaser = '';
$links = link_node($node, $main);
$links[] = l(t('older ranking votes'), 'rankvote', array('title' => t('View the list of ranking votes on the site.')));
if ($node->allowvotes && $block) {
$link[] = l(t('results'), 'node/'. $node->nid .'/results', array('title' => t('View the current ranking vote results.')));
}
$output .= '<div class="links">'. theme("links", $links) .'</div>';
}
$node->body = $node->teaser = $output;
}
/**
* Implementation of hook_update().
*/
function rankvote_update($node) {
db_query('UPDATE {rankvote} SET runtime = %d, active = %d WHERE nid = %d', $node->runtime, $node->active, $node->nid);
db_query('DELETE FROM {rankvote_choices} WHERE nid = %d', $node->nid);
foreach ($node->choice as $choice) {
$chvotes = (int)$choice['chvotes'];
$chtext = $choice['chtext'];
$i=0;
if ($chtext != '') {
db_query("INSERT INTO {rankvote_choices} (nid, chtext, chvotes, chorder) VALUES (%d, '%s', %d, %d)", $node->nid, $chtext, $chvotes, $i++);
}
}
}
for all slackers if u had install slack and got MySQL error at the login prompt, here what u should do in shell su and write ur root password su mysqluser This logs you into the 'mysql' user account Next, run: mysql_install_db This will create the needed databases and set their permissions properly.
next time when u reboot ur slack u will not see this error agine
Tw33Ty
Here we prepare for our involvment in the SSTE FOSS Conference
We need Laptops to do demonstrations of GNU/Linux desktops in breaks between conference sessions.
follows is a list of people who promised to provide modern laptops
follows is a list of people who promised to provide old laptops
and here is a list of potential laptop owners, guys can you attend and bring your lappies??
Since we where asked to represent arabization efforts (we will represent both EGLUG and Arabeyes), we would better distribute an Arabic enabled live distro.
Arabbix 0.8 is very out of date and has various problems, arabbix 0.9 is very alpha and wouldn't work, if we have enough time we will create a quick mod of Knoppix, Morphix or Mandrake Move.
otherwise we should have 5 copies of Arabbix 0.8 for demonstration purposes.
we will probably distyribute Knoppix, we tend to favour Move for its ease of use but this time I think features are more important than ease of use.
we shall also have 20 copies of phaeronix and hopefully phaeron will be there to demonstrate and tell the people about it.
everything will be in arabic only, no need for dual and we can't afford it anyway
the important thing is to make a splash, we need brochures to tell about EGLUG, a draft is ready, we've got no time to do fancy formatting but maybe we'll manage something.
since the events don't provide much techinical info and rather focus on large aspects it would be nice to provide informational pamphlets, we'll use the ones we used on the InstallFest
it would also be nice if we distribute the alex case study acompanied by a list of future/potential case studies, anyone knows of good uses of FOSS in Egyptian organizations??
we shall give a presentation about Arabic community efforts and arabization, we'll recycle slides from our old seminars in universities
the event is open to the public, I hope we get as many EGLUG members as is humanly possible to attend.
people attending (add your name here)
what else
بدأت مجموعة مستخدمى جنو لينوكس فى مصر عام 2004 وهي مجموعة غير رسمية من المتطوعين المصريين من مختلف الخلفيات والأعمار جمعنا اﻹيمان بفلسفة البرمجيات الحرة ونموذج المصادر المفتوحة وحب نظم الجنو/لينوكس
البعض مننا متخصصين، هواة، أو مستخدمين عاديين...
البعض مننا يعتمدون على تلك البرمجيات في أعمالهم بينما ينتفع بها البعض الآخر في إستخدامهم الشخصي
لكننا نتعاون في مناخ اجتماعي ديمقراطي من أجل تبادل ونشر المعرفة
Web: http://www.eglug.org email: info@eglug.org irc: #eglug @ irc.freenode.org
تجتمع المجموعة كل سبت فى ساقية عبد المنعم الصاوى بالزمالك من الساعة 3 مساءا حتى الساعة 7 مساءا
س: لينوكس؟ يونيكس؟ ايه الفرق؟
ج: يمكن ده تبسيط زيادة شوية لكن اليونكس مش نظام تشغيل؛ اليونكس فكره. لما تستخدم Solaris أو AIX أو لينوكس، انت بتستخدم نظام تشغيل طلع من مجموعه متراكمه من الأفكار واللى اسمها يونكس. فى الحقيقه، احنا بنميل لتسمية لينوكس و Solaris مثلا، نكهات من يونكس. الموضوع عامل شويه زى الأيس كريم: لما تاكل أيس كريم فانيليا، ده بالتحديد نكهة فانيليا، لكنو برضه معمول بالطريقه اللى الأيس كريم معمول بيها. عشان كده، اللينوكس مش يونكس، لكنو نظام تشغيل شبيه باليونكس.
س: هو لينوكس مش نظام تشغيل سطر أوامر؟ عشان كده أنا بافضل NT/Windows XP/2000.
ج: ده صحيح تماما. قلب لينوكس فى سطر الأوامر. بس ده مش معناه، على أى حال، ان كل شغلك على لينوكس لازم يكون من سطر الأوامر. فى واجهات جرافيكس ممتازه تقريبا لأى مهمه تنفيذيه ممكن تفكر فيها. الطريقه اللى معظم التطبيقات (applications) دى اتصممت بيها هى انو يبقى فى برنامج سطر أوامر، بعد كده تبنى برنامج تانى يكون واجهة مرسومة من فوقيه. ده معناه انك حر تختار أى طريقه تعجبك عشان تنجز الشغل بتاعك.
على مستوى أعمق، ده مفهوم أساسى فى اللينوكس؛ أدوات سطر الأوامر بـواجة جرافيك اختياريه. ده مش بس معناه إنك تقدر تختار إزاى تنجز الشغل، لكن كمان بتفصل الكود و التصميم بتاع الواجهة من الـكود الى بيقوم بالشغل الفعلى. وعشان كده، لو لأى سبب الـواجهة الجرافيك مش ممكن الوصول ليه (زى لو بتعمل telnetting عشان تعمل شغلك) لسه برضه تقدر تنجز كل حاجه.
وعلى العكس تماما، لو معندكش الـ GUI فى الوندوز يبقى انت مزنوء. فى الوندوز، مافيش فصل للـ GUI من نواة عمليه نظام التشغيل. ده واحد من الأسباب الرئيسيه ليه الأنظمه المبنيه على يونكس زى لينوكس معروفين بالثبات بتاعهم. المحافظه على الحاجات بسيطه ومتقسمه لأجزاء مستقله.
س: خللينا نقول أنا عاوز ابدأ أفكر فى الاستقاده من اللينوكس فى مكان شغلى. أبدأ منين؟
ج: ده فى الحقيقه يتوقف على احتياجاتك. بالنسبة لوظائف السيرفر أقدر أقولك و أنا متطمن ان اللينوكس لحد كبير يقدر يعمل كل حاجه انت محتاجها. عشان كده ده غالبا مكان كويس للبدايه. ايه رأيك فى تشغل أيميل سيرفر على الشبكه بتاعتك ؟ ده غالبا مش هياخد أكتر من ربع ساعة.
و احنا فيها، ممكن برضه تفكر فى استخدام لينوكس سيرفر للمفلات المشتركة لأجهزة الويندوز اللى عندك. و سيرفر للبرينتر. وماتقلقش من كل مستخدمين الماكنتوش دول؛ اللينوكس فصيح فى AppleTalk وبسعاده هيوصللهم ببقيت العالم.
محتاج ويب-سيرفر كمان؟ خدلك بصه على أباتشى (Apache). أباتشى ده أكتر ويب سيرفر مستخدم فى العالم، ووبئاله كده مدة طويله أوى وهايفضل كده لفتره طويله أوى. وده مش مفاجئ لأنه حر، مفتوح المصدر، مستقر، مرن بشكل مايتصدئش، وناصح.
عاوز Application server؟ استخدم TomCat أو JBOSS. عاوز LDAP؟ أهو عندك. Groupware؟ فى بدايل كتيره. FTP؟ أيييوه.سيرفر محادثة؟ أكيد. سيرفر قواعد بيانات؟ MySQG/postgreSQL/Firebird/الخ.
و كمان لينوكس بيعمل فاير-وول ممتازه و/أو راوتر.
زى ما قولنا، الموضوع كله متوقف على احتياجاتك، حاول تشرح طلباتك لواحد من المتطوعين وشوف هما يقدرو يطلعو بإيه.
س: حلو أوى، إيه بقى نظام عقود الدعم و الضمان و الحاجات دى؟
عشان كده احنا عندنا شركات لينوكس، شركات كتير بيعرضو عقود دعم وأنواع الضمانات اللى انت ممكن تكون متعود عليها، الكويس ان الدعم دلوقتى بقى سوق فيه منافسه حقيقيه عشان كل الشركات دى ممكن توصل للمصدر البرمجى وتقدر تعدل وتخدم السوفت-وير بأى طريقه ممكنه. مش عاجبك الـService provider بتاعتك دلوقتى؟ غير الشركه وشوف واحده أحسن. الحاجه التانيه الكويسه إنك ممكن تروح لشركه محليه، أو شركه صغيره لو حبيت. بعد كده، فى دايما جماعات على النت مستعدة تساعدك فى كل أسئلتك و تقدملك دعم مجانى، ممكن حتى تتصل بمبرمجين السوفت-وير على طول، أو تعينهم عندك،
س: أد إيه لينوكس ماشى على المواصفات و المعايير؟
ج: اللينوكس ممكن يكون هو نفسة معيار للمطابقة للمواصفات.
لما تفكر فيها، ماكنش هايكون فى لينوكس من غير مقاييس ومن غير الإلتزام فى اتباعها. فى ميات من الألوف من المبرمجين باتساع العالم شغالين فى لينوكس، والطريقه الوحيده لمصمم interface فى بومباى، مثلا، عشان ينسق شغله مع مبرمج فى نيويورك أنو يكون فى شوية مقاييس بتحكم الشغل. ده بيكون فى بروتوكولات الشبكات، تصميم الـUI، بناء الملفات، هيراركية نظام-الملف، كل أنواع الـ API، الخ.
المقاييس هى الهوا اللى لينوكس بيتنفسه.
اللينوكس حتى بيعرف إزاى يتعامل مع أنظمه تانيه مش بتستجيب للمقاييس العامه. مثال كويس أوى هو وثائق مايكروسوفت أوفيس، ودول مملوكين ولسه ملهومش توثيق واللى (بعد شغل جامد كتير وهندسه عكسيه reverse engineering) ممكن يتشافو ويتعدلو باللينوكس.
اللينوكس بيتكلم كل اللغات، حتى اللغات البايظة.
س: تمام، انتو اقنعتونى. أنا هركب لينوكس النهارده. سيرفر ميل، سيرفر ويب، سيرفر قواعد بيانات، سيرفر DNS، ديسكتوب لينوكس فى قسم التسويق، بطارييق فى الحسابات، ماندريك على جهازى الشخصى ميكرو لينكس على الالة الحسبة بتاعتى.
ج: ماشى ماشى، إهدا شويه. سهل ان الواحد يبقى متحمس للينوكس، احنا عارفين.
(أهلا بيك معانا و متنساش تنضم ل http://www.eglug.org
س: لينوكس؟ يونيكس؟ ايه الفرق؟
ج: يمكن ده تبسيط زيادة شوية لكن اليونكس مش نظام تشغيل؛ اليونكس فكره. لما تستخدم Solaris أو AIX أو لينوكس، انت بتستخدم نظام تشغيل طلع من مجموعه متراكمه من الأفكار واللى اسمها يونكس. فى الحقيقه، احنا بنميل لتسمية لينوكس و Solaris مثلا، نكهات من يونكس. الموضوع عامل شويه زى الأيس كريم: لما تاكل أيس كريم فانيليا، ده بالتحديد نكهة فانيليا، لكنو برضه معمول بالطريقه اللى الأيس كريم معمول بيها. عشان كده، اللينوكس مش يونكس، لكنو نظام تشغيل شبيه باليونكس.
س: هو لينوكس مش نظام تشغيل سطر أوامر؟ عشان كده أنا بافضل NT/Windows XP/2000.
ج: ده صحيح تماما. قلب لينوكس فى سطر الأوامر. بس ده مش معناه، على أى حال، ان كل شغلك على لينوكس لازم يكون من سطر الأوامر. فى واجهات جرافيكس ممتازه تقريبا لأى مهمه تنفيذيه ممكن تفكر فيها. الطريقه اللى معظم التطبيقات (applications) دى اتصممت بيها هى انو يبقى فى برنامج سطر أوامر، بعد كده تبنى برنامج تانى يكون واجهة مرسومة من فوقيه. ده معناه انك حر تختار أى طريقه تعجبك عشان تنجز الشغل بتاعك.
على مستوى أعمق، ده مفهوم أساسى فى اللينوكس؛ أدوات سطر الأوامر بـواجة جرافيك اختياريه. ده مش بس معناه إنك تقدر تختار إزاى تنجز الشغل، لكن كمان بتفصل الكود و التصميم بتاع الواجهة من الـكود الى بيقوم بالشغل الفعلى. وعشان كده، لو لأى سبب الـواجهة الجرافيك مش ممكن الوصول ليه (زى لو بتعمل telnetting عشان تعمل شغلك) لسه برضه تقدر تنجز كل حاجه.
وعلى العكس تماما، لو معندكش الـ GUI فى الوندوز يبقى انت مزنوء. فى الوندوز، مافيش فصل للـ GUI من نواة عمليه نظام التشغيل. ده واحد من الأسباب الرئيسيه ليه الأنظمه المبنيه على يونكس زى لينوكس معروفين بالثبات بتاعهم. المحافظه على الحاجات بسيطه ومتقسمه لأجزاء مستقله.
س: خللينا نقول أنا عاوز ابدأ أفكر فى الاستقاده من اللينوكس فى مكان شغلى. أبدأ منين؟
ج: ده فى الحقيقه يتوقف على احتياجاتك. بالنسبة لوظائف السيرفر أقدر أقولك و أنا متطمن ان اللينوكس لحد كبير يقدر يعمل كل حاجه انت محتاجها. عشان كده ده غالبا مكان كويس للبدايه. ايه رأيك فى تشغل أيميل سيرفر على الشبكه بتاعتك ؟ ده غالبا مش هياخد أكتر من ربع ساعة.
و احنا فيها، ممكن برضه تفكر فى استخدام لينوكس سيرفر للمفلات المشتركة لأجهزة الويندوز اللى عندك. و سيرفر للبرينتر. وماتقلقش من كل مستخدمين الماكنتوش دول؛ اللينوكس فصيح فى AppleTalk وبسعاده هيوصللهم ببقيت العالم.
محتاج ويب-سيرفر كمان؟ خدلك بصه على أباتشى (Apache). أباتشى ده أكتر ويب سيرفر مستخدم فى العالم، ووبئاله كده مدة طويله أوى وهايفضل كده لفتره طويله أوى. وده مش مفاجئ لأنه حر، مفتوح المصدر، مستقر، مرن بشكل مايتصدئش، وناصح.
عاوز Application server؟ استخدم TomCat أو JBOSS. عاوز LDAP؟ أهو عندك. Groupware؟ فى بدايل كتيره. FTP؟ أيييوه.سيرفر محادثة؟ أكيد. سيرفر قواعد بيانات؟ MySQG/postgreSQL/Firebird/الخ.
و كمان لينوكس بيعمل فاير-وول ممتازه و/أو راوتر.
زى ما قولنا، الموضوع كله متوقف على احتياجاتك، حاول تشرح طلباتك لواحد من المتطوعين وشوف هما يقدرو يطلعو بإيه.
س: حلو أوى، إيه بقى نظام عقود الدعم و الضمان و الحاجات دى؟
عشان كده احنا عندنا شركات لينوكس، شركات كتير بيعرضو عقود دعم وأنواع الضمانات اللى انت ممكن تكون متعود عليها، الكويس ان الدعم دلوقتى بقى سوق فيه منافسه حقيقيه عشان كل الشركات دى ممكن توصل للمصدر البرمجى وتقدر تعدل وتخدم السوفت-وير بأى طريقه ممكنه. مش عاجبك الـService provider بتاعتك دلوقتى؟ غير الشركه وشوف واحده أحسن. الحاجه التانيه الكويسه إنك ممكن تروح لشركه محليه، أو شركه صغيره لو حبيت. بعد كده، فى دايما جماعات على النت مستعدة تساعدك فى كل أسئلتك و تقدملك دعم مجانى، ممكن حتى تتصل بمبرمجين السوفت-وير على طول، أو تعينهم عندك،
س: أد إيه لينوكس ماشى على المواصفات و المعايير؟
ج: اللينوكس ممكن يكون هو نفسة معيار للمطابقة للمواصفات.
لما تفكر فيها، ماكنش هايكون فى لينوكس من غير مقاييس ومن غير الإلتزام فى اتباعها. فى ميات من الألوف من المبرمجين باتساع العالم شغالين فى لينوكس، والطريقه الوحيده لمصمم interface فى بومباى، مثلا، عشان ينسق شغله مع مبرمج فى نيويورك أنو يكون فى شوية مقاييس بتحكم الشغل. ده بيكون فى بروتوكولات الشبكات، تصميم الـUI، بناء الملفات، هيراركية نظام-الملف، كل أنواع الـ API، الخ.
المقاييس هى الهوا اللى لينوكس بيتنفسه.
اللينوكس حتى بيعرف إزاى يتعامل مع أنظمه تانيه مش بتستجيب للمقاييس العامه. مثال كويس أوى هو وثائق مايكروسوفت أوفيس، ودول مملوكين ولسه ملهومش توثيق واللى (بعد شغل جامد كتير وهندسه عكسيه reverse engineering) ممكن يتشافو ويتعدلو باللينوكس.
اللينوكس بيتكلم كل اللغات، حتى اللغات البايظة.
س: تمام، انتو اقنعتونى. أنا هركب لينوكس النهارده. سيرفر ميل، سيرفر ويب، سيرفر قواعد بيانات، سيرفر DNS، ديسكتوب لينوكس فى قسم التسويق، بطاريق فى الحسابات، ماندريك على جهازى الشخصى ميكرو لينكس على الالة الحسبة بتاعتى.
ج: ماشى ماشى، إهدا شويه. سهل ان الواحد يبقى متحمس للينوكس، احنا عارفين.
(أهلا بيك معانا و متنساش تنضم ل http://www.eglug.org
س: ايه هو اللينوكس ده بقى؟
جـ: اللينوكس ده نظام تشغيل للكمبيوتر بتاعك. نظام التشغيل ده حاجه زى أعلى إداره فى شركه؛ بيتحكم فى كل حاجه ومسئول عن إزاى الحاجات بتشتغل. اللينوكس نظام تشغيل تمام زى الوندوز.
س: طاب وإيه اللى يخليينى اعوز لينوكس بقى؟ مأنا عندى وندوز.
جـ: ﻷسباب كتيييره أوى. لينوكس حر - وببلاش. من غير أى فلوس، وتقدر تعمل فيه/بيه زى ما تحب، تقدر تدى منه نسخ مجانية لصحابك ، أو "تعدل فيه" لغاية ما توصل لدرجة المصدر البرمجى . المصدر البرمجى ده زى وصفة الأكل ،مجموعة التعليمات اللى بينفذها الكمبيوتر واللى لما نجمعهم مع بعض يعملوا نظام التشغيل.
س: مقدرش اعمل كده فى الوندوز؟
جـ: ﻷ. انت مش بتجيب الوندوز بالمجان، والمصدر البرمجى أصلا مش متاح مع الوندوز. انت مزنوق مع نظام الوندوز زى ما هو.
س: بس ماهو الوندوز بيعمل كل الحاجات اللى أنا عاوزو يعملها.
جـ: مش صحيح. الوندز بيعمل بس الحاجات اللى انت بتبقى متوقع أنه يعملها. فى حاجات تانيه كتييير أوى تقدر تعملها بالكمبيوتر بتاعك، بس مابتعملهاش بالوندوز ﻷنك يا إما ماتئدرش، أو ﻷنها صعبه، أو ﻷنها بتكلف فلوس كتير لسوفت-وير زياده، أو ﻷنها مش راسية كفايه.
س: زى ايه؟
جـ: جربت مونتاج الصوت أبدا قبل كده؟ ببلاش؟ مونتاج الفيديو؟ ببلاش؟ مونتاج الصور؟ تعمل سيرفر e-business كامل فى 15 دقيقه؟ تشغل أى نوع من فيلات الأوديو/فيديو من غير ماتحتاج تصطاد الكوديكس (codecs)، لأنها بتشتغل؟ ببلاش؟ عايز برنت سيرفر (print server) للأوفيس ببلاش؟ طاب ايه رأيك فى ويب سيرفر (web server)؟ ولا إيميل سيرفر (e-mail server)؟ ولا انت محتاج بس نظام نشر ديسكتوب (desktop publishing system)؟ ولا ايه رأيك فى كل الحاجات دى فى نفس الوقت؟
س: ببلاش؟
جـ: ببلاش. اللينوكس حر وببلاش لأنه مكتوب عن طريق ألاف من المتطوعين من كل حته فى العالم، مش بتاع أى شركه زى ما الوندوز بتاع ميكروسوفت. اللينوكس حقيقى بتاع الناس، ديمقراطية ديجيتال.
س: طاب ومين هايساعدنى؟
جـ: إحنا، مجموعة مستخدمى اللينوكس المصرية (www.eglug.org).
س: ببلاش؟
جـ: أيييوه، إحنا كمان متطوعين.
س: أنا مش مصدئكو. ماعدش فى حاجه زى غدوه ببلاش.
جـ: بس انت تعاله وبص بصه، إحتمال تتفاجئ
س: أنا سمعت عن اللينوكس، بس لسه مش فاهم إزاى ممكن يكون free ؟
ج: إنت بتتكلم عن الفلوس، مش كده؟ طيب، أول حاجه، واحد من الأسباب انه ببلاش إن الناس اللى شغالين عليه مابيطلبوش فلوس علشان يشتغلو. احتمال ده يكون غريب شويه؛ حد بيشتغل جامد علشانك ببلاش؟ لكن الموضوع ممكن يتفهم اكتر شويه، لو حاولت تتخيل حاجه زى 100 واحد شغالين سوا ببلاش علشان بعض: واحد يساهم بس بمحصول جهده الشخصى، لكن يستفيد من جهود 99 تانيين، زياده على جهده هو نفسه. طبعا، فى شوية ناس بيدفعلهم عشان يشتغلو فى اللينوكس، لكن ده عادة بيبقى عن طريق قنوات زى رعايه من شركات زى IBM.
س: IBM؟ لأ ماتهرجش؟ دول ناس جامدين أوى.
ج: أيوه هما جامدين. مش هما لوحدهم. الحكومه الأمريكيه كمان بترعى مبرمجين المصدر المفتوح، أساسا على المستوى الأدنى من الحاجات التقنية. مثلا Sun Microsystems بتساهم كتير برضه، وكمان كتير من الحكومات الأوروبيه زى الحكومه الألمانيه والفنلنديه. البرازيل برضه مستخدمة لينوكس تئيله.
اللينوكس حقيقى ثوره فى تقدم. موجة مد ديجيتال عالميه عماله بتكبر وبس، وعلشان كده احنا عندنا مجموعة مستخدمين لينوكس مصريه.
س: لو IBM و Sun Microsystems ليهم فاللينوكس، إزاى ممكن يكون ببلاش؟ هما مش لازم يعملو فلوس؟
ج: هما فعلا بيعملو فلوس. IBM مثال ممتاز لبيزنيس هادف للربح بيعدل نفسه لعالم السوفت-وير المجانى المفتوح المصدر اللى مش ممكن تصدقه. السر هو تحويل مورد دخلك للخدمات والهارد-وير.
س: ببلاش، طبعا، غالبا معناه إنو مش أد كده.
ج: العكس تماما. تخيل إنك كنت مبرمج فى، مثلا، ميكروسوفت. كان هايبقى بيدفعلك عشان تكتب برامج، ده صحيح، لكنك كنت هاتبقى شغال فى اللى الشركة عايزاك تشتغل فيه، مش اللى انت فعلا كنت عايز تشتغل فيه. المبرمجين اللى بيكتبو لينوكس سوفت-وير بيقدرو يختارو بالظبط اللى بيشدهم ويحفز إبداعهم. ده بيعمل فرق مش ممكن تصدقه، ودى حاجه ممكن تحسها بس لو ابتديت تستخدم سوفت-وير مفتوح المصدر زى لينوكس.
س: ماشى، الموضوع عجبنى. بس قلقان ان الحاجات اللى باستخدمها فى الوندوز مش هاتبقى موجوده فى اللينوكس. حاجات باستخدمها فى شغل بجد.
ج: طيب، فى أخبار كويسه وأخبار وحشه. الأخبار الوحشه هى أنهم مش هايكونو موجودين. فى بعض الحالات، وندوز سوفت-وير هايشتغل على لينوكس، بس دى قصه تانيه.
الأخبار الكويسة، وممكن تكون قادر تخمن، أنو فى بدايل لكل حاجه تقريبا، متاحه على لينوكس وغالبا أحسن. فى معضم الحالات، مش هتلاقى مشكله ان تلاقى بديل لـ، قول مثلا، مايكروسوفت ورد "Microsoft Word"، لكن بقى لو فى مشكله، هتكون فى إنك تختار تستخدم أنهى واحد من البدايل؛ OpenOffice ؟ KWord ؟ Abiword ؟ KWrite ؟ ...
بتستخدم Excel ؟ طاب جرب Gnumeric ،Openoffice Calc ،KSpread. محتاج Photoshop أوى أوى؟ عشان ده فى الـ Gimp. ووقت ما تجرب Gimp، خدلك فكره برضه عن Cinelerra و Film-Gimp كمان دول بيستخدمو فى السنيما، وممكن كمان تبدل 3D Studio Max بـ Blender.
لو بتبرمج بالوندوز، يبقى غالبا بتستخدم Visual Basic. عشان ده، فى Gambas، ...
طبعا الورقة دى أقصر من انى أرص كل لغات البرمجة اللى ممكن تستخدمها فى اللينوكس، أو كل بيئات التنميه "development environments". مبرمجين الوندوز اللى بينقلو للينوكس عادة بيحسو إنهم زى ما يكونو ماتو وراحو الجنه.
ليه ماتطلبش من حد من جماعة مستخدمى اللينوكس يعرضلك البدايل بتاعت الوندوز سوفت-وير المفضل عندك؟
س: كل ده ؟ كويس أوى، بس كل ده لازم عايز كمبيوتر جامد أوى.
ج: ده مش وندوز. كل الإختيارات دى وكل القوه دى مش لازم تكلفك موارد ضخمه. تركيب لينوكس أساسى تماما هايشتغل كويس على رامات 4 ميجا. علشان الاستخدام يومى عادى، هاتكون تمام بـ 32 أو 64 ميجا. وانت مش محتاج أجدد و أسرع بروسيسور كمان، أى حاجه من 486 أو أعلى هايكون كويس.
اللينوكس مش طماع.
س: يبقى هو ببلاش، فعال، عنده سوفت-وير كتير، مش محتاج كومبيوتر غالى. إحنا ناسيين حاجه؟
ج: أيوه. ليك حرية تلعب فى المصدر البرمجى (الوصفة) بتاع السوفت-وير لما تحس إنك محتاج تعدل أى حاجه فيه.
س: يا سلام دى حاجات عظيمة أوى! أنا مش مصدئكم. فى خدعه. انتو عايزين منى ايه؟
ج: مافيش خدعه. مافيش فخ. بس احنا فعلا عاوزين حاجه منك، احنا عاوزينك تكون مستخدم لينوكس. الموضوع عامل شويه زى لما تسمع أغنيه حلوه، وتقول لصحابك عليها -- بتكسبك حاجه دى؟ لأ؟ يبقى ليه بتعملها؟
س: كويس، أنا هابقى مستخدم لينوكس -- بس استنى، هايحصل ايه لما اتزنئ؟ مين هايساعدنى؟
ج: بالظبط زى ما الليونكس اتعمل بطريقه منتشرة ومش مركزيه، الدعم برضه متاح بطريقه مخصوصه تمام زى الطريقه اللى البرامج اتعملت بيها. فى جماعات من متطوعين اللينوكس على الإنترنيت دايما مستعدين يساعدوك فى اى صعوبات ممكن تكون تواجها.
احنا، جماعة مستخدمى اللينوكس المصرية، واحده من الجماعات دى. فى مساعده متاحه 24 ساعة فى اليوم، 7 أيام فى الأسبوع على ، منتديات على الوب، أوض IRC ، مجموعات ايميل.
لما تحتاس، دايما فى إيد بتساعد -- شاطره وببلاش
FOSS allowed Mohammed Sammer the oppertunity to learn, not just from references but directly from others experience, it gave him peers, mentors, and discples all at once.
it also allowed him to be creative, and for the fruits of his creativity to be appreciated and rendered useful to many, it allwed him to gain status through his honest work all while making more friends and having fun.
Islam again gained alot from the stored knowledge in the community, his ability to do something useful and unique was a satisfying experience.
he explored many avenues of skills and knowledge, and most important of all the community interaction which gave him fertile environment and a cause or a bigger goal.
apart from the knowledge mostafa gained, he managed to make the time he spent on his very personal tasks useful to others instead of being wasted on a one time task.
the important thing is he was able to truely own and cntrol the technology not just in a legal or economical sense, but also in a very technical sense, the very design of the system allows any user who is willing to spend a month to build new things and understand the intimate details of the system.
mostafa is not interested in being anything but a medical researcher, but his new found ability gives him a better oppertunity to choose andutilise software and computer technology in his life, and may even allow him to do some scripts and programs to help in his research one day.
الموضــــوع : بخصوص تقرير الجمعيه العلمية لمهندسي الاتصالات عن اليــوم
الاول (الاربعاء 22/9/2004) لندوتـها " المصادر المفتوحـــــه ومناهضة الاحتكار والهيمنه في صناعة الاتصالات والمعلومات"
عقدت الندوه بنقابة الصحفيين .
الندوه تهدف للتوعيه بأستخدام مصادر المعرفه المفتوحه في التنميه في البلدان الناميه بأعتبارها منهج مضاد للهيمنه والاحتكار. تناولت الندوه في بومها الاول (الاربعاء 22/9/2004) موضوعات :
شارك في اليوم الاول للندوه :
وسط حضور كبير من فئات عمريه مختلفه من اعضاء الجمعيه – المهندسين – الجهات الاكاديميه – قطاع الاعمال – بعض منظمات المجتمع المدني – طلبة الجامعه من كليات العلوم والحاسبات والهندسه – المهتمين – الاعلام التكنولوجي ... تم عرض الموضوعات التاليه:
للمصادر المفتوحه أساس فكري نابع من المنهج العلمي السائد في شتي التخصصات . . فالنتائج العلميه حتي تكون مثبته ومبرره لابد أن تكون قابله للتكرار بالطريقه نفسها . . وبالتالي فان الشرط الرئيسي للاكتشاف هو التعامل معه من خلال المشاركه في المعلومـــات وتمكين الآخرين من الحصول علي المصدر حتي يمكن أزالة كافه العوائق أمام المنهج العلمي في التطوير والتنميه بما يضمن اسـتمرار التقدم بلا توقف . . وهذا المنهج يطابق مع ماينادي به أصحاب منهج المصادر المفتوحه .
المعرفه الانسانيه القائمه علي مصادر مفتوحه ليست منهج الكسالي أو الباحثين عن أشياء جاهزه أو مجانيه ولكنها منهج من يؤمنون بالحريه ويمارسون الانفتاح والعطاء والمشاركه والتعاون مع الآخرين . . وهي ثقافه جديده للمقاومه .
ينشط منهج المصادر المفتوحه في مجالات تصنيع الاجهزة والمعدات والبرمجيات والمعالجات والمحتوي والكتب والبحث العلمـــــــــــي والتعليم والاليكترونيات . . ويبني أصحاب الحركه في هذا الاتجاه هدفا رئيسيا هو الوصول الي أجهزة يتم تصميمها وأنتاجها بنمـوذج معاكس للنموذج المغلق المحمي بحقوق الملكيه الفكريه وحقوق النشر والتأليف وقوانين الاسرار التجاريه وقوانين البراءات ( هــــــذا الوضع أتاح للشركات الاحتكاريه الكبري السيطره علي الاسواق وعلي مقدرات التنميه في البلدان الناميه ) تقوم الحركه علي الركائز التاليه :
حقق حركه المعرفه في مجال البرمجيات ذات المصدر المفتوح ( المتاح سرها الكودي . . لامكانية تعديلها طبقا لاحتياجات المستهلكين . . البلدان الناميه ) . . نجاحات عديده فهناك . . حركه البرمجيات الحره . . مبادره البرمجيات مفتوحه المصدر . . وتنادي الحركه الاولي بأتاحه الحصيله المعرفيه التي تسمح بتشغيل البرنامج والتي يطلق عليها البناء الكودي أو شفرة المصدر . . أتاحه حريــــــــــه تشغيل البرنامج . . حرية دراسه كيفية عمل البرنامج وأمكانية تعديله . . حرية توزيع نسخه من البرنامج . . حرية التعديل . . خلـو ترخيص الاستخدام من التمييز . . الترخيص يكون محايد تكنولوجيا .
حققت الحركات السابقه نجاحا في خلق الاطار القانوني الذي يكفل الحريات السابقه .
يمثل المحتوي المعرفي ركيزه محوريه ونقطه فاصله . . وعنق زجاجه في الانتقال عبر طريق التنميه لبلدنا . . والتمدد في البنيـــــه الاساسيه بدون أن يوازيه تطويرا للمحتوي . . يشكل اعباء كبيره تعيق حركه التنميه ولاتمثل سوي أنفتاحا استهلاكيا علــــــــــــــــــي التكنولوجيا سواء الصناعيه أو سواء في الخدمات . . خدمات الاتصالات والمعلومات وقد بدي واضحا أن الانترنت تمثل وعاء هائــــلا لجمع وتخزين ومعالجة وتحليل واداره المعلومات وتنظيمها وتدويرها بين الجهات التي تطلبها . . وأما المعلومات فهي المحتوي الذي يملء به هذا الوعاء . . وتعددت أنماط المحتوي . . وأصبحنا أمام نتاج أبداعي يتساوي في القيمه مع المحتويات المغلقــــــــــــه . . محتـوي مفتوح أمام الجميع وتم أنتاجه بشكل تعاوني . . ويشمل :
المقالات والصور والمواد المسموعه والمرئيه والاعمال الفنيه والبحوث والتقارير والاخبار . . وهذا يفتح أبواب المشاركه وتنميــــــة الذات بالافاده المتبادله القائمه علي مبدأ النديه مع الآخر بعيدا عن سطوه الاحتكارات ومحظورات وقيود السياسه ومنهجا يســــــــــمح للجادين والطامحين للنمو والاستقلال بالبلدان الفقيره .
أثبتت خبرات وتجارات الأخذ بمنهج المعرفه مفتوحة المصدر في التجارب المحليه من بعض شركات التكنولوجيا في مجال الاتصـــالات والمعلومات . . التأمين والاعتماديه . . وأنخفاض التكلفه الاقتصاديه . . وتطويرا للقدرات البشريه المحليه في مجالات البحــــــــوث والتطوير والاضافه والتعديل .
يتصاعد أستخدام التطبيقات والبرامج مفتوحه المحتوي المعرفي بواسطة شركات السوفت وير الكبري في العالم مثل أوراكل ، IBM . حتي أن أنفاق شركة مثل IBM علي التطوير في هذا الاتجاه بلغ أربعة مليارات دولار .
اعتمدت بعض البلدان في العالم كالصين واسرائيل علي البرمجيات مفتوحة المحتوي المعرفه في التطبيقات المختلفه في حياة المجتمع . . ويمثل هذا نموذجا أحري بالبلدان الناميه والفقيره بالاتجاه نحو هذه الحركه .
حدود الامان الناتج من أستخدام المعرفه مفتوحه المصدر يتعدي حدود الامان في حاله أستخدام المصادر المغلقه . . فمثلا الدبابـــــــه والطائره تعمل بالسوفت وير . . ويمكن من بعد توجيهها لمـــن يعرف أسرار محتوي هذه البرامج . . ويمثل هذا خطرا شديدا علـــي البلدان الناميه التي تستخدم هذه التكنولوجيا بدون معرفه كيف تعمل . . اذ حين أستخدامها يمكن أن يوجهها آخرون لصدور ومدن مستخدميها .
يمثل أستخدام مصادر المعرفه المفتوحه فرصا جديده للاعمال ومواجهة مشاكل التنميه والبطاله .
طرحت تجربه مجموعه مستخدمي جنو / لينوكس . . وهي مجموعه من المتطوعين من مختلف الاعمار . . متخصصين ، هـــــواه ، مستخدمين عاديين . . نموذجا مشرفا . . أنتج اتصالات وتعاون مع بعض الجهات الاكاديميه . . شبكة المعلومات العربيه لمعلومــات حقوق الانسان . . مركز دعم التنميه . . مركز مجتمع المعرفه . . منظمات مجتمع مدني بأيطاليا . . وجمعية تنمية المجتمع المحلي بأبو النمرس . . جمعية التنميه العربيه . . وقد أنتج هذا التعاون . . بناء مركز حاسب مفتوح للجماهير مبني علي البرمجيات الحـره والمصادر المفتوحه . . تنظيم دورات تدريبيه في نظم الجنو / لينوكس لطلاب المدارس الاعداديه في محافظة المنيا . . تنظيـم دورات تدريبيه مجانيه للمبتدئين . . تنظيم ورش عمل متخصصه عن برمجة الوب ، أمان الشبكات ، الاستخدام المتقدم لنظم الجنو لينوكس . . تعريب نظم الاداره للمحتوي وبناء المجتمعات علي الانترنت . . القيام بدراسات حاله لتجارب أستخدام البرمجيات الحره فـــــــــــــي مؤسسات المجتمع المدني ومؤسسات الاعمال الصغيره . . مشاركة بعض المؤتمرات الخاصه بهندسة اللغه بجامعة عين شــــــــ مس وقد أثبتت تجربة هؤلاء الشباب ايضا مدي فاعلية التعاون والحركه في أتجاه المعرفه مفتوحه المصدر في التطوير والتنميه والمقاومه أستمرت الندوه من الساعه 19 وحتي الساعه 22 يوم الاربعاء القادم 29 سبتمبر يستكمل الجزء الثاني في الندوه .
مع أطيب تمنيات الجمعية العلمية لمهندسي الاتصالات
المراسلات : أ.د محمود الحديدي - أ.د مجدي سعيد السوداني / قسم هندسة الاليكترونيات والاتصالات الكهربائيه / كلية الهندسه - جامعة القاهره تليفون : م/ محمود أبوشادي 0122117247 - م/ عبد الوهاب الدقي 0122114410 - م/ محمد أبو قريش (02)3959999-0122170009- أ.د محمود الحديدي 0101504699 بريد اليكتروني abukrish @ intouch. Com فاكس (02)3939946
Choosing three cases demonstarting three examples of FOSS use.
the idea is to show the potential of FOSS by telling short simple stories from EGLUG experience.
the context is to show how FOSS empowers individuals and small entities to develop themselves, focus is on opportunities normaly lost in Egyptian society.
our focus is on individuals and small entities since the rest are well covered by the conference.
By citing them in the form of stories and showing their success
Conclusion: all the above examples were revolving around FOSS and its benefits
البعض منا لم يسمع من قبل كلمة (لينكس) والبعض الأخر قد يكون سمع عنها ولكنه لا يعرف بالضبط ما هو هذا اللينكس زز السبب فى ذللك ان الغالبية لبغضمى من مستخدمى الحاسبات الشخصية ومنذ سنوات عديدة تستخدم نظام النوافذ ، اللينكس هو نظام تشغيل مثل نظام النوافذ تماما ،و يقوم بنفس الوظيفة التى يقوم بها ،نظام تشغيل بوجه عام يتألف من مجموعة من البرامج التى تجعلنا نتعامل مع واحدات الحاسب مثل الشاشة ووحدات التخزين و الطباعة ،وهى التى تجعل التطبيقات التى تستخدمها على حاسباتنا تتعامل مع هذة الوحدات ، فهى التى تتحكم فى طريقة عما وحدات التخزين لكى تمكن البرامج التى نستخدمها من قراءة البانات المخزنة بها،وهى التى تصل البيانات التى نريد مشاهدتها الى الشاشة لكى تعرض عليها،أى ان نظام التشغيل هو حلقة الوصل بين التطبقات التى تستخدمها فى نفس الوقت على الحاسب ،الفرق الكبير بين نظام تشغيل نظام النوفذ و نظام ونظام تشغيل اللينكس ان الأول يباع بمبلغ من المال بينما اللينكس نظان مجانى ،ليس هذا فقط با ان نظام اللينكس من نوعية البرامج التى يطلق عليها (مفتوحة المصدر) اى مخططى البرامج يستطيعون ان يعدلوا فى البرامج التى يتكون منها نظام تشغيل اللينكس لكى يجعلوها تنفذ لهم وظائف خاصة،أما نظام النوافذ فهو مغلق المصدر ، أى لا يمكن لأى شخص ان يقوم بتغير أمر واحد من ملايين الأوامر التى يتكون منها النظام،يمكنك بسهولة اذا كان لديك خط انترنت سريع أن تدخل على مواقع عديدة على شبكة الأنترنت ،و تقوم بتنزيل نظام اللينكس وتستخدمة لتشغيل حاسبك الشخصى ،....أما اذا كنت أكثر مهارة ولديك خبرة فى لغات الحاسب الألى ،فيمكنك ان تقوم بتعديل أوامر نظام اللينكس أو اضافة أوامر جديدة لة لكى يناسب تماما طريقة عملك... الأسباب السابقة تدعو الى الارتباك و الحيرة فالنظامان يستخدمان لتشغيل الحاسبات الشخصية و يؤديان نفس الوظيفة أحدهما مجانى و الأخر ندفع فية مبلغا من المال (ليس بقليل) وأيضا أحدهما يغطى لمستخدمه مرونة فى تغيير أوامره لكى يستطيع تنفيذ أى وظيفة جديدة قد يفكر فيها، بينما الأخر ليس به هذة المرونة بل هو مغلق على الأوامر التى قامتالشلركة النتجة بتصميمها