People have been using computers with DOS and different variations of Windows for quite some time. I do not think anyone could claim that those systems were consistent or easy to use. They have always been a mess. We just happen to know how to use them.
Joel addresses the issue of frustration when moving between platforms: little things that are different frustrate people.
Anyways, if you are just starting to train people (like this is the case), you might train them in Linux or Windows.
Sure, Linux could use some improvements, but those improvements will not happen in a vacuum, in a lab and then deployed to the rest of the world. Just like Windows and the MacOS they will benefit the most from direct and real life exposure.
There are a couple of very nice stories that the Linex people have witnesses over the past few days (my favorite one being a sheep sheppard in the region that fell in love with the Linux distribution they had prepared).
Professors that have offered their input and the help of themselves and their students to improve Linex: This is the kind of thing that you will not see with proprietary software.
Anyways, we are not *that* far, you are just not used to Linux on the desktop. And it will only get better;-)
I believe that Gnumeric is a very advanced spreadsheet. But it will take 5 years to get to the point where Excel is. In some areas, Gnumeric is more advanced than Open Calc, and in some cases, Open Calc is more advanced than Gnumeric.
Open Office is an integrated office suite, so that does help a lot in terms of a unified office suite to deploy to people. To move more people away from Microsoft Office and into an Open Source/Free Software product, I am encouraging people to use OpenOffice.
That being said, Gnumeric has a beautiful code base, and will likely be a nice testing ground for new technologies (as it has always been).
Gnumeric is better suited for people who want to do build a spreadsheets for PDAs which are compatible with Excel, for a works-like scenario, or as a reusable engine. Open Office is a lot harder to hack on currently.
So I see both existing. I am in love with both products.
The Mono implementation (http://www.go-mono.com) and yesterday's release (Mono 0.10) does provide pretty much everything that the Shared Source release does.
Yes, you can do your own memory management if you want (there are various degrees in which you do this, either through the "Disposable" pattern, or by completely rolling your own, using unmanaged code).
It is not on the FAQ as this is more of a CIL core question, rather than being a question about the Mono project itself (which is an implementation of the CIL).
Yes, I have seen the Rox file manager, and I do like it.
You have to understand that the different file managers that you see have different requirements and target audiences. For example, although most of us are running high-end computers these days that have enough CPU power to do all kinds of graphics intensive user interface improvements, and can handle all sorts of situations and combination, many users in the third world countries are stuck with very old machines.
There is no reason why we should marginalize them as users. And I believe that both Rox and gmc fit that bill nicely.
I do not believe that there is a single true solution to all problems. Unix is being used in so many scenarios that it is hard to predict or generalize its use. You see people making Linux run on extremely low end PDAs, sometimes you are memory constrainted; sometimes your are CPU constrainted; Sometimes you are constrainted by the size of the application, and not by the size of available memory; Sometimes you have plenty of CPU to spare.
Although I would love GNOME to have an effort to ship a "light" edition, all I can do is suggest its use. For things to actually happen, interested parties (like yourself) have to take an active role and push for this kind of things to move forward. And by pushing i mean, contributing, packaging, testing, integrating, coding, and everything related to this.
I think its a great idea, and we should have a light version, and a high-end version of GNOME.
If Rox and sawfish fit the bill for your low-end terminals, please go ahead and use those pieces. Your experience will be useful to other people trying to deploy Linux on similar scenarios to you (and there is a lot of impact outside the first world for this kind of setups).
Even if you go with Rox/Sawfish, if you need to run a GNOME app or a KDE app, you will still be able to, but you could manage some precious bandwidth in this particular scenario you describe by using a lighter product.
I do not think you have understood my position when it comes to Mono and GNOME yet. There is a detailed explanation about this here: http://mail.gnome.org/archives/gnome-hackers/2002- February/msg00031.html
The short version of this is:
* I do not have any maintainership control over any piece of GNOME anymore.
* I like everyone else have an opinion on how GNOME would benefit the most.
* People will be free to use the tools the Mono project produces or not use them.
* Mono will integrate with GNOME right away, just like say, Java/GNOME is integrated with GNOME right away.
* So I believe that building apps with Mono will be a nice experience for people in the GNOME world.
I like different technologies from different companies. I like the.NET Framework a lot more than I like the Java platform, but that is my personal choice; And I do like the UltraSparc cpu over any other cpu, and I still love the fact that my IBM laptop is so cheap;-)
So there is a lot of love for different companies and technologies. There are choices for everyone to pick from.
Funny you should say that, because every day I copy my binary from Windows (mcs.exe) and run it on my JIT engine.
I routinely demo this at conferences;-)
This is not a far fetched prediction, I have been using this for months. Our interpreter ran its first code in September. Our JIT has been getting better every day (working since November;-)
Writing about a programmer's life is pretty boring. The programmer might be enjoying himself, but to an external viewer he is only tapping at a keyboard.
That is incorrect. Mozilla is using a dual-licensing strategy. If you want your code incorporated into Mozilla, you have to grant them the permission to license the code under the NPL,
MPL and the GPL.
The fact that the GPL is used in Mozilla is more of a gift to the community to allow them to mix Mozilla code with existing GPL code than Mozilla being forced to use GPL code.
Actually, the Tcl licensing has always been fine (Tcl uses the "Ousterhout" BSD license, which is in essence the X11 license: BSD without the advertisement clause, so it is the best of both worlds).
I know that Richard was never particularly fond of Tcl as a programming language. Maybe this is what you are refering to?
If they were not `truly free software' we would have bigger problems (someone would have to start a reimplementation of X11, telnet, Kerberos, Expat, LibXML, Mesa GL, ftp, Tcl/Tk, BIND, DNS, and anything else released under the X11, the Ousterhout or the BSD licenses, because they are in essence the same thing).
The CLR is already being used to write applications that run on multiple platforms. For example the Compact.NET Framework runs on various of the cpus supported by Windows CE.NET. Now you can write an application for.NET and it will run in any system with a CLR.
This solves a practical problem: now you will be able to "beam" programs from Windows CE machines running on different CPUs. Also,.NET is better than any other Win32 apis.
The CLR also helps the move to 64 bit systems. There are three integer types on the CLR: int32, int64 and native int (which is 32 or 64 depending on the machine).
The Mono project is building a free implementation of such a virtual machine (http://www.go-mono.com). We have a functional JIT engine, a C# compiler and many class libraries. So in the future you could even write applications on Windows and run them on Linux.
Although it is not well known,.NET includes the same kind of functionality to develop "applets".
.NET comes with a security system in place to enable to execute dynamically and untrusted code in your application domain.
For example, you could be running an untrusted math analysis tool that is downloaded from the network into say your spreadsheet program without having to worry about the plugin damaging your system (security system kicks in).
Well, this virus really does not do anything interesting..NET as any other complete programming environment will allow you to create replicating code (oh big surprise).
These kind of virus programs will probably not succeed in the NT world with user permissions or in any system with per-user permissions (Linux). Although theoretically possible (root runs the virus) in practice this kind of virus programs never succeed on the wild due to this kind of security mechanisms.
For.NET "applets" or any other.NET code that is downloaded from the network and executed, the virus would throw an exception because it would not have permission to touch your file system.
You can probably read the rationale for the creation of the GNOME project somewhere on the Web. That plan and motivation is still valid today. We want to have a complete open source solution for the desktop. Not having the foundation for a major component of a complete free system be proprietary.
KDE was gaining momentum, and the result was dangerously approaching a world in which a large portion of the population have a mixed free/proprietary environment.
I of course would love to see the evolution plugin be free. This is something that was debated long and hard at Ximian.
Ximian is a strong software development house, and in order to support our development activities, some of the pieces that we write are becoming proprietary.
The alternative would be to only provide support and services, and stop being a development house. Which is something that does not get me excited in the mornings.
Our current mix is aimed towards maximizing the free software that end users have access to, and allows us to charge users that have the resources to finance our operation.
For instance, most home users and students do not use Exchange or plan on using Exchange. While people in corporations are using Exchange and do not mind paying for getting access to it from Linux.
I am sorry if I did not post earlier today, but I have basically been working all this time on more Open Source/Free Software (Mono, http://www.go-mono.com) and got a lot of work done today;-)
SOAP does not drill any holes that POST would not have.
And you are most likely going to find SOAP engines that perform a lot of error checking and parsing of an XML message behore handing it to you than your average cgi-bin script that gets the POST request.
Rob Pike said in his talk on `System Research is Irrelevant' that 90 to 95% of the code in Plan9 was
code to cope with standards and not with new innovative ideas (tcp/ip, http, corba, unicode, posix, mime, pop, imap, x).
A similar scenario happens with Evolution. Modern applications like Evolution are expected to deal with all sorts of IMAP servers, with all sorts of configurations, in a bug compatible fashion and with different "interpretations" of the standard.
Apply this across the board: authentication through SASL (being used more and more and being pretty cool as well), S/SMTP, S/IMAP, IMAP, POP, the various mail formats in Unix you need to import. Then add to the mix decoding MIME message s (both well formed, and ill formed, standard compliant and non-standard compliant), then generating correct Mime code.
Adding code to support features like disconnected IMAP, downloading only the headers, or the whole thing, making it useful over dialup lines.
The calendar tracks the iMIP, iTIP, ICalendar specifications. And can talk to Outlook 2000 and Outlook XP (they dont talk between each other, for calendaring, btw). And the list goes on and on.
HTML mail is supported, correctly forwarding messages is supported (in any combination that you want;-)
Then add pilot syncing to the mix.
So Evolution is big, because it adapts to the needs of modern users. And it has to cope with the needs of different communities.
Evolution will keep growing to address the needs of more people, and will keep improving. We would of course love to get your contributions to optimize it in every possible way.
People have been using computers with DOS and different variations of Windows for quite some time. I do not think anyone could claim that those systems were consistent or easy to use. They have always been a mess. We just happen to know how to use them.
;-)
Joel addresses the issue of frustration when moving between platforms: little things that are different frustrate people.
Anyways, if you are just starting to train people (like this is the case), you might train them in Linux or Windows.
Sure, Linux could use some improvements, but those improvements will not happen in a vacuum, in a lab and then deployed to the rest of the world. Just like Windows and the MacOS they will benefit the most from direct and real life exposure.
There are a couple of very nice stories that the Linex people have witnesses over the past few days (my favorite one being a sheep sheppard in the region that fell in love with the Linux distribution they had prepared).
Professors that have offered their input and the help of themselves and their students to improve Linex: This is the kind of thing that you will not see with proprietary software.
Anyways, we are not *that* far, you are just not used to Linux on the desktop. And it will only get better
Miguel.
I believe that Gnumeric is a very advanced spreadsheet. But it will take 5 years to get to the point where Excel is. In some areas, Gnumeric is more advanced than Open Calc, and in some cases, Open Calc is more advanced than Gnumeric.
Open Office is an integrated office suite, so that does help a lot in terms of a unified office suite to deploy to people. To move more people away from Microsoft Office and into an Open Source/Free Software product, I am encouraging people to use OpenOffice.
That being said, Gnumeric has a beautiful code base, and will likely be a nice testing ground for new technologies (as it has always been).
Gnumeric is better suited for people who want to do build a spreadsheets for PDAs which are compatible with Excel, for a works-like scenario, or as a reusable engine. Open Office is a lot harder to hack on currently.
So I see both existing. I am in love with both products.
Miguel.
The Mono implementation (http://www.go-mono.com) and yesterday's release (Mono 0.10) does provide pretty much everything that the Shared Source release does.
Get your bits now!
Miguel
If by `Reverse Engineer' you mean `Read the source code that is provided as part of the Open Source/Free Software Evolution', then yes ;-)
Miguel
Yes, you can do your own memory management if you want (there are various degrees in which you do this, either through the "Disposable" pattern, or by completely rolling your own, using unmanaged code).
It is not on the FAQ as this is more of a CIL core question, rather than being a question about the Mono project itself (which is an implementation of the CIL).
Miguel.
Yes, I have seen the Rox file manager, and I do like it.
You have to understand that the different file managers that you see have different requirements and target audiences. For example, although most of us are running high-end computers these days that have enough CPU power to do all kinds of graphics intensive user interface improvements, and can handle all sorts of situations and combination, many users in the third world countries are stuck with very old machines.
There is no reason why we should marginalize them as users. And I believe that both Rox and gmc fit that bill nicely.
I do not believe that there is a single true solution to all problems. Unix is being used in so many scenarios that it is hard to predict or generalize its use. You see people making Linux run on extremely low end PDAs, sometimes you are memory constrainted; sometimes your are CPU constrainted; Sometimes you are constrainted by the size of the application, and not by the size of available memory; Sometimes you have plenty of CPU to spare.
Although I would love GNOME to have an effort to ship a "light" edition, all I can do is suggest its use. For things to actually happen, interested parties (like yourself) have to take an active role and push for this kind of things to move forward. And by pushing i mean, contributing, packaging, testing, integrating, coding, and everything related to this.
I think its a great idea, and we should have a light version, and a high-end version of GNOME.
If Rox and sawfish fit the bill for your low-end terminals, please go ahead and use those pieces. Your experience will be useful to other people trying to deploy Linux on similar scenarios to you (and there is a lot of impact outside the first world for this kind of setups).
Even if you go with Rox/Sawfish, if you need to run a GNOME app or a KDE app, you will still be able to, but you could manage some precious bandwidth in this particular scenario you describe by using a lighter product.
Miguel.
I do not think you have understood my position when it comes to Mono and GNOME yet. There is a detailed explanation about this here: http://mail.gnome.org/archives/gnome-hackers/2002- February/msg00031.html
.NET Framework a lot more than I like the Java platform, but that is my personal choice; And I do like the UltraSparc cpu over any other cpu, and I still love the fact that my IBM laptop is so cheap ;-)
The short version of this is:
* I do not have any maintainership control over any piece of GNOME anymore.
* I like everyone else have an opinion on how GNOME would benefit the most.
* People will be free to use the tools the Mono project produces or not use them.
* Mono will integrate with GNOME right away, just like say, Java/GNOME is integrated with GNOME right away.
* So I believe that building apps with Mono will be a nice experience for people in the GNOME world.
I like different technologies from different companies. I like the
So there is a lot of love for different companies and technologies. There are choices for everyone to pick from.
Miguel.
I love your example!
;-)
Beautiful, its going into my list of quotes
Miguel
What I have read myself so far:
* Inside C#. Microsoft Press, good.
* C# Essentials: O'Reilly, if you want to learn it quickly, and do not care about details.
* The ECMA C# standard is useful if you want to write your own compiler 8-)
Miguel.
I forgot to add this to my posting:
DEVELOPERS DEVELOPERS DEVELOPERS!
(Slashdot forced me to put more text than the three words, lame)
Funny you should say that, because every day I copy my binary from Windows (mcs.exe) and run it on my JIT engine.
;-)
;-)
I routinely demo this at conferences
This is not a far fetched prediction, I have been using this for months. Our interpreter ran its first code in September. Our JIT has been getting better every day (working since November
Miguel.
You do raise an interesting point. Some features are not available to all languages (for example, a LISP closure definition).
But there is a large subset that is. This subset is encapsulated in the Common Language Specification (CLS) which differentiates between:
* Consumer languages.
* Provider languages.
* Consumer/Provider languages.
You can find the details here:
here
Miguel
I guess you miss-understood.
Writing about a programmer's life is pretty boring. The programmer might be enjoying himself, but to an external viewer he is only tapping at a keyboard.
miguel.
That is incorrect. Mozilla is using a dual-licensing strategy. If you want your code incorporated into Mozilla, you have to grant them the permission to license the code under the NPL,
MPL and the GPL.
The fact that the GPL is used in Mozilla is more of a gift to the community to allow them to mix Mozilla code with existing GPL code than Mozilla being forced to use GPL code.
Miguel
Actually, the Tcl licensing has always been fine (Tcl uses the "Ousterhout" BSD license, which is in essence the X11 license: BSD without the advertisement clause, so it is the best of both worlds).
I know that Richard was never particularly fond of Tcl as a programming language. Maybe this is what you are refering to?
Miguel.
The Mono runtime is released under the LGPL.
1 License.
t ml
The compiler is released under the GPL.
The class libraries are released under the X11 license.
The X11 license is a free software license (http://www.gnu.org/licenses/license-list.html#X1
It is also an Open Source license (http://www.opensource.org/licenses/mit-license.h
All of it free software.
If they were not `truly free software' we would have bigger problems (someone would have to start a reimplementation of X11, telnet, Kerberos, Expat, LibXML, Mesa GL, ftp, Tcl/Tk, BIND, DNS, and anything else released under the X11, the Ousterhout or the BSD licenses, because they are in essence the same thing).
Miguel
Miguel.
The CLR is already being used to write applications that run on multiple platforms. For example the Compact .NET Framework runs on various of the cpus supported by Windows CE.NET. Now you can write an application for .NET and it will run in any system with a CLR.
.NET is better than any other Win32 apis.
This solves a practical problem: now you will be able to "beam" programs from Windows CE machines running on different CPUs. Also,
The CLR also helps the move to 64 bit systems. There are three integer types on the CLR: int32, int64 and native int (which is 32 or 64 depending on the machine).
The Mono project is building a free implementation of such a virtual machine (http://www.go-mono.com). We have a functional JIT engine, a C# compiler and many class libraries. So in the future you could even write applications on Windows and run them on Linux.
Miguell
Although it is not well known, .NET includes the same kind of functionality to develop "applets".
.NET comes with a security system in place to enable to execute dynamically and untrusted code in your application domain.
For example, you could be running an untrusted math analysis tool that is downloaded from the network into say your spreadsheet program without having to worry about the plugin damaging your system (security system kicks in).
Miguel
Well, this virus really does not do anything interesting. .NET as any other complete programming environment will allow you to create replicating code (oh big surprise).
.NET "applets" or any other .NET code that is downloaded from the network and executed, the virus would throw an exception because it would not have permission to touch your file system.
These kind of virus programs will probably not succeed in the NT world with user permissions or in any system with per-user permissions (Linux). Although theoretically possible (root runs the virus) in practice this kind of virus programs never succeed on the wild due to this kind of security mechanisms.
For
You can load code dynamically into your application . You can even generate code on the flight and execute it (with System.Reflection.Emit).
C# does not have inner classes, but it has delegates, which can be thought as closures. They basically encapsulate a method plus its object.
Miguel.
You can probably read the rationale for the creation of the GNOME project somewhere on the Web. That plan and motivation is still valid today. We want to have a complete open source solution for the desktop. Not having the foundation for a major component of a complete free system be proprietary.
;-)
KDE was gaining momentum, and the result was dangerously approaching a world in which a large portion of the population have a mixed free/proprietary environment.
I of course would love to see the evolution plugin be free. This is something that was debated long and hard at Ximian.
Ximian is a strong software development house, and in order to support our development activities, some of the pieces that we write are becoming proprietary.
The alternative would be to only provide support and services, and stop being a development house. Which is something that does not get me excited in the mornings.
Our current mix is aimed towards maximizing the free software that end users have access to, and allows us to charge users that have the resources to finance our operation.
For instance, most home users and students do not use Exchange or plan on using Exchange. While people in corporations are using Exchange and do not mind paying for getting access to it from Linux.
I am sorry if I did not post earlier today, but I have basically been working all this time on more Open Source/Free Software (Mono, http://www.go-mono.com) and got a lot of work done today
Enjoy the love!
Miguel.
SOAP does not drill any holes that POST would not have.
And you are most likely going to find SOAP engines that perform a lot of error checking and parsing of an XML message behore handing it to you than your average cgi-bin script that gets the POST request.
This time I will be prepared.
/etc/hosts file so I can be immune to the attacks
I am downloading as we speak all the DNS records in the planet into my
I encourage others to do the same.
Rob Pike said in his talk on `System Research is Irrelevant' that 90 to 95% of the code in Plan9 was
;-)
code to cope with standards and not with new innovative ideas (tcp/ip, http, corba, unicode, posix, mime, pop, imap, x).
A similar scenario happens with Evolution. Modern applications like Evolution are expected to deal with all sorts of IMAP servers, with all sorts of configurations, in a bug compatible fashion and with different "interpretations" of the standard.
Apply this across the board: authentication through SASL (being used more and more and being pretty cool as well), S/SMTP, S/IMAP, IMAP, POP, the various mail formats in Unix you need to import. Then add to the mix decoding MIME message s (both well formed, and ill formed, standard compliant and non-standard compliant), then generating correct Mime code.
Adding code to support features like disconnected IMAP, downloading only the headers, or the whole thing, making it useful over dialup lines.
The calendar tracks the iMIP, iTIP, ICalendar specifications. And can talk to Outlook 2000 and Outlook XP (they dont talk between each other, for calendaring, btw). And the list goes on and on.
HTML mail is supported, correctly forwarding messages is supported (in any combination that you want
Then add pilot syncing to the mix.
So Evolution is big, because it adapts to the needs of modern users. And it has to cope with the needs of different communities.
Evolution will keep growing to address the needs of more people, and will keep improving. We would of course love to get your contributions to optimize it in every possible way.
Miguel.