Re: [Mixxx-devel] Final GsoC Application

2017-03-31 Thread Daniel Schürmann
Anast,

here some thoughts:

What will happen if a user tries to remove a track from a top crates, 
which is also member of a lower level child crate?
Will both be removed?

Can the user distinguish a track in a top crate from on that is 
recursively gapped form a child crate?

We have discussed to use crates like tags.
Do you like the idea ?
Will there be something like a "crate membership" coloumn / search / 
sorting? How is a multi membership handled there?


Kind regards,

Daniel


Am 31.03.2017 um 22:49 schrieb Be:
> This looks better. Could you update your proposed timeline to reflect
> the changes?
>
> On 03/31/2017 02:21 PM, Anast Gramm wrote:
>> On Fri, Mar 31, 2017 at 06:59:48PM +0300, Anast Gramm wrote:
>>> Hello, I wrote a more detailed plan for those two features you metioned for 
>>> the project
>>> scope. I will send it soon after some polishing.
>> here it is (also in pdf below)
>>
>> 1 Nested Crates
>> ===
>>
>>   A preview for the nested crates is included. Tree like view. (If you don't 
>> listen
>>   to the Jazz/Trance sub-genre of Dub, you should!! :D )
>>
>>   The following is derived by the comments on launchpad and my thoughts
>>   on them.
>>
>>
>> 1.1 Overview
>> 
>>
>> 1.1.1 What can a crate contain?
>> ---
>>
>>   A crate can contain the following:
>>   - Another crate (smart or not)
>>   - Songs
>>
>>
>> 1.1.2 Can a song be in multiple crates?
>> ---
>>
>>   Yes.
>>
>>
>> 1.1.3 What happens when I click on a crate
>> --
>>
>>   Recursively lists all the songs that exist in the crate or the
>>   subcrates that it contains. DISTINCT! (eliminates duplicate songs)
>>
>>   ["mixxx's unique selling point!"]
>>
>>
>> ["mixxx's unique selling point!"]
>> https://bugs.launchpad.net/mixxx/+bug/671632/comments/37
>>
>>
>> 1.1.4 What happens when I drag a crate into another one
>> 
>>
>>   If the crate you drag is a parent crate to the one you drop it then
>>   nothing happens. (or an error!)
>>
>>   Else the drag crate and everything that it contains become members of
>>   the drop crate. (like moving files in a file system)
>>
>>
>> 1.1.5 How do I insert a song to a multilevel crate
>> --
>>
>>   You place the song to the crate you want it to become a member of. If
>>   you have multiple levels, the above still holds. If a crate/song
>>   belongs to a child, it belongs to the parent as well.
>>
>>
>> 1.1.6 How many levels will be supported?
>> 
>>
>>   As many as the user wants.
>>
>>
>> 1.1.7 What if I want two crates with different parents have the same name?
>> --
>>
>>   Every crate will contain information about it's parent, so the
>>   following can work:
>>
>>   Crate1/sameSubcrateName
>>
>>   Crate2/sameSubcrateName
>>
>>
>> 1.2 Implementation
>> ~~
>>
>>   Here are some first thoughts on the way the above will get
>>   implemented.
>>
>>
>> 1.2.1 Modifications
>> ---
>>
>>   In order for crates to be able to hold both other crates and songs
>>   some modifications need to be made in the database schema.
>>
>>   A new table with columns:
>>PARENT_ID  CHILD_ID
>>   -
>>......
>>
>>   Here the CRATE_ID will be linked with other CRATE_ID's depending on
>>   the parent/child state of those.
>>
>>   While populating this table checks will occur so that a crate can't be
>>   it's own parent, or a child can't have his parent as a child etc.
>>
>>   The whole crate side of the database might need a revamp for this to
>>   work efficiently and be expandable at the same time. I will look at it
>>   in depth in time.
>>
>>
>> 2 Search filter for Crates
>> ==
>>
>>   Due to the nested crate's complexity I will work on search filters
>>   first, while keeping in mind the future adjustments it might need in
>>   order to work well with nested crates.
>>
>>
>> 2.1 Overview
>> 
>>
>> 2.1.1 What is the search filter for crates
>> --
>>
>>   Typing "crate:" in the search bar, will act like a filter listing
>>   whatever any song within a crate named whatever comes after "crate:"
>>   (fuzzy style). Like "artist:"
>>
>>
>> 2.1.2 What about nested crates
>> --
>>
>>   Say you have a top level crate named (creatively) Crate1 with
>>   subcrates and songs nested under it. Typing crate:Crate1 in the search
>>   will list every song this crate contains and every subcrate's song as
>>   well.
>>
>>
>> 2.1.3 What about the same name subcrates we talked before
>> -
>>
>>   Typing crate:sameSubcrateName will get you both the crates with the

