Hello! I want to participate in GSoC and become a GNOME developer in future. I was interested in subject project. It will be really useful feature. I have checked out latest nautilus sources, built it and looked into file operations internals. Below is my attempt to fully describe a problem.
At first, nautilus file operations are done through GIOScheduler api and done in parallel. To solve this, I will create a queue with file operation jobs. When one job is finished, next job is popped from queue. After this is done, time for interface improvements. Future file operations interface I see as in Transmission bittorrent client: list(queue) with jobs, progress bars, cancel and pause buttons. This list will have ability to move jobs in the queue (reorder). But there is more improvements. Not all operations need to be done in sequence. Some operations can be done in parallel. For example this is simple low-cost operations, such as single file delete (user don't want to wait when long file copy operation ends, while he is just deleting one little file). Another example of operations that should be done in parallel is operations with different physical file locations (you want to copy data1.tar.bz2 to /media/usb-drive and data2.tar.bz2 to ftp://example.org/exchange, this should be done in parallel). Some little AI will decide what should be done in parallel and what not. For previous example with data?.tar.bz2, AI will see that file source is one physical location, but destination locations are different. So it will check what reading speed potential source have and what writing speed for two destinations. If reading_speed >= writing_speed1 + writing_speed2 (with approximation) then this two operations can be done in parallel. This logic of cause needs to do some more thinking. And as I see there will be option to notify user about end of long term operations via libnotify. What can you say about this? Any other ideas to be included in my application? Best regards, Dmitry. -- nautilus-list mailing list [email protected] http://mail.gnome.org/mailman/listinfo/nautilus-list
