# Which of these gsoc project should I choose?

**URL:** <https://discourse.julialang.org/t/which-of-these-gsoc-project-should-i-choose/22794>\
**Category:** Internals & Design\
**Tags:** data\_structures, gsoc\
**Created:** [April 5, 2019, 12:34pm UTC](https://discourse.julialang.org/t/which-of-these-gsoc-project-should-i-choose/22794 "2019-04-05T12:34:23Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![sagartewari01](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sagartewari01/32/7810_2.png) [@sagartewari01](https://discourse.julialang.org/u/sagartewari01)\
**Post date:** [April 5, 2019, 12:34pm UTC](https://discourse.julialang.org/t/which-of-these-gsoc-project-should-i-choose/22794/1 "2019-04-05T12:34:23Z")

</div>

Hi,

I intend to work on julia as a GSOC project this year. These are the ideas that I have in mind:

1. Bringing [FunctionalCollections](https://github.com/JuliaCollections/FunctionalCollections.jl) to a usable state. I’m familiar with the clojure’s implementations of persistent collections and it looks like FunctionalCollections are inspired by them. These are some of the improvements that could be made to them:  
a) Introduce transient versions of these libraries  
b) For `map` operation, we could create a clone of the input collection with similar trie structure and undefined values, and then iterate over it while filling in the mapped values.  
c) Experiment with different values of shift width based on the size of element type, to account for cache line size. See if that affects performance in any way.  
d) Go through the implementation of some of the tools mentioned [here](https://github.com/lacuna/bifurcan/blob/master/doc/comparison.md), see if there’s anything useful which could be ported over to julia.

The ideas page mentions that functional collections could be used “to accelerate computational problems in the compiler”. Isn’t it the case that functional collections trade speed for guarantees like simpler multi-threading? How can they be used in julia to speed up computational problems?

1. Create a package management tool similar to `cargo` for julia environment, preferably in julia itself. The community bonding period will be spent understanding how package management works in julia, and reading the source of `Pkg.jl`. The end result will be something similar to `npm` or `cargo`, which would allow users to easily setup a template project with minimal work, with support for tests, benchmarks and preferably custom targets.  
Maybe the `Pkg` repl already provides most of the stuff mentioned here, but it’s hidden in the julia repl. Having a binary specifically for project management will be very nice to have.

---

<div class="post-metadata">

**Author:** ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)\
**Post date:** [April 5, 2019, 1:09pm UTC](https://discourse.julialang.org/t/which-of-these-gsoc-project-should-i-choose/22794/2 "2019-04-05T13:09:31Z")

</div>

I think the best predictor of a successful GSOC project is being interested in it. These are very different projects, and you should go with the one you find more intriguing.

---

<div class="post-metadata">

**Author:** ![sagartewari01](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sagartewari01/32/7810_2.png) [@sagartewari01](https://discourse.julialang.org/u/sagartewari01)\
**Post date:** [April 6, 2019, 8:08am UTC](https://discourse.julialang.org/t/which-of-these-gsoc-project-should-i-choose/22794/3 "2019-04-06T08:08:04Z")

</div>

> you should go with the one you find more intriguing

In that case I would like to go with `FunctionalCollections`. I’ve shared the draft of my proposal for this project from the GSOC website. Would appreciate feedback on that.