Re: [Mixxx-devel] Final GsoC Application

2017-03-31 Thread Be
This looks better. Could you update your proposed timeline to reflect 
the changes?

On 03/31/2017 02:21 PM, Anast Gramm wrote:
> On Fri, Mar 31, 2017 at 06:59:48PM +0300, Anast Gramm wrote:
>> Hello, I wrote a more detailed plan for those two features you metioned for 
>> the project
>> scope. I will send it soon after some polishing.
> here it is (also in pdf below)
>
> 1 Nested Crates
> ===
>
>   A preview for the nested crates is included. Tree like view. (If you don't 
> listen
>   to the Jazz/Trance sub-genre of Dub, you should!! :D )
>
>   The following is derived by the comments on launchpad and my thoughts
>   on them.
>
>
> 1.1 Overview
> 
>
> 1.1.1 What can a crate contain?
> ---
>
>   A crate can contain the following:
>   - Another crate (smart or not)
>   - Songs
>
>
> 1.1.2 Can a song be in multiple crates?
> ---
>
>   Yes.
>
>
> 1.1.3 What happens when I click on a crate
> --
>
>   Recursively lists all the songs that exist in the crate or the
>   subcrates that it contains. DISTINCT! (eliminates duplicate songs)
>
>   ["mixxx's unique selling point!"]
>
>
> ["mixxx's unique selling point!"]
> https://bugs.launchpad.net/mixxx/+bug/671632/comments/37
>
>
> 1.1.4 What happens when I drag a crate into another one
> 
>
>   If the crate you drag is a parent crate to the one you drop it then
>   nothing happens. (or an error!)
>
>   Else the drag crate and everything that it contains become members of
>   the drop crate. (like moving files in a file system)
>
>
> 1.1.5 How do I insert a song to a multilevel crate
> --
>
>   You place the song to the crate you want it to become a member of. If
>   you have multiple levels, the above still holds. If a crate/song
>   belongs to a child, it belongs to the parent as well.
>
>
> 1.1.6 How many levels will be supported?
> 
>
>   As many as the user wants.
>
>
> 1.1.7 What if I want two crates with different parents have the same name?
> --
>
>   Every crate will contain information about it's parent, so the
>   following can work:
>
>   Crate1/sameSubcrateName
>
>   Crate2/sameSubcrateName
>
>
> 1.2 Implementation
> ~~
>
>   Here are some first thoughts on the way the above will get
>   implemented.
>
>
> 1.2.1 Modifications
> ---
>
>   In order for crates to be able to hold both other crates and songs
>   some modifications need to be made in the database schema.
>
>   A new table with columns:
>PARENT_ID  CHILD_ID
>   -
>......
>
>   Here the CRATE_ID will be linked with other CRATE_ID's depending on
>   the parent/child state of those.
>
>   While populating this table checks will occur so that a crate can't be
>   it's own parent, or a child can't have his parent as a child etc.
>
>   The whole crate side of the database might need a revamp for this to
>   work efficiently and be expandable at the same time. I will look at it
>   in depth in time.
>
>
> 2 Search filter for Crates
> ==
>
>   Due to the nested crate's complexity I will work on search filters
>   first, while keeping in mind the future adjustments it might need in
>   order to work well with nested crates.
>
>
> 2.1 Overview
> 
>
> 2.1.1 What is the search filter for crates
> --
>
>   Typing "crate:" in the search bar, will act like a filter listing
>   whatever any song within a crate named whatever comes after "crate:"
>   (fuzzy style). Like "artist:"
>
>
> 2.1.2 What about nested crates
> --
>
>   Say you have a top level crate named (creatively) Crate1 with
>   subcrates and songs nested under it. Typing crate:Crate1 in the search
>   will list every song this crate contains and every subcrate's song as
>   well.
>
>
> 2.1.3 What about the same name subcrates we talked before
> -
>
>   Typing crate:sameSubcrateName will get you both the crates with the
>   same name. If you want your search to stay in one crate you have to
>   type it's parent crate (in case this is the same as well, you need the
>   full path)
>
>
> 2.2 Implementation
> ~~
>
>   Here I will make things work like the other filters, already existing
>   (artist: etc).
>
>   I believe this part will be not that hard to pull off.
>
>   I will have a more detailed plan for the implementation after the
>   community bonding period where I will read the whole code, and
>   understand it completely.
>

