If there is a feature, however obscure, in a programming language, it is used, relied on, and absolutely loved by at least one programmer that will rather stop using the language than seeing the feature removed.
There have been attempts to change dynamically typed languages to statically typed ones, even successfull attempts, but typically the new language have little in common with the original one. The problem is that there are fundamental differences between the notion of types in static type systems and dynamically typed languages.
The solution is to not redesign the language around the new type system, but to change the way we are thinking about types. Success Typings share most of the ideas of traditional typings, but capture the way dynamically typed languages behave in a better way. By using Success Typings we can make type-based tools that can operate on the language as is, and by providing benefits to the programmers we can slowly change the way they write code into a more type friendly way, thus enabling the tools to find even better information.
In this presentation I will present the main ideas behind Success Typings, how they differ from traditional typings and why they are better suited to be used in a dynamically typed setting. Also, I will talk about how Success Typings can be used in tools aimed at finding bugs and improving documentation.