I’m really excited to take part in this year’s . Thank you, , for all of the work you do with this and . FsAdvent Sergey F# Weekly Three disclaimers: I’m not a creative person, especially when it comes to naming things, so I’m stealing for this post. Stephen Diehl’s title Although I work for , I’m not writing this post on Microsoft’s behalf. All views things expressed here are my own views. Microsoft This is a long post split into three sections. I don’t have a TL;DR. 2017 has been a very exciting year for F#. To begin, F# has grown to be bigger than ever, at least as far as we can measure, through product telemetry, activity, GitHub activity, and F# Software Foundation activity. twitter Active unique users of F# we can measure are in the tens of thousands. Measured unique users of Visual Studio Code with this year, to become far larger than ever. Ionide increased by over 50% Measured unique users of who use F# i since last year to be larger than ever, despite quality issues earlier in the year that we believe have inhibited growth. Visual Studio ncreased by over 20% Much of the measured growth coincides with the release of , which has shown significant interest in the F# community. .NET Core 2.0 Telemetry is a complicated topic, and we do not try to account for existing users who are using F# in environments without telemetry, so it’s never perfect. usage of F# in the world is strictly higher than what we can measure. Actual But numbers and metrics are limited, because they tell only a small part of the story. I’ll attempt to summarize some of the major things that happened for F# this year. , most notably as the first version of the language with .NET Core support, and has had multiple updates since its initial release. F# 4.1 was released shipped , including support for . Visual Studio 2017 and its F# tooling five major updates .NET Core and .NET Standard projects Incredible members of the F# community, such as , , , , and others made significant improvements to our Visual Studio 2017 F# tooling including adding a dizzying array of features. Vasily Kirichenko Saul Rennison Anh-Dung Phan Steffen Forkmann F# is now installed into Visual Studio 2017 if you are installing .NET Core. by default F# tooling in Visual Studio 2017 now has a . nightly release channel launched, , and it has continually improved throughout the year. Visual Studio for Mac with F# support in-box now supports F#, with even better things coming soon. Azure Functions now supports F#. Azure Notebooks is now the official package for the F# core library. FSharp.Core is now the official place where the F# Compiler SDK is deployed, and is the recommended way to attain the SDK FSharp.Compiler.Tools . F# is now in-band with the .NET Core SDK We expanded our team and hired at the end of the year! Will The and repositories are now the official place for F# language and tooling evolution. F# language suggestions F# RFC , a plugin suite that turns Visual Studio Code into a fully-featured F# IDE, shipped at least 100 releases (or 200; jeez, it’s so many). Ionide , the awesome NuGet client used in many F# projects, seemingly shipped billions of releases this year. Paket shipped with excellent and ever-improving . JetBrains Rider F# support Much of the F# OSS ecosystem has migrated to and (which represents an incredible amount of work on the part of the maintainers). .NET Standard .NET Core and emerged as two dominant libraries to use when writing web services on .NET Core, with as a brilliant alternative that everyone should try out as well. Suave Giraffe Freya rapidly evolved from an interesting project with potential into an impressive and fully-fledged alternative for JavaScript in the browser, allowing you to write . Fable Full-Stack F# applications The (FSSF) has and become one of the best organizations to be a part of if you’re just beginning with F#. F# Software Foundation continued its steady growth The FSSF launched its and had another strong round of its free . diversity program mentorship program was created and sold out (quickly and despite low-key advertisement), which gets me all kinds of excited about F# in the U.S. OpenFSharp F# had a notable presence at , , . , and other Functional Programming conferences. //Build 2017 NDC conferences NET Conf Wew, that’s a lot. I probably missed some things that matter to people, so please let me know if you feel I should list something. If there’s a single thing I feel most when looking at the above list, it’s pride. Not just in myself or my immediate colleagues, but in the members of the F# community who have done so many incredible things across such a wide spectrum of the entire F# ecosystem. I’m American, and thus prone to superlatives, but you are all rock stars and I’m humbled to work with you all. Every single person involved in the above items should feel proud of themselves and their accomplishments. I’d also like to mention a few of the things that matter to me on a more personal level: I was one honored to be one of the announced at OpenFSharp: Community Heros I got to stay up until 3:30 a.m. after OpenFSharp talking all kinds of craziness over beers with , , , , , , , and . Mathias was kind enough to provide his apartment as the venue for these shenanigans. Rich Minerich Dmitry Morozov Gien Verschatse Mathias Brandewinder Chet Husk Cezary Wojcik Marnee Dearman Marcus Griep I got to hang out with , , , , , , , , , , , and others in Cambridge and London. Beer, food, taking over a bar, cavorting around each city, enjoying the sunshine, , and just about everything else happened. So much fun. Krzysztof Cieślak Tomas Petricek Evelina Gabasova Marcus Griep Riccardo Terrell Gien Verschatse Mark Gray Paulmichael Blasucci Enrico Sada Alfonso Garcia-Caro Jérémie Chassaing talking smack about Golang I got to witness the Pink Pezi himself, , steal ’ badge at F# eXchange, and then walk around calling himself a Greek programmer named Eirik. Ross, will there be an EirikTsarpalisProvider Type Provider library I can use some day? Will it only provide types named “Ross”, or will it also provide types named “Eirik”? Ross McKinlay Eirik Tsarpalis I was one of the honored few to be cow-herded, Don Syme style, by to leave the F# eXchange venue. Andrea Magnorsky Hup hup! I got to have pull me aside at F# eXchange for a wonderful and serious conversation about the sorts of things the community needed to hear from me at the conference and beyond. Oh, and she gave me a FunctionalCat sticker for my laptop, which I proudly display to this day! Andrea Magnorsky I got to meet , whose prolific blogging taught me why F# is so great when I was still a college student in 2014. Scott Wlaschin I got to watch launch Fable 1.0, code-named Narumi, and be honored to have him present not , but on Channel9 about Fable. Alfonso Garcia Caro once twice I got to hang out, multiple times, with some of the wonderful folks form while in London. G-Research I got to engage, daily, with to F# and its ecosystem. some of the amazing OSS contributors I got to have think numerous suggestions of mine were good ideas. For someone who only got a college degree in June 2015, that’s a pretty big deal me! Don Syme I think it’s rare to find a job in my field that is this rewarding. There is a lot of stress involved, and the problems that need solving and issues that need addressing are never simple. But it’s worth it every time. And now, for something entirely different. I don’t think I’ve ever clarified, for anyone in the F# community, what my precise role is at Microsoft. My title is currently “Program Manager II”, but that doesn’t really mean much. I’ll start with a list of things I’m : not Software Engineer. I’m a Program Manager! But I do sometimes write code for the product. Project manager. Nope nope nope nope nope. I’m terrible at process. Manager. Nobody works for me. Program. I’m a human, not a program. Evangelist. Nope. Although I sometimes do things that count as evangelism. Salesperson. You really don’t want me selling things to anyone. Data scientist. Not even close. But I sometimes use querying languages to muck about in the mud of telemetry systems. Product Manager. This is the closest, but it’s not the same as what other product managers do at other tech companies. I have some KPIs that I track, but I keep them low in number and tend not to focus too much on them. I’m actually quite fed up with the silly focus on marginally useful KPIs our industry has adopted, let alone the incorrect means that so many of them are derived and measured. Every action I take is to make sure that F# is a pleasure to work with and moving in the correct strategic direction so it will grow and flourish for years to come. That means a few things: There’s a good chance that for any given product or topic that is related to F# in some way, I have some context. The depth of that context may vary wildly. I help make a lot strategic and tactical decisions about what Microsoft does for F# with the resources it has. I spend a significant amount of time interacting with other teams at Microsoft. Sometimes, these interactions are merely giving someone context that they asked for. Other times, it’s a fully-fledged negotiation process, where we come to an understanding about who is responsible for the delivery and maintenance of assets under certain circumstances. I am responsible for some things that are not directly related to F#. Right now, this includes certain parts of Visual Studio 2017 setup and our organization’s efforts around Azure growth. The most recent, tangible result of this work has been to have F# be installed by default with Visual Studio whenever you install .NET Core. I am always advocating on behalf of F# developers when I am involved in discussions and decisions regarding .NET, Visual Studio, and Azure. My default position on things is if they would make sense to F# users. I am always learning more about our codebase, and I always strive to understand the moving parts at a high level so that I can describe them to anyone. The codebase is vast and dense, so there are things I am utterly clueless about. My hope is that by the end of 2018, I can contribute reliably to some of the “deeper” areas there. When I have the time, I evangelize F#, the tooling that Microsoft delivers for F#, and various F# open source projects. I hope to expand this effort moving forward. Finally, I am ultimately on the hook for the success of F#, Visual Studio users who use F#, Visual Studio for Mac users who use F#, Visual Studio Code and Ionide users who use F#, and Azure users who use F#. Although much of what I just listed are not my direct responsibility, my review at the end of the year depends on my involvement beyond the Visual F# tools which ship as a part of Visual Studio. This point is key: my role eclipses just the Visual F# tools which ship in Visual Studio. F# is so much more than just the assets Microsoft delivers in Visual Studio, and limiting my actions to just those would do a disservice to F# users. The holistic picture of the entire “F# experience” is what I care about and try to improve. And now, for something entirely different. I’m very excited about what 2018 will bring for F#. So many things in the F# ecosystem that were in flux in 2017 have calmed down and have been set up for success. These are some of my assorted thoughts on the coming year: I believe that F# will achieve the vision of being the best-tooled functional programming language on the planet, with excellent support in any IDE you like, excellent support in Azure, and the ability to use the tooling you want in the entire ALM experience. I believe that the F# community, especially through the F# Software Foundation, will continue to grow and become an active home for newcomers to the language. I believe that Fable will garner even larger interest in the JavaScript community than it has this year. I believe that F# on the server via .NET Core will be a compelling option for many people and organizations. I believe that F# will have an even stronger conference presence than 2017. I believe that the increase in F# OSS activity, .NET Core, and Fable will drive F# to new heights in terms of usage and activity. I’ll also share some of the things that I personally want to focus on in terms of what my team delivers: Finalizing Type Providers as .NET Standard 2.0 components. Delivering F# Interactive support for .NET Core, as a .NET Core application, accessible via on the command line, installed via a .NET CLI global tool. fsi Package management via in F# Interactive, running on .NET Core. #r “packagename" Completing the .NET Core SDK-based project support in Visual Studio 2017, including multi-targeting and file ordering, templates for Azure Functions and ASP.NET Core, and incorporating relevant templates from the community. Completing detailed performance analysis of the F# Compiler Service, with engineering work to address the findings. Continuing the F# 4.1 work towards better error messages. Working towards shipping a new language version. New and improved features, such as the ability to Go to Definition on types defined in metadata, or revamped autocompletion. I view the above as a fairly realistic set of things that you’ll all enjoy over the coming year. I’m quite hopeful that every one of these things will be something to brag about by next Christmas. 2018 is going to be an incredible year for F#. Until then!