is. Everyone has their pet peeves about tools but can we nevertheless find root causes for the general fact that tools make developers often unhappy? In the end it is probably just a talk about me being unhappy.
a compiler is written An integration in editors follows If enough resources and interest exist more powerful tools like IDEs and build tools arise At this point someone finds out that we are doing it all wrong and that a new programming language shall emerge
repeats itself Driven by enthusiasm about potential improvements we follow the path But what if this is all wrong? No one questions the cycle, we continue it without knowing if it is the right thing to do. We don't know what would happen if we would break out. Could we arrive at something better or would we fall into chaos?
about tools today. There is this fight about editors vs. IDEs General belief: IDEs are slow and heavy but powerful, editors are fast and lightweight but useless for big projects.
problems in our tooling landscape and the source for most poisonous assumptions. In the following I want to question the necessity of the cycle and explore where we could end if we break out of it. I would like to come up with a new model for a tool.
There shouldn't be a distinction between IDEs, documentation tools, build tools, the command line compiler, the formatting tool, linting tools etc. Dev area: Tools should still be different.
scalac -Xlint, Scalastyle, wartremover, Abide, Scapegoat, Linter and probably even more. There is a comparison article needed to describe their strengths and weaknesses: "Review of Scala Static Analysis Tools" by Paul Bleicher
are Q&A sites, code hosting sites, library hosting sites, project specific documentation, mailing lists, forums, social netorks, search engines and and and... We need a single interface not just for programs but also for information.
among components. Example: Cloud IDEs. Except they are done wrong. What we really need is a protocol that allows our tools to share semantic information.
a real graph (and not just as ASCII) - and edit it. Render dependency relationships of classes as a 3D star universe. Edit rendered HTML output of Markdown/Scaladoc/whatever documents.
have a single unique data structure that covers all sort of UI representations. A mapping from UI operations onto the internal data structure is needed.
Modal editing: Different modes are available where every mode applies operations differently. Vim has editing operations that can be composed to more complex ones.
operations nor to add new modes. Modal navigation combines modal editing with composable operations, in fact it describes modes as operations. Example: In Vim the deletion of a git commit is not a built-in feature.
among build tools. A build can't be mapped from one build tool to another. Metafiles often need to be created or tweaked manually. Some people ignore IDEs completely because they don't want to "fix the IDE".
for Semantic Information Further Goals Unite Editor with Browser Fuse Documentation Tools with IDE Functionality Modal Navigation First Class Build Tool Integration ...
Source land, therefore: sschaef/tooling-research The goals of the platform available as a draft document For anyone who is interested if I ever come up with something useful: I'm on Twitter @sschaef_