All pastes #977607 Raw Edit

Anonymous

public text v1 · immutable
·published 2008-04-08 23:05 UTC
rendered paste body
 Title/Summary  	 Improvement of Enlightenment 0.17 file manager
Student 	Fedor Gusev
Student Email 	GusevFE@gmail.com
 
Student Major 	Theoretical Mechanics
Student Degree 	undergrad
Student Graduation 	2008
 
Student Home Page 	gusevfe.googlepages.com
Student IM 	icq: 211229231, ptomaine@jabber.ru (ICQ)
 
Organization 	The Enlightenment Project
Assigned Mentor 	No Mentor Assigned
Score 	8

Abstract
Working with files is one of the most frequent operations on a desktop. Although shell provides great tools for all those file operations (like copy, rm, mv, mkdir, etc.), sometimes user finds himself in a place where he needs a GUI to perform these things. Nowadays desktop is not imaginable without a good graphical file manager.

As Enlightenment is standing to be a desktop shell, it has to have a nice file manager. Since E developers understand that, they already have started the work. But there is still a lot to do -- a fifth of Enlightenment TODO is related to the file manager. It is necessary to finish it.

First, it will be very nice for users of E to have a choice of stable applications to fulfil their file manager needs out of box.

Second, with the power of Enlightenment Foundation Libraries it is possible to create a set of different (from user's point of view) file managers, which are very flexible and fancy. And not write each of them from scratch.

Finally, working on this should bring Enlightenment 0.17 closer to release.

Detailed Description
Basically, the aim of my work would be to finish started work and bring a choice of file managers to E 0.17 users.

For now, there are three things concerning file management needs:
1) process enlightenment_fm, which takes actual file operations (copy, move, delete) to the background of user interface,
2) core widget e_fm, which is a base for all actual "viewers" for files;
3) several frontends, that utilize core widget (like a dialog to select wallpaper or theme and the actual file manager).

I will work on all three of them, according to this roadmap:

  Roadmap
  -------

I divide the work into 5 steps:

step 0: studying
---------------
+ Researching the code and talking to the E developers.
+ Getting more familiar with Ecore, Evas, Edje and Efreet libraries.

Due date: June 1

step 1: dealing with background process
---------------------------------------
+ Reporting success/failure (and the reason) back to main process.
+ Reporting progress back to main process:
  * calculation of progress in percent,
  * (optional) calculation of estimated time left,
  * reporting both back to main process.
+ Adding a support for abortion of already started operations.
+ Removing known bugs and fixmes.

Due date: June 12

+ Improving support for .order files (used to change the listing order of the files in a directory).
+ Adding globing for .order files.

Due date: June 14

+ Studying HAL and removable storage devices.
+ Improving HAL support in the background process.

Due date: June 21

+ (optional) Searching for a way to deal with remote files.

step 2: core widget
-------------------
+ Receiving reports of success/failure/progress from background process and showing them to user.
+ Removing known bugs.

Due date: June 26

+ Implementing several more views (for now it is list, grid and custom views):
  * custom grid view -- put icons anywhere, but with aligned to the grid,
  * smart grid icon view -- put icons anywhere, but aligned to other icons,
  * multicolumn support for the list view.

Due date: July 6

+ Allowing frontends to filter listed files using a filter function.
+ Providing a couple of filter functions (like glob),
+ Allowing to select files though a filter function.

Due date: July 8

+ Adding support for keyboard and mouse bindings:
  * a general API for frontends to have their own configuration of bindings,
  * a configuration dialog to utilize by frontends.
+ Adding a configurable ability to show link to the parent directory.

Due date: July 16

+ Improving HAL support in the core widget.

Due date: July 20

+ Studying XDND and it's current implementation in E.
+ Fixing known bugs here.

Due date: July 28

+ (optional) Searching for a way to embed a terminal emulator into the GUI. If it is possible, implement.

+ (optional) Searching for a unified way to provide file finding capabilities to frontends.
+ (optional) Utilizing locate (from GNU Find Utilities) for this.

step 3: frontends
-----------------
+ Adapting current file manager to changes in core widget.
+ Adding support for keyboard and mouse bindings.
+ Adding support for filters to display and select files.
+ Improving quick file select: positioning on a file as you type it's name.
+ Improving GUI: for viewing and configuration.

Due date: August 8

+ Implementing a minimal file manager: no GUI, just keyboard and mouse bindings.

Due date: August 11

+ (optional) Designing and implementing a standard Nautilus-like file browser: with a menu and a location bar and maybe a box on the side with a brief description for file.

+ (optional) Designing and implementing a Midnight Commander-like file manager with two panels for file listings of different directories.

+ (optional) Adding some animations to these frontends.

step 4: documentation
---------------------
+ (optional) Writing user's guide to E file manager.
+ (optional) Writing developer's guide to E file manager.

These steps are not independent, I'll work simultaneously on some of them.

I realize this is a huge task, but I hope that with a good support of E developers and a bit of luck I can at least finish all non-optional items.


  Enlightenment Student Questionnaire
  -----------------------------------

Enlightenment
-------------

1. How did you first hear about the Enlightenment Project?

I think I was looking around for a nice window manager, trying a lot of them. And I've chosen E.

2. Have you used any version of the Enlightenment Window Manager? If so, which version(s) and for how long?

I've using Enlightenment 0.17 for about a year.

3. Have you used any portion of the Enlightenment Foundation Libraries for development purposes? If so, please give a few brief examples of the type of applications you've written with EFL.

I've used Ecore when I was trying to develop a Direct Connect library (this is a peer-to-peer and chatting protocol). Mainly just loop and sockets. After a while I've switched to my own design of these -- primarily because I wanted to study, how to develop those things. I've used Etk to develop a GUI, utilizing this library.

4. Have you ever participated in our online community in any capacity? (Mailing lists, IRC, etc)

I'm subscribed to the lists. But I do not read them carefully. I believe I sent about 5 letters there. Sometimes I join #e and #edevelop.

5. Have you ever contributed any code to the Enlightenment Project?

Once I've sent a patch for Etk, which has been accepted, -- to add scrolling to a text widget: I needed this for my Direct Connect client. Take a look, if you want: http://tinyurl.com/2up4yy

6. What made you apply to the Enlightenment Project for SoC?

I've used FOSS for a while and always thought that it would be great to participate in some way. Although, there was nothing to push me into it. GSoC provides an opportunity to get into the developing community.
I've thought of applying to GSoC last year, but there were no mentoring organizations, that I wanted to help. Fortunately, this summer there is one.

Personal
--------

1. What is it you are (or will be) studying in school?
   
Theoretical Mechanics.

2. What year are you?

5 of 5. This is my last year. And I'll have several serious exams until late June and this can be a problem.

3. Have you participated in any FOSS project? If so, which, for how long, and in what capacity?

I did not.

4. What languages are you comfortable/capable of programming in?

I am sure I'm comfortable with programming in C, though I've never touched the field of architecture-dependant things. I'm pretty comfortable with programming in C++.
I am capable of programming in Pascal. And I've played with Scheme, Perl, Python and PHP.

5. What are some of your interests, hobbies, past times, day job?

I am surely interested in:
  + Mathematics.
  + Biking.
  + Literature.

I have no job now and I'm planning not to have one during the GSoC program.

6. Please feel free to mention anything else you would like to share.

You can see an example of my code at http://tools.assembla.com/dcengine/browser. This a Direct Connect library I was developing.

Brownie Points
--------------

This finally made me fix some of annoying bugs in E file manager. So I sent out two patches:

http://tinyurl.com/2lnygw
http://tinyurl.com/2oxl2e