← Back to team overview

lottanzb team mailing list archive

Re: Planning LottaNZB 0.6


Hi everyone,

once again a quite verbose message. Sorry Marcel. :-P

On Sun, Sep 13, 2009 at 2:49 PM, Sander Tuit <avirulence@xxxxxxxxx> wrote:
> Heh, Kiwi started out as one of Severin's experiments and since he
> really liked it, it became the main way to write the front-end. It
> actually reduced the front-end code by quite a lot if I remember
> correctly.

Yeah. ^^ That was one experiment of many on my journey of getting used
to PyGTK programming in general. I hope you're not too upset about all
the changes (some of them unnecessary) LottaNZB went through.

It's true that it actually reduced the front-end code. I think
everyone agrees that it's a good idea to avoid code redundancy and use
abstractions where recurring code patterns appear. This is exactly
what Kiwi does. If we decide to drop Kiwi, we'll still need some form
of abstraction as mentioned above. One must note that Kiwi's internals
haven't been made by rocket scientists. It contains lots of stuff we
have never used and will never use. And I'm pretty sure that most of
all cool stuff Kiwi provides us with can more or less easily be
reimplemented with a dozens or hundred lines of code (probably with
less generality). Here's a list of Kiwi features we make use of:

- Resource management. Paths to UI files etc.
  --> There's practically nothing to reimplement. We already have our
own 'resources' module.
- Takes care of writing the LottaNZB log file.
  --> Python provides everything we need. About 5 additional lines of
code necessary. ;-)
- MVC implementation. Delegates (View and Controller in one). Loading
glade files, connecting signals, connect widgets to attributes.
  --> Kiwi doesn't support GTKBuilder. I had to monkeypatch support
for it. external/builderloader.py. Everything listed can be
implemented using 100 lines of code, tops (we could also borrow code
from pygtkhelpers).
- Proxy support. E. g. makes it possible to connect a Server object to
the corresponding UI form. Keeps the values in sync.
  --> A very nice feature, but it required me to convert all regular
widgets to Kiwi widgets, which is a costly process and not the way how
it's meant to be. As all data is already stored as GObjects, it's easy
to be notified if a value is changed. This will probably require the
most work, but it can be done.
- Form validation support.
 --> Pretty useful. However, it could use an update. It uses some
hackish code to display an error/edit icon in text fields, which can
be easily achieved using recent versions of GTK. Same as the proxy
support, requires some work, but it's doable. I already wrote a custom
validation logic for LottaNZB once, but as my knowledge of PyGTK was
very limited, it wasn't that elegant and powerful.
- kiwi.ui.objectlist: A wrapper for TreeView etc, which makes it easy
to set up a table with column and fill it with data.
 --> As this part of Kiwi doesn't depend much on other parts of the
framework (the MVC part), one would be free to copy code sections as
desired so that it fits our needs.

That should be it. I created this list to give you an overview of the
current situation. The question is: Abandoning Kiwi, removing several
hacks while spending some time reimplementing some stuff... or not.

> My contributions to 0.6 will be most likely plug-ins. Since Sabnzbd
> supports things like scheduling and RSS-downloading, I guess it will
> be nice to look into providing those features as plug-ins.

That will certainly be important features to implement and destined to
be plug-ins. I really look forward to them!

> Well, and I'll probably be working on LottaNZB Mobile (for Android) as
> well. I have some ideas for it and it will most likely support both
> HellaNZB and Sabnzbd. :-)

Can't say much about this as I don't own an Android-based phone yet.
But once I do, such an application would certainly be handy.


> Sander
> On Sun, Sep 13, 2009 at 13:00, Marcel de Vries <marceldevries@xxxxxxxxxx> wrote:
>> Phew, that is I guess the most text I have ever read at one time in my whole
>> live. :-)
>> Welcome to the team Eran, I'm very happy to see another person where I can
>> learn a lot from! As I don't study anymore myself, I pretty much depend on
>> myself and others to get my knowledge. Which kind off only started a few
>> days back. ^^
>> I'm really for the whole modular thing as it keeps everything ordered and
>> easy to maintain and/or extend. Though my contributions for 0.6 will be slow
>> and painful, thank god there is a mentoring feature!
>> As for switching from Kiwi to PyGTK, I think this is a good decision to
>> make. As Severin mentioned, this allows you to create a framework for
>> LottaNZB alone. Which should be smaller, faster and easier to maintain. This
>> really is the way to go, I guess.
>> I do have a question though, will the 0.5 series be supported after the
>> release of 0.6? Because there might be people that do not switch to SABnzbd
>> but do want to use LottaNZB. I know it's hard to believe though, since
>> hellanzb really is outdated/absolute by now. But it IS a posibility there
>> are people that think this way.
>> Any way, let's make 0.6 the best possible frontend for SABnzbd! :-)
>> _______________________________________________
>> Mailing list: https://launchpad.net/~lottanzb
>> Post to     : lottanzb@xxxxxxxxxxxxxxxxxxx
>> Unsubscribe : https://launchpad.net/~lottanzb
>> More help   : https://help.launchpad.net/ListHelp
> _______________________________________________
> Mailing list: https://launchpad.net/~lottanzb
> Post to     : lottanzb@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~lottanzb
> More help   : https://help.launchpad.net/ListHelp

Follow ups