<div dir="ltr"><div class="gmail_extra">The discussion originated in an earlier thread from a question about the possibility of using the same format across different tools, cabal and stack which currently use different file formats. If they have to use the same format what that format should be.</div><div class="gmail_extra"><br></div><div class="gmail_extra"><div class="gmail_quote">On 16 September 2016 at 13:54, Chris Smith <span dir="ltr"><<a href="mailto:cdsmith@gmail.com" target="_blank">cdsmith@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">I guess the overriding question I have here is: what is the PROBLEM being solved?  I know of basically no beginners who were confused or intimidated by the syntax of Cabal's file format.  It's fairly commonplace for beginners to be confused by the *semantics*: which fields are needed and what they mean, how package version bounds work, what flags are and how they interact with dependencies, the relationship between libraries and executables defined in the same file, etc.  But the syntax?  It's just not an issue.  I'm not sure what it means to say that people have to "learn" it, because in introducing dozens of people to building things in Haskell, I've never seen that learning process even be noticeable, much less an impediment.<div><br></div><div>With this in mind, a lot of the statements about these various languages are not entirely convincing.  That it's a superset of JSON?  It's not clear why this matters.  A psychological impression of complexity?  Just not anything I've seen evidence of.  Indeed, aside from the rather painful many-years-long migration, the *cost* (though certainly not a prohibitive one) of moving to something like YAML or TOML is that they have a bit louder syntax, that demands more attention and feels more complex.</div><div><br></div><div>There is one substantial disadvantage I'd point out to the Cabal file format as it stands, and that's that it's pretty non-obvious how to parse it, so we will always struggle to interact with it from automated tools, unless those tools are also written in Haskell and can use the Cabal library.  That's a real concern; pragmatic large-scale build environments are not tied to specific languages, and include a variety of ad-hoc third-party tooling that needs to be integrated, and Cabal remains opaque to them.  But that doesn't seem to be what's motivating this conversation.</div><div class="gmail_extra"><br><div class="gmail_quote"><div><div class="h5">On Thu, Sep 15, 2016 at 11:20 PM, Harendra Kumar <span dir="ltr"><<a href="mailto:harendra.kumar@gmail.com" target="_blank">harendra.kumar@gmail.com</a>></span> wrote:<br></div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5"><div dir="ltr"><div>I am starting a new thread for the package file format related discussion.</div><div><br></div><div>From a developer's perspective, the major benefit of a standard and widely adopted format and is that people can utilize their knowledge acquired from elsewhere, they do not have to go through and learn differently looking and incomplete documentation of different tools. The benefit of a common config specification is that developers can choose tools freely without worrying about learning the same concepts presented in different ways.</div><div><br></div><div>Multiple formats flying around also create a psychological impression of complexity in the ecosystem for newcomers. If we have consistency there are better chances of attracting more people to the language ecosystem.</div><div><br></div><div>I gather the following from the discussion till now:<br></div><div><br></div><div>* We have cabal, YAML and TOML as potential candidates for a common package format which can additionally incorporate the concept of snapshots/package collections and potentially more extensions useful across build tools.</div><div><br></div><div>* cabal has the benefit of incumbency and backward compatibility, it has shortcomings which are being addressed but it is still a format which is very specific to Haskell ecosystem. It is not a standard and not going to become one. We have to always deal with it ourselves and everyone coming to Haskell will have to learn it.</div><div><br></div><div>* YAML (<a href="http://yaml.org/spec/1.2/spec.html" target="_blank">http://yaml.org/spec/1.2/spec<wbr>.html</a>) is standard and popular. A significant chunk of developer community is already familiar with it. It is being used by stack and by hpack as an alternative to cabal format. The complaint against it is that the specification/implementation is overly complex.</div><div><br></div><div>* TOML (<a href="https://github.com/toml-lang/toml" target="_blank">https://github.com/toml-lang/<wbr>toml</a>) is promising, simpler than YAML and is being used by a few important projects but is still evolving and is not completely stable. On a first glance it looks pretty simple and a lot of other tools use a similar config format. It is aiming to become a standard and aiming for a wider adoption.</div><div><br></div><div>As a next step we can perhaps do an hpack like experiment using the TOML format. That way we will have some experience with that as well and get to know if there are any potential problems expressing the existing cabal files. </div><div><br></div><div><div>More thoughts, opinions on the topic will help create a better understanding about it.</div></div><span><font color="#888888"><div><br></div><div>-harendra</div></font></span></div>
<br></div></div><span class="">______________________________<wbr>_________________<br>
Haskell-Cafe mailing list<br>
To (un)subscribe, modify options or view archives go to:<br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bi<wbr>n/mailman/listinfo/haskell-caf<wbr>e</a><br>
Only members subscribed via the mailman list are allowed to post.<br></span></blockquote></div><br></div></div>
<br>______________________________<wbr>_________________<br>
Haskell-community mailing list<br>
<a href="mailto:Haskell-community@haskell.org">Haskell-community@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-community" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-<wbr>bin/mailman/listinfo/haskell-<wbr>community</a><br>
<br></blockquote></div><br></div></div>