License
Any plans to add a license to this repo? MIT would be awesome. Thanks.
On Jul 2, 2013 7:30 PM, "Andrew de Andrade" [email protected] wrote:
Any plans to add a license to this repo? MIT would be awesome. Thanks.
Hi Andrew,
Would the Apache license be ok for you?
Best of wishes!
I tend to prefer MIT because it is more compatible with other license (for example, Apache 2.0 is not compatible with GPL v2 due to patent indemnification) and is simpler to adhere to when including in minified Javascript delivered to the browser(technically Apache 2.0 requires distribution of entire license when distributing code), however in this particular case I guess Apache 2.0 is fine even though I might want to include it in minified javascript at some point.
Should I go ahead and fork the repo and add a full license document and a license header to the JS that is preserved during magnification (i.e. via /*! This comment will not be removed, so it's a good place to put a copyright */)?
Out of curiosity, why Apache 2.0, since there is no trademark involved here and a patent grant is probably irrelevant since all this stuff was described in Huet's paper and implemented by the Haskell community a while ago? Changelogs?
I can not release this immediately till I can follow up with my work. I'll let you know as quickly as I can.
No problem. I'm working on a pretty big project. I'll just drop it in as a vendor lib to get my code working and if it turns out that you can't open source it, I'll just write a new one.
I now see why you prefer would be Apache 2.0. I checked out your résumé and saw that you're at Google and they only use Apache 2.0 for their own projects.
Was this something you wrote for fun or that you use in production?
For fun; I wrote that library years ago to support some research work.
About that apache license thing: yeah, I just started at Google four weeks ago! I hope you don't mind: I want to use this to see what the process is for releasing open source at Google, so I'm trying to do it by the letter. I just started asking the open source group here and hope to hear from them promptly. On Jul 3, 2013 4:17 PM, "Andrew de Andrade" [email protected] wrote:
No problem. I'm working on a pretty big project. I'll just drop it in as a vendor lib to get my code working and if it turns out that you can't open source it, I'll just write a new one.
I now see why you prefer would be Apache 2.0. I checked out your résumé and saw that you're at Google and they only use Apache 2.0 for their own projects.
Was this something you wrote for fun or that you use in production?
— Reply to this email directly or view it on GitHubhttps://github.com/dyoo/js-tree-cursor/issues/3#issuecomment-20451088 .
Awesome. Totally hear you on wanting to do it by the letter. Say hello to Chris DiBona if you meet him. I met him a few years ago at Google I/O in Brazil. Quality dude.
Anyways, keep me posted.
On Wed, Jul 3, 2013 at 9:31 PM, Andrew de Andrade [email protected]:
Awesome. Totally hear you on wanting to do it by the letter. Say hello to Chris DiBona if you meet him. I met him a few years ago at Google I/O in Brazil. Quality dude.
Anyways, keep me posted.
Ok, I've licensed under Apache 2.0. Thanks for the wait!
Awesome. Thanks so much. The only other question I have for you is if it is practical to use this data structure when you maintain multiple cursors.
For example, I was trying to use the zipper to represent the underlying data shown in a tree view like the lists and todos in the Clear todo app. The data structure works great for the read only mode with every view (todo or list) maintaining a cursor to their respective node in the data structure. However, as soon as the state changes for one of those cursors, a new cursor is returned pointing to a new representation of the tree, leaving all the other cursors pointing back to a tree representing the original state.
How do I get constant time traversals from any node up and down, forwards and backwards, but make sure all the cursors point to the right node in the newest copy of the tree. i.e. how do I move the cursors from the old tree to the same nodes on the new tree (after rearranging, deletion, insertion, etc.). I have the suspicion that this may be the wrong data structure for the job, but all the examples of zipper usage I've looked at (file manager, window focus manager) seem analogous to my use case since they too deal with state (file deletion/creation or jumping focus from one window to another and changing the tree by opening or closing a window).
The closest I've seen is Oleg's work with concurrent zippers via delimited continuations [0], but I didn't see how state synchronization is managed between the multiple cursors or see if it is even practical to maintain cursors for every single node currently visible on screen.
[0] http://okmij.org/ftp/continuations/index.html
PS I can move this to a new issue if you want so this one can be closed.
On Fri, Jul 26, 2013 at 12:29 PM, Andrew de Andrade < [email protected]> wrote:
Awesome. Thanks so much. The only other question I have for you is if it is practical to use this data structure when you maintain multiple cursors.
For example, I was trying to use the zipper to represent the underlying data shown in a tree view like the lists and todos in the Clear todo app. The data structure works great for the read only mode with every view (todo or list) maintaining a cursor to their respective node in the data structure. However, as soon as the state changes for one of those cursors, a new cursor is returned pointing to a new representation of the tree, leaving all the other cursors pointing back to a tree representing the original state.
Yeah, unfortunately this is where I get stuck, myself. I don't know how to do this yet, though there might be a Functional Pearls paper out there that talks about supporting multiple cursors. The package I wrote doesn't do this though.
Oh, interesting. Here's everything I found on the topic since you obviously have a much broader and deeper background to understand it all:
http://stackoverflow.com/questions/3436559/zipper-like-data-structure-with-more-than-one-cursor http://okmij.org/ftp/continuations/index.html (specifically http://okmij.org/ftp/continuations/zipper.html#zipper2 ) http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.22.8611 http://scienceblogs.com/goodmath/2010/01/13/zippers-making-functional-upda/ http://pavpanchekha.com/blog/zippers/huet.html (part 4 seems to be the interesting piece, but it doesn't look like it's been written yet. May be someone worth connecting with) http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.72.8645&rep=rep1&type=pdf
I have the following links on delimited continuations in JS: http://calculist.blogspot.com/2010/04/delimited-continuations-in-ecmascript.html http://axisofeval.blogspot.com/2012/09/mixing-first-order-and-higher-order.html http://marijnhaverbeke.nl/cps/
Unfortunately, I have no time to work on this for the immediate future, since my job is eating my time. On Jul 26, 2013 3:19 PM, "Andrew de Andrade" [email protected] wrote:
Oh, interesting. Here's everything I found on the topic since you obviously have a much broader and deeper background to understand it all:
http://stackoverflow.com/questions/3436559/zipper-like-data-structure-with-more-than-one-cursor http://okmij.org/ftp/continuations/index.html (specifically http://okmij.org/ftp/continuations/zipper.html#zipper2 ) http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.22.8611 http://scienceblogs.com/goodmath/2010/01/13/zippers-making-functional-upda/ http://pavpanchekha.com/blog/zippers/huet.html (part 4 seems to be the interesting piece, but it doesn't look like it's been written yet. May be someone w orth connecting with)
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.72.8645&rep=rep1&type=pdf
I have the following links on delimited continuations in JS:
http://calculist.blogspot.com/2010/04/delimited-continuations-in-ecmascript.html
http://axisofeval.blogspot.com/2012/09/mixing-first-order-and-higher-order.html http://marijnhaverbeke.nl/cps/
— Reply to this email directly or view it on GitHubhttps://github.com/dyoo/js-tree-cursor/issues/3#issuecomment-21651671 .
Oh I think I miscommunicated. My intent was not to have you solve this problem for me and update this library. I just wanted to share what I found with you since I figure you may want to figure out how to solve this problem generally for the future. A while back I checked out your résumé and I figured you for someone who would want to figure out that problem one day for yourself. :)