[Haskell-cafe] Month (and a bit) in haskell-ide-engine November 2015

Alan & Kim Zimmerman alan.zimm at gmail.com
Wed Dec 2 08:34:41 UTC 2015


Welcome Haskell IDE Engine (future) users,

Haskell IDE Engine progress report for November 2015.
What is Haskell IDE Engine?

Not an IDE.

It is a common point to join together the effort of integrating tools into
an IDE and the effort of writing tools for an IDE, by providing an API in
the middle that each of these parties can work from and to.
Important developments

The first commit to this project took place on 22 October. In a little over
a month we have had 290 commits, 116 PRs, and 114 issues.

We have 14 contributors, 16 forks, 155 stars and 36 watchers.

So it is safe to say we are actively working on the project.

At this point we have an initial implementation of the architecture, which
allows for different front end transport implementations to interface with
the IDE. The current supported transports are JSON over stdio and JSON over
HTTP. The architecture allows for other data encodings or interface
protocols, so long as the hie side can read and write to TChans.

We have a PluginDescriptor type which captures information about a given
plugin, which is loaded into the main dispatcher in a namespace per plugin.
The commands exposed by a plugin can run in synchronous or async mode, if
they are long running, or must coordinate with backend infrastructure.

The initial plugins under development provide access to

   - ghc-mod
   - HaRe
   - base plugin, allowing plugin introspection
   - example plugin

A ghci-ng plugin is on hold pending the Remote GHCi work Simon Marlow is
doing.

We have initial integrations to emacs, and to leksah.
Current project focus

The current project focus is on getting our collective heads straight on
what actually needs to be done, and to provide working integrations to at
least 2 IDEs to get a better feel for what is needed.

Both of these are well in hand, and if anyone would like to join in the
discussion happens via the github issue tracker and docs section of the
project, as well as IRC at #haskell-ide-engine on freenode.
Issues closed in November

   - Do plugins the same way as GHC #1
   <https://github.com/haskell/haskell-ide-engine/issues/1>
   - Use Idris's protocol? #3
   <https://github.com/haskell/haskell-ide-engine/issues/3>
   - What would the smallest useful haskell-ide look like #4
   <https://github.com/haskell/haskell-ide-engine/issues/4>
   - Loose comments from editor (emacs) perspective #5
   <https://github.com/haskell/haskell-ide-engine/issues/5>
   - Name of project module hierarchy root question #9
   <https://github.com/haskell/haskell-ide-engine/issues/9>
   - Proposition: setup the same label and milestones system as in stack
   repo #22 <https://github.com/haskell/haskell-ide-engine/issues/22>
   - The command "./travis_long stack +RTS -N2 -RTS build --test
   --pedantic" exited with 1 #28
   <https://github.com/haskell/haskell-ide-engine/issues/28>
   - Travis build should be deterministic #30
   <https://github.com/haskell/haskell-ide-engine/issues/30>
   - HIE should start web server only on demand #31
   <https://github.com/haskell/haskell-ide-engine/issues/31>
   - Make all ToJSON instances clearly visible #32
   <https://github.com/haskell/haskell-ide-engine/issues/32>
   - make jsonHttpListener only start via a CLI flag #33
   <https://github.com/haskell/haskell-ide-engine/issues/33>
   - Add the balance of commands to the HaRe plugin #36
   <https://github.com/haskell/haskell-ide-engine/issues/36>
   - Extend the dispatcher to validate commands before calling worker #37
   <https://github.com/haskell/haskell-ide-engine/issues/37>
   - Decide on package name for the plugin API / plugin packages #39
   <https://github.com/haskell/haskell-ide-engine/issues/39>
   - Remove Context from IdeRequest #40
   <https://github.com/haskell/haskell-ide-engine/issues/40>
   - Consume invalid input #43
   <https://github.com/haskell/haskell-ide-engine/issues/43>
   - Encourage stateless programming style #45
   <https://github.com/haskell/haskell-ide-engine/issues/45>
   - Worker function parameter passing #54
   <https://github.com/haskell/haskell-ide-engine/issues/54>
   - Bring in async processing #67
   <https://github.com/haskell/haskell-ide-engine/issues/67>
   - Define Emacs menu #68
   <https://github.com/haskell/haskell-ide-engine/issues/68>
   - Add references to hsimport, hlint-refactor, haskdogs, etc. #84
   <https://github.com/haskell/haskell-ide-engine/issues/84>
   - struggling with ghci-ng #86
   <https://github.com/haskell/haskell-ide-engine/issues/86>
   - Different behavior between launch stack exec hie and hie directly #87
   <https://github.com/haskell/haskell-ide-engine/issues/87>
   - PluginDescriptor should not be serialisable #92
   <https://github.com/haskell/haskell-ide-engine/issues/92>
   - Add user visible info to PluginDescriptor #98
   <https://github.com/haskell/haskell-ide-engine/issues/98>
   - Consider switching back to aeson-generated json serialization? #109
   <https://github.com/haskell/haskell-ide-engine/issues/109>

