[Haskell-cafe] Yi project proposal for GSOC 2014

John Lato jwlato at gmail.com
Mon Mar 10 23:43:39 UTC 2014


I think this has potential to be a good proposal, although I have a few
concerns:

1.  It's a bifurcated proposal, with two major components.  I think the
proposal would be stronger if you address more either how adding
concurrency will help with all those tickets, or other features that should
be supported in yi but can't with the current design.  You give a few
examples further down, but at present it reads (to me) as though you want
to add concurrency just for the sake of it.

2.  Despite the well-known fact that Concurrency is Hard, in many ways
Haskell provides better tools to manage concurrency than many other
languages.  There are so many options, that sometimes people have
difficulty knowing what to pick.  This work seems to provide an obvious
benefit to the Haskell community in that others can see what you chose,
why, and how it worked in practice (including any pitfalls).

Out of your benefits to the Haskell community, IMHO 2) and 3) are solid but
1) is rather general and conceivably would apply to any proposal.  Unless
you have specific library deliverables in mind, I'd suggest starting with
your third point.

These aren't really technical concerns, rather they're about the
language/focus of your proposal.  Although I do think this is an ambitious
project, the scope as you've defined it might be manageable within a GSOC.
 That said, I wouldn't be surprised if adding concurrency takes more time
than you've allocated, or is a source of new bugs that you'll have to fix,
thereby preventing you from working on the bugs you've already identified.

Cheers,
John L.


On Mon, Mar 10, 2014 at 8:09 AM, Mateusz Kowalczyk
<fuuzetsu at fuuzetsu.co.uk>wrote:

