Skip to content

Nearest pans (in russian)

Mihail Romanov edited this page Nov 11, 2023 · 1 revision

Мысли и планы

(это не какой-то четкий roadmap - а только очень разрозненный ворох мыслей на тему "чего хочется". По мере углубления в тему, я надеюсь, он примет более структурированный и законченный вид, но пока пусть будет хотя бы так)

Мотивация и позиционирование

Откровенно говоря, я и сам не очень понимаю, зачем мне это :) Ну а если кроме шуток, то, наверное, основное - это интерес к действительно неординарному проекту (для hobby-проекта, развиваемого откровенно небольшой группой людей!) и давнее желание поучаствовать в разработке инструментального продукта (продукта для разработчиков), такого масштаба как полноценная IDE.

Точно так же у меня пока нет полной определенности с позиционированием, могу лишь зафиксировать то, что у меня сложилось на текущий момент:

  • SharpDevelop исходно был средой, ориентированной исключительно на .Net разработку (небольшая поддержка Type Script, это скорее как часть поддержки ASP.Net MVC). И я не вижу смысла распыляться и делать очередной универсальный комбайн (да и не потянуть)
  • при этом, я думаю, что у SD нет никаких шансов на конкуренцию с .Net IDE монстрами уровня Visual Studio (включая VS for Mac), JB Rider, VS Code.
  • определенно, как мне кажется есть (несмотря на наличие VS for Mac, VS Code и Rider) интерес к наличию кроссплатформенной IDE (т.е. работающей не только на Windows, а не просто поддерживающей cross-compilation и remote debugging), но когда я смотрю на объем требуемых доработок (текущий SD даже не весь на WPF - там остались хоть и не большие, но хвосты Windows Forms)... А также на то, что представляют из себя возможные фреймворки-кандидаты, на которые можно мигрировать... мне становится грустно - в одиночку это не потянуть :(

В общем пока ниша SD - "простая, но теплая и ламповая IDE для .Net" :)

Минимально полезный продукт (MVP)

Собственно, я посмотрел на текущий SD и, по моим прикидкам, получается, что для минимальной полезности ему нужна поддержка современных версий языка/проектов. Т.е.:

  • поддержка .Net Core (файлов проектов, языка (хотя бы C#), сборки, отладки, шаблонов, ...)
  • поддержка NuGet 3+ (сейчас там 2.6, который, к моему удивлению, всё еще поддерживается nuget.org-ом !)

Всё остальное - хорошо, но как развитие. А без перечисленного, он никому вообще не нужен

Ближайшие планы

Ну а по ближайшим планам примерно так:

1. Переход на NuGet и обновление используемых библиотек

  • отвязать репозиторий от submodules - там почти все библиотеки представлены как отдельные проекты и живут в NuGet
  • поднять версии используемых библиотек там, где получится (т.е. где не потребуется переписывание)

Сроки: ноябрь-декабрь 2023

2. SDK-based проекты и последние версии C#

  • добавить в систему проектов поддержку SDK-based проектов (скорее всего без всех поддерживаемых фич, но чтобы SD хотябы мог открывать все новые типы проектов) + переехать на последний MSBuild (хотябы для парсинга проектных файлов)
  • обновить NuGet с 2.X на 3+ (пока без серьезных изменений - чисто чтобы мог работать с репозиториями, которые не поддерживают вторую версию)
  • переехать с NRefactory на Roslyn (скорее всего будет самый тяжелый на первом этапе шаг - возможно, пока без поддержки рефакторингов...)

Сроки: февраль-март 2024

3. Поддержка .Net Core.

Навскидку там потребуется:

  • доработка системы проектов (например, отказ от packages.config, поддержка резолвинга зависисмостей в compile time, подержка кодогенерации "на лету" - те же Source Generators)
  • система сборки (пока даже не знаю что там)
  • отладчик
  • шаблоны проектов и items на базе шаблонов Core
  • ... ну и куча всего, что всплывет в процессе

Срок: пока очень условно - к лету 2024

Ну и дальше...

Дальше хочется сделать ряд улучшений, которых уже не хватает просто "как воздух":

  • навигация по коду (точнее поиск) - как в VS и Rider - когда можно искать не чисто по тексту а переходит к конкретным типам, классам, полям
  • минимальная поддержка Git внутри (Diff-ы, список изменений, коммиты, откаты)
  • переделка работы с NuGet (там сейчас всё на уровне первых версий NuGet в студии - через UI можно только ставить и обновлять до последней версии, а всё остальное через PS консоль)
  • шорткаты

Ну... Думаю, что текущими темпами я уже где-то на года два работы набрал :)