--
Check out the vibrant tech community on one of the world's 

Re: [Mixxx-devel] Final GsoC Application

2017-03-31 Thread Daniel Schürmann
Hi Anast,

only the pdf you send to http://summerofcode.withgoogle.com/
will be taken into account for the evaluation.

You are free to send it to us before, and take the chance to get some 
hints to improve it before the deadline.

Kind regards,

Daniel


Am 31.03.2017 um 17:59 schrieb Anast Gramm:
> Hello, I wrote a more detailed plan for those two features you metioned for 
> the project
> scope. I will send it soon after some polishing.
>
> Google asks for a pdf in the final application.
>
> Should I write a new document with the ones I send before combined
> and submit it as a pdf there? It's not that clear, so I am asking what would
> you prefere.
>

--
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
___
Get Mixxx, the #1 Free MP3 DJ Mixing software Today
http://mixxx.org


Mixxx-devel mailing list
Mixxx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mixxx-devel


Re: [Mixxx-devel] Final GsoC Application

2017-03-31 Thread Anast Gramm
On Fri, Mar 31, 2017 at 06:59:48PM +0300, Anast Gramm wrote:
> Hello, I wrote a more detailed plan for those two features you metioned for 
> the project
> scope. I will send it soon after some polishing.
here it is (also in pdf below)

1 Nested Crates
===

  A preview for the nested crates is included. Tree like view. (If you don't 
listen
  to the Jazz/Trance sub-genre of Dub, you should!! :D )

  The following is derived by the comments on launchpad and my thoughts
  on them.


1.1 Overview


1.1.1 What can a crate contain?
---

  A crate can contain the following:
  - Another crate (smart or not)
  - Songs


1.1.2 Can a song be in multiple crates?
---

  Yes.


1.1.3 What happens when I click on a crate
--

  Recursively lists all the songs that exist in the crate or the
  subcrates that it contains. DISTINCT! (eliminates duplicate songs)

  ["mixxx's unique selling point!"]


["mixxx's unique selling point!"]
https://bugs.launchpad.net/mixxx/+bug/671632/comments/37


1.1.4 What happens when I drag a crate into another one


  If the crate you drag is a parent crate to the one you drop it then
  nothing happens. (or an error!)

  Else the drag crate and everything that it contains become members of
  the drop crate. (like moving files in a file system)


1.1.5 How do I insert a song to a multilevel crate
--

  You place the song to the crate you want it to become a member of. If
  you have multiple levels, the above still holds. If a crate/song
  belongs to a child, it belongs to the parent as well.


1.1.6 How many levels will be supported?


  As many as the user wants.


1.1.7 What if I want two crates with different parents have the same name?
--

  Every crate will contain information about it's parent, so the
  following can work:

  Crate1/sameSubcrateName

  Crate2/sameSubcrateName


1.2 Implementation
~~

  Here are some first thoughts on the way the above will get
  implemented.


1.2.1 Modifications
---

  In order for crates to be able to hold both other crates and songs
  some modifications need to be made in the database schema.

  A new table with columns:
   PARENT_ID  CHILD_ID 
  -
   ......  

  Here the CRATE_ID will be linked with other CRATE_ID's depending on
  the parent/child state of those.

  While populating this table checks will occur so that a crate can't be
  it's own parent, or a child can't have his parent as a child etc.

  The whole crate side of the database might need a revamp for this to
  work efficiently and be expandable at the same time. I will look at it
  in depth in time.


2 Search filter for Crates
==

  Due to the nested crate's complexity I will work on search filters
  first, while keeping in mind the future adjustments it might need in
  order to work well with nested crates.


2.1 Overview


2.1.1 What is the search filter for crates
--

  Typing "crate:" in the search bar, will act like a filter listing
  whatever any song within a crate named whatever comes after "crate:"
  (fuzzy style). Like "artist:"


2.1.2 What about nested crates
--

  Say you have a top level crate named (creatively) Crate1 with
  subcrates and songs nested under it. Typing crate:Crate1 in the search
  will list every song this crate contains and every subcrate's song as
  well.


2.1.3 What about the same name subcrates we talked before
-

  Typing crate:sameSubcrateName will get you both the crates with the
  same name. If you want your search to stay in one crate you have to
  type it's parent crate (in case this is the same as well, you need the
  full path)


