FileZilla Architectural Documentation

Moderator: Project members

Post Reply
Message
Author
JohnChuck
504 Command not implemented
Posts: 11
Joined: 2007-04-03 02:00

FileZilla Architectural Documentation

#1 Post by JohnChuck » 2007-04-03 05:56

Hello my name is Juan C Moreno and I'm doing my Masters in Computer Science.
I'm currently taking a Software Architecture course, and I have chosen FileZilla for
my final project.

In this project I have to derive, compare and evaluate documented or conceptual
architectures vs. the actual architectures; which are to be derived from the source
code itself, and also provide any helpful input if I can.

Through this method I would like to request if possible any architectural
documentation on the FileZilla project.

I look forward to being able to contribute to this community.
Thank you.

User avatar
botg
Site Admin
Posts: 33425
Joined: 2004-02-23 20:49
First name: Tim
Last name: Kosse
Contact:

#2 Post by botg » 2007-04-04 17:52

For the most part, the source is its own architectural documentation.

For FileZilla 3 I've tried to keep ftp engine separated from the user interface, so that the engine will be reusable. More details about how it all evolved can be found in the development diary: http://filezilla.sourceforge.net/forum/ ... c.php?t=64

JohnChuck
504 Command not implemented
Posts: 11
Joined: 2007-04-03 02:00

#3 Post by JohnChuck » 2007-04-05 17:11

Ok

Well thanks for the link I'LL check it out.

JohnChuck
504 Command not implemented
Posts: 11
Joined: 2007-04-03 02:00

#4 Post by JohnChuck » 2007-05-15 18:05

I haven't forgotten about this.

And I would like to ask a few questions about the project.

botg

What is your vision about the end product?
What is the feature set that you would like this product to offer?
What are the requirements that FZ3 should meet in order to stay true to your vision?

No answer is too long, and no answer is too short.
All input provided will be greatly appreciated.

I hope to be able to provide you in the next few days with at least a rough draft of the architecture.

Thank you

User avatar
botg
Site Admin
Posts: 33425
Joined: 2004-02-23 20:49
First name: Tim
Last name: Kosse
Contact:

#5 Post by botg » 2007-05-15 20:30

My vision? Hmm, world domination, at least. ;)

Jokes aside, I envision FileZilla as the tool to manage FTP sites. To be precise, not just FTP, but other protocols as well, like for example SFTP and other protocols with a similar concept (usability-wise, not neccessarily from the technical point of view). One example would be WebDAV support, which I plan to implement in a future FileZilla 3 version, although with a low priority (more on that later).

Other features I'd like to add are synchronization, comparision and filesearch. Basically everything which helps managing the sites.

Obviously, different users have different needs, I don't think I'll ever be able to create a "fits all" client. For example I've no incentive to write a virtual drive to map ftp sites to drive letters. Others have implemented this already (e.g. Novell Netdrive), but I believe neither the FTP(-like) protocols nor the local filesystem layers have been designed for this. Basically, FTP, SFTP, WebDAV and the likes are high-latency protocols to be used using potentially very slow connections over the internet. In addition, remote connections are generally unreliable. Local filesystems on the other hand are usually designed for a reliable, low-latency storage. Moreover, file managers like Windows Explorer expect this fact. For example Explorer gets the file icon out of the executable or gets meta-data for media files (e.g. bitrate, resolution, length). This requires random access and low latency. If you have ever accessed an SMB share over a slow VPN connection, you'll know what I mean. And with FTP it would be much worse.
In other words, I in most cases refuse to add features that have only a very limited use.

Another often requested feature is support for automation. The proper solution for this is to write a commandline FTP client with a batch mode.
In FZ3 I've strongly separated the engine from the user interface. So it should be rather easy to write other interfaces, including a commandline interface.

So far FZ3 has evolved pretty close to my vision, At least for me it's fully usable and has replaced FZ2 on all my systems. That also reflects the way I implement new features.
Early in a project it's setting up a flexible foundation, something that's capable to hopefully scale even beyond the planned featureset. Next I'll focus on implementing the features I personally need. Mostly as consequence of the dogfooding effect. In particular, I believe that good software is the result of a concrete need and not out of financial interest. (Exaggerated usability vs. eye candy).

The final 3.0 release of FZ3 is rather close, I've summarized the missing features in the development diary.

JohnChuck
504 Command not implemented
Posts: 11
Joined: 2007-04-03 02:00

Language Component

#6 Post by JohnChuck » 2007-05-19 01:55

HI botg sorry to bother you.

I was wondering whats the component used to manage
the different languages.

I was looking through the FileZilla project but I still had
some doubts about this.

User avatar
botg
Site Admin
Posts: 33425
Joined: 2004-02-23 20:49
First name: Tim
Last name: Kosse
Contact:

#7 Post by botg » 2007-05-19 10:13

In FileZilla 2 I use the standard resource files of Visual Studio. Which is inflexible and a maintenance nightmare.

FileZilla 3 uses gettext catalogs, it's extremely simple to use.

JohnChuck
504 Command not implemented
Posts: 11
Joined: 2007-04-03 02:00

#8 Post by JohnChuck » 2007-05-19 20:21

I looking to map the gettext component in the conceptual architecture
to the concrete architecture that I extracted form the code.

But I'm having a hard time finding the gettext component in my diagram.

Isn't there an actual object in the Interface project?

User avatar
botg
Site Admin
Posts: 33425
Joined: 2004-02-23 20:49
First name: Tim
Last name: Kosse
Contact:

#9 Post by botg » 2007-05-19 21:53

Not sure what exactly you mean. Basically gettext works like this:

Inside the program, all strings intended to be translated are marked wth a special macro, namely _()

An external program (gettext) then extracts all _() enclosed strings from the source and builds a catalog file. Translaters add their translations to it. The program can then load these catalogs depending on the selected language.

Inside the program, the _() macro expends to a function with the English string as argument. It then returns the translated string.

More details can be found at Wikipedia and the gettext maual.

JohnChuck
504 Command not implemented
Posts: 11
Joined: 2007-04-03 02:00

#10 Post by JohnChuck » 2007-05-20 00:32

Oh! ok I get it now.

It's just that I was expecting some sort of object,
so after reverse engineering the code I wasn't going to find an actual
object. I didn't know what to look for... :?

Great, thank you.

kosova123
500 Command not understood
Posts: 1
Joined: 2016-11-10 14:52
First name: memli
Last name: xheladini

Re: FileZilla Architectural Documentation

#11 Post by kosova123 » 2016-11-10 15:00

Hello my name is Memli Xheladini and I'm doing my Masters in Computer Science in <a college>

I have chosen FileZilla for my final project any suggestion ?
Last edited by botg on 2016-11-10 15:06, edited 1 time in total.
Reason: Removed potential advertisement link

Post Reply