leonov reloaded!

Bug #336666 reported by Markus Korn
6
Affects Status Importance Assigned to Milestone
Leonov
New
Undecided
Unassigned

Bug Description

Over the last week I took some time to think about leonov and the code structure of leonov again. I would like to present some thoughts in this bugreport:

* python-launchpadlib
leonov should use launchpadlib instead of python-launchpad-bugs. This means if some functionality which is needed in leonov is not exposed via the API we should file a bugreport against launchpad instead of working around it by doing screenscraping

* Offline mode
there has been some effort to put the result of some queries in a database in leonov, in my opinion this is very unflexible and given the fact that launchpadlib is caching all data, creating an additional "cache" in a database would be duplicate work. Instead the offline mode of leonov should be implemented by subclassing launchpadlib._browser.Browser to read the data from the file cache exclusively

* Process queue
we should try to implement a "global" worker queue which manages all the interaction with launchpad via launchpadlib

* user interfaces
all UI related logic should be implemented in abstract UI classes. An implementation for a GUI framework like GTK or QT should inherit from this abstract classes. This way it should be easier to sync functionality between different GUI implementations.

I've done some experimental hacking over the last few days, please see the attached screencast for a first example.
The code still needs some polishing and should be available in a public branch soonish.

So far so good, but here is the problem: as far as I know the existing code of leonov, to implement the described thoughts in a sane way, big parts of leonov have to be rewritten and we will loose a huge amount of work we already put into leonov.

What do you think about this?

Markus

Related branches

Revision history for this message
Markus Korn (thekorn) wrote :
Revision history for this message
Nathan (nathansamson) wrote :

Hi,

I think this is a good idea. Leonov seems to be more or less died, and one of the reasons I don't work on it more (besides of lack of time) is the code: writing GUI code was hard (the backend library was bad), and much code was more or less the same in GTK / QT branch which I didn't like...

So I say: go for it... maybe I'll find some time to improve it (Can't canonical participate in GSOC with leonov?)

Revision history for this message
Stephan Rügamer (sruegamer) wrote :

Go Go Go...

As I wrote to Kiko and Markus, I'm up for a change.
We all know, that py-lp-bugs needs to go away, and I already put some stuff for launchpadlib in leonov. (e.g. Automatic Registering of Leonov App with LP -> http://bazaar.launchpad.net/~project-leonov/leonov/leonov-kde/annotate/head%3A/leonov/backend//launchpadapi.py )

As said, I have a backlog of some work for OSS and hopefully I'll find the time in April to work again on Leonov.

And no...leonov is not dead ;)

Regards,
\sh

Revision history for this message
Jonathan Jesse (jjesse) wrote :

I have stopped working on the documentation for this project because I thought it stalled or died. Glad to see some more thoughts and work along with this. While I'm not a coder I think this is a great project and great idea to see code being worked on again

Revision history for this message
Markus Korn (thekorn) wrote :

I just decided to push my code to lp:~thekorn/leonov/reloaded. I hopped to find some time to comment and polish the code a bit over the last few days, but did not get to it.
Please expect the the progress queue bit to be changed in the near future, it turned out that launchpadlib is not threadsafe, so we need to work around this (I'm not sure how, suggestions are always welcome)

Markus

Revision history for this message
Markus Korn (thekorn) wrote :

As I like screencasts, here is a new one.
It shows how well leonov loads different content in the main area

Markus

Revision history for this message
Markus Korn (thekorn) wrote :

Today I started working on a widget to show tasks. Besides the usual information about status, importance, assignee and target this widget will contain a timeline showing all date related attributes of a task (like date_created, date_closed, ...)

The attached video shows a first very rough version of this widget

Markus

Revision history for this message
Przemek K. (azrael) wrote :

Any news on a new Leonov release? Or any progress?

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.