GSoC considerations
Edward Toroshchin
edward.hades at gmail.com
Thu Apr 11 22:53:21 UTC 2013
Hi,
I guess the first question is quite important: who is going to mentor at
all?
On Tue, Apr 09, 2013 at 03:46:31PM +0200, Matěj Laitl wrote:
> I've added 3 ideas, but I might not be able to mentor them in case I'm
> accepted as a student, however I plan to do code reviews. Please have a look
> at these - if they seem nonsense, please shout early! "I could mentor this" or
> "I suggest a change" are of course also accepted. ;)
They look quite good to me: well described and timely. For which one are
you going to apply yourself?
I belive I would be able to mentor either of the projects.
I didn't read into the details, though, I think we should do it together
with the students who want to apply. Those are ideas, after all, not
thorough project specs.
> I have also another idea on my mind: Scripting Interface Revival
Why revival? It's alive and kicking.
Still, this is a nice idea, but the project should start with a review
of existing scripts, API calls they use and don't use, probably contact
some of the script authors and ask what they like/dislike/want/don't
want (hey, script writers, are you reading this?).
> Myriam also suggests that we should run the "QML Context View" idea again and
> I support it. Agreed?
No objection from me, but I don't think I'll be up to mentoring that.
I've also got an ambitious idea for the brave-hearted: a design of
Amarok 3 architecture. One should read carefully the Randa doc (scope,
vision, requirements), our codebase, and come up with the following:
* the data model;
* the big components layout (player engine, database, ui, ...);
* the interaction between the components;
My personal view on this point being: the engine, media database and UI
(at least) must be separate processes, so that:
+ at least the first two can be made rock-solid, valgrinded,
unit-tested, etc.,
+ the data structures and flows are strictly defined,
+ no bullshit a la "we can't use class XXX from YYY thread if ZZZ",
+ theoretically, any component should be completely replaceable.
I'll try to describe the benefits (as I see them) of these changes
below (if you bear with me).
* which parts of the existing code can be spared and reused, and which
would rather be killed with fire;
* and so on.
I think it would be quite a challenging and interesting project.
Now, as promised, my view on the process-based architecture.
Although switching to IPC may seem over-complicated, I think it would be
actually much easier to live with than our current thread zoo.
Currently, before any tiny bit of code can be changed, a lot of things
have to be considered, which raises the entry difficulty for developers
a lot (and we're not in the best of situations there ATM).
So here are the benefits, as I see them (in a loose order of decreasing
importance):
* it would be easier to debug and develop upon individual components
(hence, improving the quality, userbase, and developer community),
* database would be easy to replace (mysql, nepomuk, whatever), it
might even become plausible once more to maintain several backends
(although a sql and nepomuk would probably be the favorites),
* the playback engine would do only playback, do it well, and not fuck
up anything else (I believe currently the first question that's being
asked in a bug report is 'have you tried changing the playback
backend'),
* UI might be replaceable. We might want to have a variant of an UI for
low-performance systems. Web UI (someone mentioned recently)? Easy!
* the environment and resource usage could be contained within each of
the processes. Think MySQL (all the exit()'s, all the *argv, all the
pain and misery and 500-megabyte caches for no reason).
Of course, this may not require splitting the components into processes
per se. But I still think the split is important, because it requires a
good fundamental design, and confines the development to it. Which is a
good thing.
Hope you don't regret reading all this! Cheers,
--
Edward "Hades" Toroshchin
dr_lepper on irc.freenode.org
More information about the Amarok-devel
mailing list