Pull requests merged in November

   - Fix badges #15 <https://github.com/haskell/haskell-ide-engine/pull/15>
   - Add argon to Tools #17
   <https://github.com/haskell/haskell-ide-engine/pull/17>
   - (RFC) [list of tools] add more tools, add links, add short
   descriptions, group tools #18
   <https://github.com/haskell/haskell-ide-engine/pull/18>
   - fixed typo #21 <https://github.com/haskell/haskell-ide-engine/pull/21>
   - [RFC] New readme for the project #23
   <https://github.com/haskell/haskell-ide-engine/pull/23>
   - Fix spelling of ‘supersede’ in README #24
   <https://github.com/haskell/haskell-ide-engine/pull/24>
   - Fix minor typos #26
   <https://github.com/haskell/haskell-ide-engine/pull/26>
   - Add Emacs process communication layer #27
   <https://github.com/haskell/haskell-ide-engine/pull/27>
   - Improve wire protocol #34
   <https://github.com/haskell/haskell-ide-engine/pull/34>
   - Handwrite ToJSON instances, fix #32 #35
   <https://github.com/haskell/haskell-ide-engine/pull/35>
   - Introduce cmdFileExtensions for the CommandDescriptor #41
   <https://github.com/haskell/haskell-ide-engine/pull/41>
   - Make web interface optional and port configurable #42
   <https://github.com/haskell/haskell-ide-engine/pull/42>
   - Remove Context, simplifying IdeRequest #44
   <https://github.com/haskell/haskell-ide-engine/pull/44>
   - Implement testing framework for Emacs (plus some fixes) #46
   <https://github.com/haskell/haskell-ide-engine/pull/46>
   - Remove state cwd #47
   <https://github.com/haskell/haskell-ide-engine/pull/47>
   - Dispatcher validation #51
   <https://github.com/haskell/haskell-ide-engine/pull/51>
   - Improve console #53
   <https://github.com/haskell/haskell-ide-engine/pull/53>
   - Error structure with code #55
   <https://github.com/haskell/haskell-ide-engine/pull/55>
   - Use a GADT parametrized by param type, fixes #54 #56
   <https://github.com/haskell/haskell-ide-engine/pull/56>
   - Ghcmod commands #57
   <https://github.com/haskell/haskell-ide-engine/pull/57>
   - Expect json input separated by STX, fix #43 #59
   <https://github.com/haskell/haskell-ide-engine/pull/59>
   - fixed typo ParamDescription #60
   <https://github.com/haskell/haskell-ide-engine/pull/60>
   - Add the rest of the commands to HaRe plugin #62
   <https://github.com/haskell/haskell-ide-engine/pull/62>
   - Short cut sleeping when result is available #63
   <https://github.com/haskell/haskell-ide-engine/pull/63>
   - Typed responses #64
   <https://github.com/haskell/haskell-ide-engine/pull/64>
   - Enrich plugins call #65
   <https://github.com/haskell/haskell-ide-engine/pull/65>
   - Implement STX #69
   <https://github.com/haskell/haskell-ide-engine/pull/69>
   - Fall back to emacs if there is no emacs24 binary #70
   <https://github.com/haskell/haskell-ide-engine/pull/70>
   - Async dispatch #72
   <https://github.com/haskell/haskell-ide-engine/pull/72>
   - Remove invalid input even if not handled #73
   <https://github.com/haskell/haskell-ide-engine/pull/73>
   - Handle end-of-file #74
   <https://github.com/haskell/haskell-ide-engine/pull/74>
   - Properly handle STX delimited message #75
   <https://github.com/haskell/haskell-ide-engine/pull/75>
   - [WIP] Initial stab at hie-mode #76
   <https://github.com/haskell/haskell-ide-engine/pull/76>
   - Rename sub-packages to be hie-* #77
   <https://github.com/haskell/haskell-ide-engine/pull/77>
   - added fast-tags #80
   <https://github.com/haskell/haskell-ide-engine/pull/80>
   - Simplify json #85
   <https://github.com/haskell/haskell-ide-engine/pull/85>
   - Support commands that only require a context #88
   <https://github.com/haskell/haskell-ide-engine/pull/88>
   - Add plugin name to commandDetail response #90
   <https://github.com/haskell/haskell-ide-engine/pull/90>
   - Ghc mod dir #91 <https://github.com/haskell/haskell-ide-engine/pull/91>
   - PluginDescriptor no longer serialisable. #93
   <https://github.com/haskell/haskell-ide-engine/pull/93>
   - Adapt elisp to plugins response changes #94
   <https://github.com/haskell/haskell-ide-engine/pull/94>
   - Json enhancements #96
   <https://github.com/haskell/haskell-ide-engine/pull/96>
   - Use hierarchical menus instead of a flat one #97
   <https://github.com/haskell/haskell-ide-engine/pull/97>
   - Create elisp functions for all commands #99
   <https://github.com/haskell/haskell-ide-engine/pull/99>
   - Rename haskell-ide-engine to hie #100
   <https://github.com/haskell/haskell-ide-engine/pull/100>
   - Update irc channel for travis #101
   <https://github.com/haskell/haskell-ide-engine/pull/101>
   - Insert dash between plugin and command name #102
   <https://github.com/haskell/haskell-ide-engine/pull/102>
   - Use dash.el #103
   <https://github.com/haskell/haskell-ide-engine/pull/103>
   - nicer parameters and command return type #105
   <https://github.com/haskell/haskell-ide-engine/pull/105>
   - Install dash.el for tests and require it #106
   <https://github.com/haskell/haskell-ide-engine/pull/106>
   - docs: mention apply-refact, hsimport, haskdogs #110
   <https://github.com/haskell/haskell-ide-engine/pull/110>
   - add ShortName and Overview to PluginDescriptor #111
   <https://github.com/haskell/haskell-ide-engine/pull/111>
   - Extract the first type of a type info response #113
   <https://github.com/haskell/haskell-ide-engine/pull/113>

Contributors active in November

Aaron Wolf, Alan Zimmerman, Daniel Bergey, Daniel Gröber, Gracjan Polak, JP
Moresmau, Jochen Görtler, Joe Hillenbrand, Justin Wood, Michael Sloan,
Moritz Kiefer, Rory O’Kane, Rémi Vion, jpmoresmau
Thanks

A special thanks to Gracjan Polak for running his report scripts on this
repo.
Contributing

Haskell IDE Engine needs volunteers like any other open source project. For
more information see:

https://github.com/haskell/haskell-ide-engine

Also drop by our IRC channel: #haskell-ide-engine at irc.freenode.net.

Thanks!

  Alan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20151202/bdac651d/attachment-0001.html>


More information about the Haskell-Cafe mailing list