> Greetings,
>
> GSOC 2014 proposal period opens in ~4 hours and I'm hoping to
> participate this year as well. This time around I'd quite like to work
> on Yi. As we did last year, I think it's worthwhile to put up the
> proposals on café for people to comment on before they are submitted on
> Google's site.
>
> I paste it in full below so that it is easier to respond to parts of it
> (although I do ask that you don't quote the whole thing if it's not
> necessary). In case any changes happen, the most up-to-date version
> should be at https://gist.github.com/Fuuzetsu/9462709
>
> Please feel free to nitpick on anything, throw in suggestions and ask
> for clarifications. I will give 5 days of discussion period on this
> after which point I'll submit it on Google's site. I appreciate all
> feedback.
>
> Thanks!
>
>
> Yi concurrency, usability and hackability
> ------------------------------------------
>
> * What is the goal of the project you propose to do?
>
>     There are two main goals of the project: the first is to implement
>     concurrency in the Yi text editor. The second aim is to start
>     bringing Yi into the territory of usable and hackable editors.
>
>     Dmitry Ivanov who's currently in charge of Yi has agreed to mentor
>     this project.
>
> * In what ways will this project benefit the wider Haskell community?
>
>     While the project itself isn't one of the core ones (such as GHC,
>     Haddock and Cabal), I feel that there are a couple of benefits to the
>     community:
>
>     1. Work on Yi (now and in the future) will undoubtedly spawn new
>        Haskell libraries usable in other projects. My personal
>        experience with Yi shows that it's actually very comfortable to
>        write a generic library which does what we need and then having
>        a separate package which uses the library to actually interact
>        with Yi.
>
>     2. Haskellers come closer to escaping the ELisp/vimscript hell. We
>        can get a nicer programming environment, made and extensible in
>        the language of our choice and get to use all the libraries
>        that we're used to while we're at it.
>
>     3. We'll have more Real World(tm) Haskell applications. On a more
>        serious note, it can serve as a good example of how to do
>        certain things with Haskell: off the top of my head, it
>        demonstrates the use of dyre and gtk2hs in a real-world
>        scenario rather than a 5 line example on the Haskell wiki. If
>        the project is successful, we can add concurrency to this.
>
>     Other than the Haskell community in general, this project should
>     benefit anyone with some interest in text editors. I think it's
>     safe to say that happens to be a large majority of Haskellers:
>     most of us want nicer integration with Haskell tools and
>     libraries[citation needed] and now it'll be possible through
>     direct, type-checked library access.
>
> * Can you give some more detailed design of what precisely you intend
>   to achieve?
>
>     The concurrency goal will involve careful study of Yi's inner
>     workings in order to try and accommodate concurrency in Yi's
>     editor state. There are various ways to do concurrency and the
>     first part of the project will concentrate on settling for one. An
>     example of two different ways is to extend the existing Yi engine
>     with classical tools (MVars, channels) to accommodate for
>     concurrency that way. An alternative way would be to modify the
>     engine so that concurrency support is natural. Such experiment was
>     started [here](https://github.com/ethercrow/y) using the sodium
>     FRP package which would give us concurrency 'for free'. The
>     experiment is not complete and this is the kind of thing that will
>     first be explored.
>
>     Of course once we settle for a method, time will be spent
>     implementing it. In the end, this should allow us to do things
>     such as fire Yi events periodically or do network transfers
>     without having to halt the whole editor. Editors such as emacs
>     which are single-threaded effectively hop back-and-forth between
>     tasks on a single thread. We aim to provide the ability to simply
>     have tasks on different threads which allows us to take advantage
>     of system resources much better.
>
>     The second part of the project is to make Yi more usable and
>     hackable. Usability here involves fixing bugs apparent to the user
>     and hackability involves bugs apparent to developers. Further,
>     as part of usability, I plan to implement as many editor modes as
>     I find time for.
>
>     Specifically, here are some open bugs that I hope to either fix or
>     to make a considerate progress on: #445, #397, #517, #519, #515,
>     #516, #513 (concurrency), #512, #507, #504, #502, #501, #499,
>     #497, #493, #487, #478, #477, #468, #465, #399, #396, #391, #390,
>     #382, #322, #295, #172, #160, #106, #145, #112, #82, #509.
>
>     All the bug numbers can be viewed on
>     [GitHub](https://github.com/yi-editor/yi/issues/). Please note
>     that some of these are documentation bugs: Yi suffers from poor
>     documentation and I believe that's what the main problems in
>     gaining developers and users has been. When time or area I'm
>     working on allows, missing documentation will be written.
>
>     If I find any issue that have been fixed or are no longer
>     applicable, the reports will simply be closed. The issues are very
>     varied: unicode problems, keymap problems, highlighter problems,
>     reloading problems, testing problems, mode problems... There is
>     certainly enough work to entertain anyone for a longer amount of
>     time while making Yi visibly better.
>
>     The list of issues is simply an indicator of which problems the
>     second goal of the project will concentrate on, rather than as a
>     promise of which bugs are guaranteed to be fixed by the end of it.
>
>     Alongside this goal, I'll write any modes for Yi as I find time
>     for them. The completion of concurrency part of the project allows
>     us to write many of the modes frequently requested by people
>     wishing to use Yi which are currently impossible/unfeasible to
>     write.
>
> * What deliverables do you think are reasonable targets? Can you
>   outline an approximate schedule of milestones?
>
>     The plan is based on the GSoC time line:
>     20 April - 19 May - while this is a bonding period, I'm already a
>     part of the Yi community and have a fair grasp of it. I'd start to
>     look into this project as early as this period (and in fact I plan
>     to make steps towards it before this date which means some of the
>     outlined issues might get fixed early ;) ).
>
>     19 May - 23 June - coding period; by this point I expect to have
>     decided on which concurrency model we'll use and have a good idea
>     of how it'll be implemented. By the end of this period,
>     concurrency should either be completed or nearly done, depending
>     on any unexpected problems that might come up. The deliverable
>     would be Yi with (at least some) concurrency support.
>
>     24 June - 11 August - second part of the coding period; work on
>     any of the listed (or unlisted bugs) and finish up concurrency if
>     it is still not done. Write extra Yi modes, libraries and
>     documentation as time allows.
>
>     11 August - 18 August - post-coding period; write any missing
>     documentation, promote any cool new stuff we wrote ;) While I can
>     not think of a specific deliverable, many bugs should now be
>     fixed, Yi should have a lot more documentation, tests and modes.
>
>     As a final note regarding the time line, it is not strictly
>     necessary that the project implements concurrency first: while
>     some bugs might need such support, many simply do not. If it's
>     convenient to fix something that I had originally planned to for
>     the second part of the project, I'll do so.
>
> * What relevant experience do you have? e.g. Have you coded anything
>   in Haskell? Have you contributed to any other open source software?
>   Been studying advanced courses in a related topic?
>
>     Second year CS student. I program on regular basis using Haskell.
>     I contribute to a bunch of FOSS projects as it seems necessary
>     (see [my GitHub](https://github.com/Fuuzetsu)).
>     I have successfully completed GSOC in 2013 which involved working
>     on Haddock. To this day I help out with Haddock which often
>     involves looking at the large GHC code base.
>
> * In what ways do you envisage interacting with the wider Haskell
>   community during your project? e.g. How would you seek help on
>   something your mentor wasn't able to deal with? How will you get
>   others interested in what you are doing?
>
>     I have a [blog](http://fuuzetsu.co.uk/blog) which gets propagated
>     onto Haskell Planet. I'm active on IRC and many Haskell-related
>     mailing lists. IRC, mailing lists and any relevant literature is
>     where I'd seek help were I to get stuck on something my mentor
>     can't help me with. I find that news about Yi are very popular and
>     get propagated by the community itself very easily so I doubt
>     there will be any problem getting people interested.
>
>     I'm very easily reachable over e-mail and IRC and all the
>     development is done in public.
>
> * Why do you think you would be the best person to tackle this
>   project?
>
>     I've been interested in Yi for a couple of months and have already
>     wrote some commits, closed quite a few issues and filed even more
>     issues on my own. I have access to the Yi repository and
>     I help anyone looking to get started with Yi. I have about 2 years of
>     Haskell experience and had my fair share of staring at library
>     code.
>
>     As mentioned before, I'm active as a member of the community and
>     help out with one of the core Haskell projects (Haddock).
>
>
> --
> Mateusz K.
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20140310/703d9abe/attachment-0001.html>


More information about the Haskell-Cafe mailing list