You should really have a look at KPart and its internals. All the problems you describe have been faced and solved by KDE.
I understand the component activation is quite tricky, espcially if you plan to have two components displayed in a widget. Get in contact with David Faure and Simon Haussman (or simply kde-core-devel) to see if they can provide you some insights.
In my experience, programmers like to write code. Period. They don't like to write documentation, they don't like to write system tests, and they don't like to write unit tests. Programmers are also optimists--how else could they tackle building these enormously complex systems and think they had any chance of working? Programmers like instant gratification (who doesn't?). They enjoy coming up with a solution to a problem and seeing that solution implemented immediately.Because programmers are optimists, that is reflected in their unit tests. Time and time again I've seen developer-written tests that demonstrate the feature works -- because the tests reflect the thinking of the developer about how the feature will be used. They rarely do a good job of testing corner cases, limits, or "unusual" situations (like running out of memory or other finite resources). </blockquote>
While all the remarks are good, the conclusion that programmers will not enjoy test first methodology is wrong. To my surprise, I have enjoyed it a lot. Here are some arguments :
- Programmers like to write code : programmers write even more code with test first methodology
- Programmers enjoy solving technical challenges : building a system so that it can be fully tested is a technical challenge wich makes the test system as interesting to write as the code for the sytem.
- Programmers enjoy instant gratification : having one's test run successfully is instant gratification and programmers enjoy it a lot. It may sound silly but I enjoy seeing my
Result 37 / 37 successful test, 100% test pass. And I like seeing the number of test (== feature) moving forward. Means I am actually doing some measurable progress in my application- writing tests is boring : it is boring if you write them once the application is ready. If you write them before your code, it gets interesting because it is equivalent to writing code. At some point, writing the test gets more interesting than the code, because the code "just runs the test, you know, not very exciting".
- corner case are not tested : in test first, it is recommended to test the corner case before the normal case. That way, they are a lot easier to deal with, and you are not tempted to skip them. Having plenty of tests already working also helps in building tests for corner cases. When it is just about calling 3 tests in a row and adding 10 lines of code, corner case testing is a lot more common.
- Geeks like to achieve good work : Having the system running many tests successfully is rewarding. You know that your system is fully working and tested. It will be easy to maintain and extend. If you modify it, just runs the tests to check that it is still working. This is really reassuring.
I can suppose that it has been rejected but I have no mail to confirm this. And if it has been rejected, I would like to know why. I have invested my time to write a reasonably good article. I find it certainly more interesting than the latest Advogato users are lame.
For a site about open-source, I would expect the processing to be more ... open.
Qt FUD
There is a lot of FUD going on about Qt these days. Four years ago, people would complain that Qt was not free. Now, they complain that it is too free and it forces you to write free program. How evil!
I would like to remind a few points:
Well, some business model can work very well with a GPL application. So in that case, Qt is free (if you use the unix version) and the argument does not apply.
For the other point, if your business can not afford a version of Qt or a version of PyQt (a lot cheaper, see the PyQt website), then your business has a serious problem.
If your business makes real money, then giving back to Trolltech to help make Qt better is a good idea. I don't see why we should support people that make money off the hard work of others without giving back. When you use Qt in a non free environement, you are forced to give back. And Trolltech gives you back too, every version of Qt has new wonders.
For the record, I have built with friends a small business based on Qt and it was successful (see www.yalbi.com). It is perfectely possible to use Qt in a commercial environment. In fact, if it wasn't, I wonder how Trolltech would have survived all these years. Trolltech does not have any VC money, it is self-funded. So it is profitable thank to all the business that use it.
I have even used Qt to do windows-only program. It is a lot better than MFC, .NET or VB and in the end, it is a lot less expensive. What you pay for the license, you spare it on your development time, feature richness, maintenability and royalties (many windows libraries have royalties scheme).
My first time configuring procmail. I really wonder what the author was smoking when he designed the syntax. I understand better the old saying : LSD and Unix both come from Berkeley. This is no coincidence.
How can someone make such a braindead syntax ? ':0:' means use a lock file when delivering. ! means forward to an address. My God.
Anyway, the good part of it is that it is very standard, fetchmail can deliver directly to procmail. And once you have set-up the basic rules, you won't touch it often. So it is more or less ok.
Now my spam is all filtered out. MMh, what a delight. Thousand thanks to bogofilter and Paul Graham.
I am using and patching CppUnit. This is such a beast!
CppUnit was developed after JavaUnit, which was developed from SmallTalkUnit, which was written by the author of Extrem Programming. I think something has been lost somewhere on the way from SmallTalk unit to Cpp Unit.
Some core principles in Extrem Programming are:
I look at CppUnit and I see exactly the opposite of this. Ironically, CppUnit is used to develop test suites in the Extrem Programming spirit. Briefly, CppUnit has:
It looks to me as the typical example of over-engineering. People have read Design Pattern and they want to apply it desperatly. And they also read about templates and want a maximum number of them.
CppUnit should fit in 3 or 4 classes. No more. I'll rewrite it one day.
Free Software Happiness
Yesterday, I looked around at Free Software and I was happy.
Three years ago, if you had asked me about the state of Free Software, I would have given a reluctant answer. Yes, there were good developments on the server side. But the desktop was really poor compared with Windows or Mac.
But yesterday, I looked back at what has been achieved and I was happy. Most of the problems are either addressed or under active development. The things that pleases me (non exhaustive and in no particular order):
There are progress for which you must really be a geek to appreciate:
There are still progresses to be made in development tools. IDE with tight integration of every development tool (gcc, make, gdb, CVS, ...) are seeing the light, but plenty of progresses can be made. I am also waiting for a good C++ refactoring tool.
I wonder why everything I post is interpreted as an agressive move. Too sensible subjects ? My bad grasp of english ? I thought I had written this last diary entry with a clearer intent. I question Eazel's contribution to Free Software, not Nautilus's capabilities. And yet I am attacked on Nautilus.
Thomasvs Here are a few points : You specifically mention Nautilus 1.0 without mentioning that this is the OLD Nautilus developed by Eazel. All your points are ONLY valid about the OLD Nautilus, and even then they're skewed at best.
I thought it was obvious that I am referring to the old Nautilus developed by Eazel. I was referring specifically to an interview where all the modifications that have gone into Nautilus 2.0 are explained.
Why don't we compare KDE1 or KDE2 Konqueror with the Nautilus you bash ?
The thing I was willing to compare was specifically the development made by Eazel, not the features of Nautilus 2.0 . Something equivalent to compare would be for example the developments made by the Kompany. They have the same problem, they usually do not use KDE's technologies. They do not integrate much with KDE. TheKompany now develops everything using Qt only, so KDE integration is even more limited. Just like for Eazel.
One big difference between TheKompany's contribution to KDE and Eazel's contriubtion to Gnome is that none of TheKompany's applications are named "core KDE applications". The fact that they are not under a free licence certainly helps. :-)
Yes, you are right that the original Nautilus 1.0 developers didn't put integration with the rest of GNOME high on their priority list. That is because Eazel was foremost a COMPANY trying to make MONEY on Eazel services served by Nautilus.
Which was exactly my point. I was not willing to discuss further than that. Now another question is, should Gnome accept this ? Given that Eazel did not care about Gnome's goal, should have Nautilus been in Gnome ? My personal answer is no. I have no problem with any company making money building an application that does not integrage with Gnome, but then it should not be distributed as part of the Gnome desktop. This is contrary to the goal of the dekstop thing.
Now, the maintainers are spending effort to integrate Nautilus properly. Had the eazel guys done Nautilus the right way, this effort could be spared.
You say "it is not possible to reuse parts of it". Well, ha ha ;) All code that is reusable has been abstracted out into other libraries which now are used throughout Gnome.
Are you speaking about Nautilus 2.0 or Nautilus 1.0 ? I was referring specifically to Nautilus 1.0 . I understand from the interview that most of the problems of Eazel's Nautilus are being addressed. That's good news.
Anyway, I made my conclusions based on the interview I read. This is not the result of a five month research on Nautilus, but a diary entry reflecting what I understand from an interview. The interview makes it clear it is not possible to reuse the icon view of Nautilus. I find this surprising because Gnome has all the technologies to make this possible. Does Nautilus (1 or 2) use bonobo in any way ? I thought this was exactly the thing bonobo was created for.
You should have picked another application to try to bash on integration issues, because Nautilus is a really good example on how to do integration nicely.
I am still under the impression that Nautilus integration into Gnome could be far stronger than what it is.
You do both KDE and Gnome a disservice by trying to instigate some sort of fight based on very skewed assumptions and giving a lot of reasons that are easily disproved. Code talks, and my code disproved your point.
Sorry but I was talking neither about Gnome, nor about KDE but about the way Eazel contributed to the Free Software. I think they have missed the culture and people like the current Nautilus maintainers have to come after them to clean things up. That's a pity.
I think Ximian did a far better work with Evolution. Not only do I find evolution more useful than Nautilus, it also integrates properly with Gnome.
Reading my diary entry of the 25. october, on the interview of the Nautilus, I was not satisified. The entry was agressive, unjustified on certain area, not clear in its intent (too much KDE ranting, too much Gnome bashing). I have rewritten it in a less agressive stance. I keep the response because they are interesting.
My point was:
My conclusion is that the Nautilus developers didn't think it was important to develop an application that would integrate with Gnome. They just thought about developing an application and did not care that much about Gnome's goal.
The interview also gives the impression that Nautilus code os not modular (it is not possible to reuse any part of it indepententely, nor is it possible to integrate external code), not optimised and not very good:
you really need to be two people to maintain Nautilus [...] the new code is also vastly more readable and somewhat better performing than the old code [...] the [sidebar] code was horrible [...] The Icon view is quite integrated with the core Nautilus code at the moment, so it is very hard to do things like this [...] Right now the CVS view has to recreate the whole directory view, which is a pain. It leads to views that don't integrate well with the rest of nautilus (and more often, views that just aren't written) [...] I don't think using the nautilus codebase is such a good idea, as Nautilus has an architecture that is overly complicated for a fileselection dialog [...] The Nautilus views require to much of the Nautilus internal asynchronous machinery, which we don't export (for various reasons) [...] there isn't anyone with concrete plans for fixing the mime system. [...]
All this makes me think that Nautilus developers did not get the Free Software and especially Unix spirit. Unix is all about indenpendant modular tools and piece of codes that interacts together. Advantages of Free Software usually come from this modularity. We also strive to produce the best code. Given all the optimisation that were possible on Nautilus, I think they also missed that point.
A few preliminary remarks:
Uraeus:
As for the file access we have something called gnome-vfs in GNOME that does the same thing as kioslaves in KDE.
I am aware that. But why if you have good gnome-vfs support are there _seven scripts_ on the nautilus script page to just handle an archive file ? Why do you need a script to play files in Xine or Xmms ? Or to call a shredder ? Is Gnome-vfs lacking all these features ? I was also referring to the NFS/Samba question. Why isn't Nautilus able to browse samba and NFS shares ? In KDE all these things are provided by the kio_slave library.
The separate theme handling was a mistake, but has now been 99% fixed
I think this mistake is a hint of the way Nautilus was developed: independantely of Gnome. Eazel did not take the time to contribute to Gnome the way it should have been done. They just developed and did not care.
Why isn't it possible to provide a Nautilus view of a folder ? Why isn't it possible for Nautilus to embed a CVS frontend ? Both those things are possible in KDE, and not because someone took care of implementing them specifically. They are available because because a CVS frontend application (Cervisia) and a file manager application (Konqueror) had them. Both applications have used KDE's very simple component system and that's it, all other app have it. Every app shares all its features with the others, without extra-work. That fits the integrated consistent desktop goal.
From what I read, Nautilus is a very monolithic application. Where are the bonobo components ? Isn't that the kind of thing bonobo is supposed to handle ? For every cool feature request, the answer seem to be "sorry but the architecture doesn't allow that currentely".
I think (and correct me if I am wrong) that the reason Nautilus is so monolithic is that:
Please understand that I am not critisicing the current Nautilus. The issues are obviously being adressed. I am criticising the way Eazel created Nautilus.
As for its own icon management [...] if anything you could argue that the functionality was misplaced inside Nautilus or eel instead of being placed in a more core GNOME library.
Indeed. So one application has some feature that the other have not and may be lacking ? This is exactly the opposite of the goal of a desktop such as Gnome or KDE. The projects are not about having good applications, we already have that. The projects are about having consistent integrated applications that communicate with eachother. A side-effect of this goal is the avoidance of code-duplication.
On the other hand this is how we develop new stuff in GNOME. We include them it outer libs or applications and as they mature and prove usefull we migrate them further down in the toolchain.
So this means that some application have feature the other are lacking ? I do not see this as a right way to proceed. If a feature is useful, it should be in a core library so that a maximum number of application use it and provide a consistent interface. You want to avoid code duplication and UI inconstency.
Well a vast majority of the bugs in Nautilus bugzilla are leftovers from the Eazel days.
Ok, forget the bug issue. The interview said nothing about this however.
As for slow, well yes it is slower than windows explorer, but it is faster than Konqueror.....
All I have to say is :-) . But what I was underlining is that Eazel seem to have developed the thing withoug optimising it at all.
You did not oppose my statement about the code being complicated and buggy. I take this as an agreement.
As for most of the future features are things that KDE already have. Yes, some of these features you already have, yet some like the video preview stuff is ugly hacks.
I don't know if they are hack, but there are cool and they are an technological advance for KDE above Gnome. :-)
And there are other things in Nautilus and GNOME where you implemented them after us, SVG support comes to mind as an example.
My point was not to count which feature KDE or Gnome has, but to highlight the fact that KDE applications use core KDE technologies to provide many services in the way that makes them both easy to code and available to all applications. From my experience, Gnome application have tend to do their stuff in each application and not providing enough code/feature sharing.
And before you jump, I understand this is being adressed in Gnome 2.
As for lacking a 'large shared vision', I think you are mistaken. But truly we have had more discussions about these issues in GNOME than you have had in KDE, but I think this is mostly because KDE have almost no power over these issues, you have put yourself in a position where most important design decisions are handed down to you by TrollTech.
This last sentence show how much you ignore the way KDE is being developed. You are simply completely wrong but I do not blame you for that. This is a common misbelief. KDE has full control over its development. It will be hard to convince you but maybe those few facts will bring some hints:
However, it is interesting in fact that the large shared vision is not discussed in KDE. It seem to be implictely shared and agreed upon by all the developers. We have far less flames than in Gnome for example. Almost everybody agrees on what is the right thing to do.
pfremy I think your reading of my interview is heavily coloured by your premade opinion. While there are issues in Nautilus as my interview did illustrate your are blowing these issues out of proportion.
Rereading my post, I confess the end of it is getting a bit too far :-). And please, my first name is Philippe.
Hadess
Every file access is done through kio_slaves: in Gnome, every file access is made via gnome-vfs methods (I wrote one for my Rio500, at the time, there are plenty more).
I was not suggesting that Gnome was lacking this feature, I was wondering why it doesn't seem to be available in Nautilus. Why all these extra script ? Why no access to smb and NFS shares ?
The UI of every KDE appliation is controlled through a XML file: Yep, we do that as well, libglade is taking care of it.
The XML-gui stuff provides more than gladeui (last time I checked). It provides default shortcuts for all appliations, it provides a common menu organisation, it provides menu merging for components.
duplicate features of Gnome into Nautilus: hmm, which ones ?
Theme management ? Okey, this is being adressed. As I already said, I am not criticising current Nautilus but the one developed by Eazel.
Opening of gzipped archives ? Component to display files the way Nautilus does ? Those features are either duplicated into Gnome libraries, or missing in Gnome libraries. I don't see the interest of having a cool feature in one application with other Gnome application unable to use it.
in which cases does Nautilus not use the existing framework ?
I was wrong with the mimetype (although I remember having read about Nautilus's mimetype database. And the article raises questions about complicated mimetype handling of Gnome and Nautilus) but what about Bonobo ? Where is the Nautilus Bonobo component ? Can nautilus display a preview of every file that has an application associated with it in Gnome (the way KDE does it in KDE, for example to embed KOffice viewers into Konqueror) ? Or do you need to code specifically every file preview directly in Nautilus ?
Did you look at the code ?
No, but I read what the developers said about it. I cite from the article:
you really need to be two people to maintain Nautilus [...] the new code is also vastly more readable and somewhat better performing than the old code [...] the [sidebar] code was horrible [...] The Icon view is quite integrated with the core Nautilus code at the moment, so it is very hard to do things like this [...] Right now the CVS view has to recreate the whole directory view, which is a pain. It leads to views that don't integrate well with the rest of nautilus (and more often, views that just aren't written) [...] I don't think using the nautilus codebase is such a good idea, as Nautilus has an architecture that is overly complicated for a fileselection dialog [...] The Nautilus views require to much of the Nautilus internal asynchronous machinery, which we don't export (for various reasons) [...] there isn't anyone with concrete plans for fixing the mime system. [...]
Nautilus 1.0 architecture seem to be very monolithic, and the code not efficient. Did _you_ look at the code ?
I use file-roller, which handles much more than just tarballs, and there's also support in gnome-vfs for reading from tarballs.
And you try to convince me that there is no code duplication, when you cite two tools to perform the same action ? Just joking :-), archive handling is no major feature :-) Okay, I was mislead on this topic by the Nautilus script page. I still wonder why you have seven scripts here to perform an action that is part of the gnome core libraries.
Philippe, do a little research before talking. You won't get far on this site (and in the Free Software World) spitting flames. All you're doing is making people in the know laugh at you. Poor sod.
This is a diary entry, not an article, hence less research. I am posting what I think and I am happy to engage discussion and to correct what is wrong. Looking at what Uraeus said on KDE development, I am certainly not the only one that have misinformation. And I am glad to learn, do you suggest I should stay in my ignorance ?
New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.
Keep up with the latest Advogato features by reading the Advogato status blog.
If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!