jakie będzie IDE przyszłości?

Modularne. Oparte na wymienialnych komponentach. Dlaczego tak?

Obecne IDE/edytory są zbyt monolityczne.

Niby można konfigurować edytory czy instalować wtyczki (albo pisać własne), jednak i tak w dużym stopniu ogranicza cię API danego edytora i sam edytor jako taki, jego możliwości. Tego, czego twórcy nie przewidzieli albo nie zrobisz, albo zrobisz, ale w dość partyzancki sposób.

Chociaż w Atomie przynajmniej da się robić hakerkę, w VSCode API do rozszerzeń jest bardziej ograniczone i nawet hakerki specjalnie się nie da zrobić.

Co za tym idzie jak coś jest źle zrobione, to możesz czasami tylko czekać aż to naprawią (a to może potrwać - np. VSCode stał się ofiarą własnej popularności i ludzie ich zasypują tak wielką liczbą issues na Githubie, że cała developerka się dość wolno posuwa, a feature requests stoją miesiącami. Spójrzcie, co godzinę ktoś otwiera nowy issue: https://github.com/Microsoft/vscode/issues ).

A to wszystko przez monolityczną budowę edytorów. Gdyby edytory były stworzone z wymienialnych modułów, to po prostu zamieniałbyś odpowiedni moduł na inny stworzony przez siebie i miałbyś te funkcjonalności, które chcesz.

Czyli w zasadzie coś jak wtyczki, ale do większego stopnia, może wyjaśnię to za pomocą obrazka:


Tak więc widzicie, że ewentualne rozszerzenia byłby po prostu kolejnymi modułami. Mogłyby więc istnieć wtyczki, które zmieniałyby core'ową funkcjonalność edytora na coś innego.

Albo ktoś mógłby też zrobić po prostu "remix" IDE - wziąć takie moduły jakie by chciał i zrobić całkiem nowy edytor. Edytory mogłyby powstawać jak grzyby po deszczu (trochę jak dystrybucje linuxa). Ludzie by eksperymentowali i coś nowego mógłby się wykluć.

No i sama komunikacja między modułami czy sposób ich osadzania powinny być jakoś zestandaryzowane, tak, żeby moduły stworzone przez różnych ludzi mogły ze sobą współpracować. Oraz, co równie ważne - wtyczki stworzone do edytora X, działałyby w edytorze Y (a dzisiaj tak nie ma i np. zrobisz wtyczkę do Atoma, to w VSCode już nie pójdzie).

No i samych modułów do IDE można by wtedy używać w ogóle poza IDE. Osadzić część IDE w jakiejś kompletnie innej aplikacji (np. do celów debugowania mojej aplikacji w React, mógłbym powiedzmy osadzić w niej moduły do edytowania plików po to, żeby edytować swoje komponenty w React na żywo, w przeglądarce).

No to tyle, myślę, że podziałam trochę w tym temacie i zobaczę co się da zrobić.

Komentarze

  1. Myślę, że światu nigdy nie zależało na tym, by specjalnie odchudzać oprogramowanie, a szczególnie, by mieć standard do takich rzeczy :-) To jest strata czasu i pieniędzy i dlatego, tym własnie się zajmują raczej pasjonaci, bo widzą w tym pole do popisu.

    Natomiast prywatnie dla mnie to jest sztuka dla sztuki. Myślę, że Twój projekt pomoże Ci zdobyć fajniejszą pracę i podniesie Twoją wrażliwość na punkcie modularnego/rozszerzalnego kodu , ale w perspektywie najbliższych lat idę o zakład, że i tak to co zrobisz będzie gniotem pod względem funkcjonalności współczesnych IDE.

    Zobacz, z roku na rok przybywa narzędzi, coraz bardziej widać, że dążymy do tego by mieć więcej, bo właśnie za przewagę płacą klienci. Natomiast z drugiej strony chcemy by łatwiej dało się w to wszystko wdrożyć.

    Rozwiązanie?

    Myślę, że współczesnym wyzwaniem dla IDE będzie zbudowanie systemu operacyjnego online z dzisiątkami rozszerzeń / kreatorów, które pozwolą nowicjuszom w minutę wyklikać bardzo złożone środowisko.

    Poligloci będą mogli szybko zmieniać języki / frameworki itp

    Natomiast główną siłą napędową będą akcje IDE, które będą korzystać w tle z mocy obliczeniowych serwerów w chmurze. Dzięki temu otworzy się furtka do złożonych operacji (sztuczna inteligencja?), które jeszcze bardziej przyspieszą i uskutecznią tworzenie oprogramowania.

    OdpowiedzUsuń
    Odpowiedzi
    1. Ważne, żebym zrobił coś, co mnie samemu się przyda. Nawet jeśli będzie miało mniej opcji niż WebStorm czy VSCode, to jeśli uda mi się zrobić coś, dzięki czemu sam skorzystam i coś, co pozwoli mi na szybszą developerkę - to już będzie sukces.

      Zresztą myślę, że skupiając się na przysłowiowych 20% najważniejszych rzeczach jestem w stanie zrobić coś, co byłoby w stanie konkurować z innymi edytorami, a nawet przerastało je pod wieloma kątami. Tzn. mam na myśli developer experience. Zobacz, że większość edytorów idzie w jak największą ilość opcji, zamiast poprawiać UX.

      Nawet jeśli z jakichś powodów zrobienie edytora z dobrym UX jest nieopłacalne i ludzie wcale tego nie chcą - to może przynajmniej zrobię niszowy produkt ;)

      > Myślę, że współczesnym wyzwaniem dla IDE będzie zbudowanie systemu operacyjnego online

      Taki mam plan. Tzn. nie prawdziwy system operacyjny, tylko coś co taki ma feeling, co ma własny system okienek, z możliwością odpalenia “aplikacji”(w zasadzie widżetów) i serwisów, które będą się jakoś się ze sobą komunikować, coś co ma własny wirtualny system plików itp.

      IDE do Smalltalka w sumie mają takiego rodzaju IDE/środowisko uruchomieniowe. Właczyłem sobie niedawno Squeak, w sumie uczucie było jakby to był cały system operacyjny.

      Usuń
    2. > Nawet jeśli z jakichś powodów zrobienie edytora z dobrym UX jest nieopłacalne i ludzie wcale tego nie chcą - to może przynajmniej zrobię niszowy produkt ;)

      Ja po swoich aplikacjach widzę, że one z czasem są czymś innym niż na początku planowałem więc nie zdziwię jeśli Twój edytor/IDE z czasem stanie się np. częścią środowiska do tworzenia gier albo środowiskiem do nauki, badań itp :-)

      Usuń

Prześlij komentarz

Popularne posty z tego bloga

Ściemy z ogłoszeń o pracę

Zostać programistą (2) - czy się nadajesz?

Czego się nauczyłem w 2021?