2.2 Implementation
~~

  Here I will make things work like the other filters, already existing
  (artist: etc).

  I believe this part will be not that hard to pull off.

  I will have a more detailed plan for the implementation after the
  community bonding period where I will read the whole code, and
  understand it completely.


notes.pdf
Description: Adobe PDF document
--
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot___
Get Mixxx, the #1 Free MP3 DJ Mixing software Today
http://mixxx.org


Mixxx-devel mailing list
Mixxx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mixxx-devel

Re: [Mixxx-devel] Final GsoC Application

2017-03-31 Thread Anast Gramm
Hello, I wrote a more detailed plan for those two features you metioned for the 
project
scope. I will send it soon after some polishing.

Google asks for a pdf in the final application.

Should I write a new document with the ones I send before combined
and submit it as a pdf there? It's not that clear, so I am asking what would
you prefere.

--
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
___
Get Mixxx, the #1 Free MP3 DJ Mixing software Today
http://mixxx.org


Mixxx-devel mailing list
Mixxx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mixxx-devel


Re: [Mixxx-devel] Final GsoC Application

2017-03-29 Thread Be
Hi, your application looks pretty good. As Daniel mentioned, it would 
help to have more detailed plans.

I think you are underestimating how complicated each task will be. 
Implementing the crate search filter and hierarchical crates would be a 
reasonable project scope for GSoC.

It would be better to implement the search filter first. Judging from 
the comments on https://github.com/mixxxdj/mixxx/pull/726, hierarchical 
crates would be quite complex to implement well. On the other hand, the 
crate search filter is a straightforward idea and would not require any 
GUI design, just modifying the existing search functionality. In 
addition to being less work, I think it would be easier to work on this 
feature at the same time as work is finishing to merge the GUI redesign 
from last year without developing lots of merge conflicts. Also, if you 
start with the less complex feature, I think the chance that we will 
have at least some useful, mergeable code from your GSoC project that 
quickly makes it into a Mixxx release would be good. If we could get a 
fully functional crate search filter merged before midterm, that would 
be excellent. That would leave more time for the complex hierarchical 
crate feature.

