Re: [Mixxx-devel] Final GsoC Application
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
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
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
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
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
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
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