I have briefly considered what changes would be required to implement 
crate searching myself. It will not be super easy (otherwise I would 
have done it already), but I don't think it would be too difficult 
either. The current database schema makes it easy to implement the 
existing search filters. However, the way crates are stored in the 
database is not very conducive to that. Either the database schema will 
need to be modified or the search filtering code will need to be heavily 
refactored to implement this. I do not know which approach would be 
wiser. Maybe Uwe or Daniel could provide a better idea. I suggest 
opening your Mixxx database in DB Browser for SQLite ( 
http://sqlitebrowser.org/ ) while reading how the search filters are 
processed in C++ to get a better idea of what will be required.

As for the hierarchical crates, read through the comments on 
https://github.com/mixxxdj/mixxx/pull/726 to get an idea of the 
complexity of the feature. I think it would be a good idea to have a 
general plan for how to implement both the crate search filter and 
hierarchical crates before you start coding so that you do not have to 
extensively refactor the search filter code to work together with 
hierarchical crates.

I think the idea behind the "smart crates" feature is already 
implemented in the pending library redesign branch from last year's GSoC 
under a different name and interface. Try checking out that branch 
(refer to https://gist.github.com/piscisaureus/3342247 for how to set 
that up) and playing with what is already there. It has a feature that 
lets users save and restore search queries. I do not know if it has the 
optimization of caching the results of saved queries implemented though. 
If you find time at the end of your GSoC project (or afterwards if you 
would like!), optimizing the saved queries could be a nice polishing touch.

On 03/29/2017 02:55 PM, Daniel Schürmann wrote:
> Hi Anast,
>
> you Application looks good so far but it requires some more details.
>
> I think you should target your project on top of our new library GUI
> design which will be merged once Mixxx 2.1 is released.
> https://github.com/mixxxdj/mixxx/pull/1117
>
> A GUI Mock-up/picture showing the planed feature would be nice.
>
> You should also have a close look on:
> https://github.com/mixxxdj/mixxx/pull/726
>
> What is good, what can be improved?
>
> There are some different natures of smart crates discussed.
> https://bugs.launchpad.net/mixxx/+bug/661460
> What will you implement exactly.
> What can the user finally do with it and what not.
>
> Kind regards,
>
> Daniel
>
>
>
>
>
>
>
>
>
>
> Am 29.03.2017 um 20:40 schrieb Anast Gramm:
>> Name: Grammenos Anastasis
>> Nationality: Greece
>> School: Aristotle University of Thessaloniki
>> Department: Computer Science
>> Link: [http://www.csd.auth.gr/en/]
>> Semester: 8th
>>
>> 1 Intro
>> ===
>>
>>   Hello, as you may know from my previous email in this list, I'd like
>>   to participate at GsoC 2017. This is my final application.
>>
>>
>> 2 Mixxx development
>> ===
>>
>>   So far I managed to set a running developer environment for the
>>   project using emacs, gdb dubugger and rtags. I have also downloaded
>>   and set up eclipse and QtCreator in case I need them.
>>
>>   I am able to run tests, and currently working on a bug.
>>   [https://bugs.launchpad.net/mixxx/+bug/1663444]
>>
>>   I'll issue a pull request when I have time, since now I am working
>>   most of the day in a temp job. (It ends soon)
>>
>>
>> 3 Goals
>> ===
>>
>>   I'd like to improve mixxx's crate functionalities. For that I plan to
>>   improve the database behind it to be able to support hierarchical
>>   organisation and search filters. And also set 

Re: [Mixxx-devel] Final GsoC Application

2017-03-29 Thread Daniel Schürmann
Hi Anast,

you Application looks good so far but it requires some more details.

I think you should target your project on top of our new library GUI 
design which will be merged once Mixxx 2.1 is released.
https://github.com/mixxxdj/mixxx/pull/1117

A GUI Mock-up/picture showing the planed feature would be nice.

You should also have a close look on:
https://github.com/mixxxdj/mixxx/pull/726

What is good, what can be improved?

There are some different natures of smart crates discussed.
https://bugs.launchpad.net/mixxx/+bug/661460
What will you implement exactly.
What can the user finally do with it and what not.

Kind regards,

Daniel










Am 29.03.2017 um 20:40 schrieb Anast Gramm:
> Name: Grammenos Anastasis
> Nationality: Greece
> School: Aristotle University of Thessaloniki
> Department: Computer Science
> Link: [http://www.csd.auth.gr/en/]
> Semester: 8th
>
> 1 Intro
> ===
>
>   Hello, as you may know from my previous email in this list, I'd like
>   to participate at GsoC 2017. This is my final application.
>
>
> 2 Mixxx development
> ===
>
>   So far I managed to set a running developer environment for the
>   project using emacs, gdb dubugger and rtags. I have also downloaded
>   and set up eclipse and QtCreator in case I need them.
>
>   I am able to run tests, and currently working on a bug.
>   [https://bugs.launchpad.net/mixxx/+bug/1663444]
>
>   I'll issue a pull request when I have time, since now I am working
>   most of the day in a temp job. (It ends soon)
>
>
> 3 Goals
> ===
>
>   I'd like to improve mixxx's crate functionalities. For that I plan to
>   improve the database behind it to be able to support hierarchical
>   organisation and search filters. And also set the ground for future
>   expansion. I will also try to implement some kind of smartcrates e.g.
>   crate Oldies will have all songs released < 1980, and keep it synced
>   with the users library.
>
>
> 4 Timeline
> ==
>
> 4.1 May 4 - 30
> ~~
>
>   For the first period, I'll be actively working on bugs and reading the
>   code to get a broader understanding of the project's structure. I'll
>   probably ask questions, so please bear with me. I'll focus on the
>   database and the crate functionality for obvious reasons.
>
>
> 4.2 May 30 - June 30
> 
>
>   As a goal for the first evaluation, I want to have a working schema of
>   the database to support the aforementioned crate expansions, and
>   already start working on the hierarchy stuff.
>
>
> 4.3 June 30 - July 24
> ~
>
>   2 months in and the first nested crates will be available for testing
>   in my branch. Work on the search filters will be near the end, mainly
>   with UI stuff remaining. (like a new create search bar)
>
>
> 4.4 July 28 - August 21
> ~~~
>
>   Everything will be ready to get merged in MASTER, while smart crates
>   will be my main focus. If everything goes well, I'll be faster than
>   this plan and have more done by the end of the summer.
>
>
> 5 Outro
> ===
>
>   Feel free to ask me anything about anything, I usually am on IRC
>   (nick: gramanas) or via this mail. I hope we get to work together!
>
> --
>
> Grammenos Anastasis
>

--
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
___
Get Mixxx, the #1 Free MP3 DJ Mixing software Today
http://mixxx.org


Mixxx-devel mailing list
Mixxx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mixxx-devel