Atom: новый редактор кода от Гитхаба

Original author: GitHub Atom team
  • Translation
imageОт переводчика: вчера без официального объявления на Гитхабе были опубликованы несколько десятков репозиториев, содержимое которых свидетельствовало о том, что команда Гитхаба уже давно ведёт разработку нового текстового редактора для программистов и готова представить его публике. Несколькими часами позже заработал и официальный сайт редактора atom.io, на котором сейчас можно запросить инвайт на бета-тестирование, ознакомиться с документацией и плагинами к редактору. Эта статья — перевод двух первых постов из блога проекта Atom, посвящённых концепции и архитектуре редактора.

Представляем Atom


Сегодня мы с радостью готовы запустить публичную бета-версию Atom, нового текстового редактора, который не только лёгок в использовании, но и предоставляет огромную свободу модификаций.

Sublime и TextMate предлагают удобство, но лишь ограниченную расширяемость. С другой стороны, Vim и Emacs обладают огромной гибкостью, но сложны в освоении и требуют изучения специфических скриптовых языков для модификаций.

Мы считаем, что можем сделать лучше. Наша цель — бескомпромиссное сочетание удобства и настраиваемости: редактор, с которым может разобраться и школьник, только начавший изучать программирование, но в то же время и инструмент, который не будет ограничивать опытного хакера.

Так как мы стали использовать Atom уже в процессе работы над ним, то, что сперва было лишь экспериментом, превратилось для нас в предмет первой необходимости. Это только начало, и ещё много чего нужно сделать, чтобы полностью воплотить наше видение редактора. Но основная цель достигнута. Снаружи Atom — современный текстовый редактор, который соответствует ожиданиям пользователей. А под капотом — это система, которая так и просит о модификациях и расширении.

В ближайшие недели мы будем рассылать приглашения бета-тестерам, а уже сейчас мы опубликовали больше 80 библиотек и пакетов, которые используются в редакторе. Мы открыли многие API, которые нужны, чтобы писать мощные расширения, но, так как это бета-версия, в них ещё могут произойти изменения на основе обратной связи от вас. Мы будем стараться делать их как можно осторожнее, в то же время активно дорабатывая редактор.

Ждём от вас обратной связи, пакетов и патчей. Сделаем это вместе!

Ядро атома


У веба есть свои недостатки, но два десятилетия развития превратили его невероятно гибкую и мощную платформу. Поэтому, когда мы решили написать текстовый редактор, который мы сами с удовольствием бы расширяли и модифицировали, выбор технологии был очевиден. Но сначала нам пришлось избавиться от нескольких сковывающих нас ограничений.

Нативный веб

Браузеры хорошо приспособлены для просмотра веб-страниц, но написание кода — это специфическая деятельность для которой нужны особые инструменты. Что ещё важнее, браузер сильно ограничивает доступ к локальным ресурсам компьютера из соображений безопасности, а для нас текстовый редактор, который не сможет нормально записать файл или запустить локальный подпроцесс, был совершенно неприемлем.

Поэтому Atom не является обычным веб-приложением. Это специализированный вариант браузера Chromium, переделанный так, чтобы быть в первую очередь текстовым редактором, а не веб-браузером. Каждое окно Atom — это отдельная локальная веб-страница.

Коду JavaScript, работающему в каждом окне, доступны все API, которые доступны любому приложению Node.js. Такое гибридное решение создаёт уникальные возможности для разработки.

Так как вся работа происходит локально, нет никакой нужды заботиться о загрузке ресурсов, конкатенации скриптов и асинхронной подгрузке модулей. Если нужен какой-то код, достаточно лишь require в начале файла. Система модулей Node.js без проблем позволяет разбить систему на маленькие хорошо сфокусированные пакеты.

JavaScript вместе с C++

Взаимодействие с нативным кодом тоже очень просто. К примеру, мы написали обёртку вокруг движка регулярных выражений Oniguruma для поддержки совместимости с TextMate. В браузере нам пришлось бы разбираться с NaCl или Esprima. Интеграция с Node сильно упростила задачу.

Кроме API Node.js мы так же используем нативные API диалоговых окон браузера, главного и контекстных меню, управления размерами окна и так далее.

Веб-технологии: всё самое лучшее

Ещё один большой плюс работы над Atom состоял в том, что мы всегда гарантированно работали с последней версией Chromium. Это значит, что нас не беспокоили вопросы кросс-браузерной совместимости. Мы могли использовать все новшества веб-технологий уже сегодня.

Например, вёрстка рабочего пространства и панелей редактора использует flexbox. Это ещё не устоявшийся стандарт, но несмотря на то, что он менялся во время работы, мы были счастливы, что уже можем с ним работать.

Мы уверены в будущем платформы, на которой построен Atom, ведь веб-технологии развиваются совместными усилиями целой отрасли. Нативные технологии приходят и уходят, а веб становится всё лучше и распространеннее с каждым годом. Мы с удовольствием будем использовать все его возможности.

Share post

Similar posts

AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 55

    +7
    Это специализированный вариант браузера Chromium, переделанный так, чтобы быть в первую очередь текстовым редактором, а не веб-браузером. Каждое окно Atom — это отдельная локальная веб-страница.
    То есть это node-webkit (или это самописный аналог)?
    Кто-нибудь уже получил инвайт?
      +6
      Инвайты приходят как-то странно. Одним моментально, другим еще не пришли. Могу поделиться скачанным архивом.
        0
        <удалено>
      +1
      вот интересно, а в инет он вылазить сможет? Я имею ввиду, можно ли его будет использовать непосредственно как браузер? Было бы удобно, только с безопасностью наверное этот вариант не очень сочетается
        0
        Думаю для сайтов на локалхосте было бы очень даже хорошо.
          0
          Нет, там хром взят как GUI платформа.
          +9
          Не совсем ясно, будет ли это просто локальный редактор? Если локальный, то не особо понятно, зачем пилить браузер и писать код на javascript. Теряется суть web'а — независимость от платформы и удаленность данных. Если так, то смахивает на особую форму извращенности разработчиков.
            –18
            я как то пытался пересесть на emaks, так вот я потратил довольно много времени, немного разобрался в Lisp, зарылся в его настройки, но так и не смог заставить его работать так как я хочу, потом мне просто стало жалко времени, ибо порог вхождения в него довольно высок. Здесь же с java scripts, все что мне нужно я смогу запилить гораздо быстрее и где-то даже проще
              +21
              emaks

              java scripts

              Серьёзно?
                +2
                Наверное, это просто автоисправление где-нибудь на iOS или Android
                  0
                  Да простят меня гуру Emacs и JavaScript за эти досадные опечатки. Но я так и не понял, мне карму за них слили или все-таки у кого-то есть более конструктивные возражения по сути моего комментария?
                    0
                    Не очень понимаю где там можно потратить «довольно много времени» чтобы разобраться как настроить Emacs. У меня все получилось за 5-10 минут и с тех пор конфиг существенно не менялся. «Порог вхождения довольно высок» — ой, да не смешите
                      –1
                      Возможно вы очень сообразительный, возможно я слишком тупой, а возможно у нас были разные задачи. Например мне так и не удалось сделать так, чтобы Emacs воспринимал мышиные клики в тексте, так как это делают все остальные текстовые редакторы. Не знаю задумывались ли вы над таким вопросом или нет, но когда вы мышкой выделяете текст, то вы например делаете это начиная с края первого символа и заканчивая противоположным краем последнего. В любом текстовом редакторе (да и в любом браузере), каким я пользовался до Emacs это именно так и реализовано, т.е. точку ввода всегда можно поместить между символами. В Emacse эта точка ввода находится под символом. Т.е. для выделения (если я пользуюсь мышью) приходится тыкать не между символами а на них и в конце выделения заводить указатель дальше за нужный мне символ. Привыкание к этому у меня потребовало довольно много времени. Настроить этот момент я не смог вообще, тк это особенность ядра Emacs. Я понимаю, что этот редактор не предназначен для работы с мышью. «Только клавиатура, только хардкор», скажите вы и будете абсолютно правы. Ну и таких мелочей мне попалось довольно много. Именно поэтому я говорю о высоком пороге вхождения или крутой кривой обучаемости если хотите, потому как сильно приходится менять свои привычки. Хотя может быть это я слишком требователен, не буду спорить. Ну и не могу не запостить баян на эту тему.
                        +2
                        Я наверно монах дзен не похож на остальных пользователей редакторов, но у меня сложилась практика не подстраивать новые инструменты под предыдущий юзер-экспириенс, а использовать их сильные стороны, при необходимости подстраивая юзер-экспириенс под инструмент.

                        Так, например, я использую Emacs исключительно в консольном режиме (emacs-nox) и вообще мышка у меня лежит на системном блоке и покрыта толстым слоем пыли

                        Неужели вы думаете, что за все то время, пока существует Emacs, его бы не допилили для мышки если бы это действительно было нужно? Все новые пользователи приходят, пробуют применить свой старый пользовательский опыт, и либо уходят неосилив, либо проникаются пониманием, что новый пользовательский опыт интереснее и эффективнее, чем старый. И после уже не отказываются от Emacs-а никогда.
                          0
                          Весьма похвально. Я конечно не спорю об эффективности Emacs. Я сам его часто использую для определенных задач. Пишу на veriloge и emacs-овый verilog-mode — это просто монстр. Ускоряет разработку на порядок. Но полностью, перебороть свой «юзер-экспириенс» у меня, в отличии от вас, к сожалению не вышло. Да и не сильно хотелось, если честно. Поэтому я и хочу попробовать поюзать этот Atom, посмотреть что за зверь, может быть попробывать реализовать часть функционала verilog-mode, и тех мелочей, которые меня выбешивают в emacs-e, там может и не быть…
                            0
                            Ну а мне неохота раз за разом быть бетатестером решений в стиле «давайте из броузера сделаем редактор кода и попробуем с этим взлететь. Я лучше возьму решение, которое допиливалось десятки лет умными разработчиками. Потому что у нас разные приложения принципа „не очень то и хотелось“ :)
                              0
                              У этих ребят другой взгляд на жизнь наверное. Боюсь, что если бы никто не делал ничего нового, мы бы все еще в каменном веке сидели, не правда ли. Только на то она и эволюция. Какие-то решения на долго остаются самыми лучшими и непобедимыми, но любой ветеран когда-нибудь бывает побежден молодым выскочкой со свежим взглядом. Кто-то просто не любит топтаться на месте, а кто-то доверяет только проверенным решениям. Кто-то, в отличие от вас, наоборот считает правильнее заставлять инструмент работать так как ему хочется, а не подстраиваться под инструмент, и для него гибкость в настройке очень важна. Все люди разные. Все мы ищем что-то удобное для себя. И находим, останавливаемся. Вы нашли, я — пока нет.
                +1
                Мое мнение — этот редактор создан с прицелом на облачность, он будет частью самого гитхаба. Сделали его временно десктопным всего по 2-ум причинам:
                1. API современных браузеров еще не настолько развито, чтобы позволить написать полноценный редактор кода.
                2. Нельзя по идеологическим причинам выпустить приложение всего под один браузер (Chrome), но реализация кроссбраузерности будет отнимать ощутимое время у разработчиков.
                  +1
                  Что значит «временно десктопным»?

                  API современных браузеров еще не настолько развито, чтобы позволить написать полноценный редактор кода.

                  Единственный недостаток в API, под эту, конкретную задачу, это работа с файловой системой, но я уверен что этого никогда не добавят.

                  Нельзя по идеологическим причинам выпустить приложение всего под один браузер (Chrome), но реализация кроссбраузерности будет отнимать ощутимое время у разработчиков.

                  Приложение не под хром, приложение на основе хрома.
                    0
                    Единственный недостаток в API, под эту, конкретную задачу, это работа с файловой системой, но я уверен что этого никогда не добавят.

                    На самом деле не вижу объективных причин.

                    Сейчас всё равно можно инпутфайлом закачать файл на сервер, а потом передать его обратно клиентскому коду. Так вот, тут надо всего лишь устранить звено «сервер», и дать возможность передавать выбранный файл коду напрямую. И так же с сохранением.

                    Возможно, следует сделать ещё одно небольшое косметическое улучшение исключительно для удобства — реализовать не только диалог загрузки/выгрузки файла, а ещё и просто диалог выдачи прав на файл(ы) клиентскому коду. И будет и безопасно, и удобно.
                      –1
                      dev.w3.org/2009/dap/file-system/pub/FileSystem/

                      В общем то это уже есть, что логично

                      caniuse.com/fileapi даже почти везде реализовано
                        0
                        FileSystem API предоставляет локальное хранилище, и не более.
                  +5
                  Вот сам редактор: скачать для Mac OS. Если архив не уникальный для каждого инвайта то должно работать у всех. Если уникальный — отпишитесь кто-нибудь.
                    0
                    Все работает.
                    Довольно шустро работает, хотя по сравнению с sublime видны задержки. По хорошему все будет понятно после того, как будут написаны основные плагины. Хотя уже сейчас видно, что сделано качественнее Brackets, на мой взгляд.
                      0
                      а для windows не поделитесь архивом или ссылочкой?
                        +2
                        Для Win еще нет версии, только под Mac.
                        0
                        Спасибо!

                        Выглядит очень достойно.
                        0
                        Попробовал под OS X. Что примечательно, памяти жрёт меньше, чем Sublime, однако отзывчивость интерфейса немного ниже. Выделение и редактирование с alt не реализовано, надеюсь, это допилят.

                        Не обнаружил создания проектов — в Sublime это очень удобная фича.

                        В глаза бросается визуальное сходство с Sublime, а так же глюки и лаги UI при ресайзе окна.


                        В целом, достаточно интересная альтернатива Sublime. И, что важно, — opensource.
                          0
                          Выйти из него не так-то просто, Cmd+Q даёт такое окно:
                            0
                            Опенсорс но вроде как они собираются его делать платным. Недаром в тексте Welcome написано об этом github.com/atom/welcome/blob/master/lib/welcome.md пункт 1
                              0
                              И сколько он потребляет памяти?
                              +1
                              Бета версия доступна пока только для OS X. Гораздо интереснее это дело будет на тех же хромбуках как по мне, а не в виде завернутого приложения под chromium. Из письма я так понял что только бета будет бесплатна.

                              Ну и если кому нужно есть 1 инвайт (pm ваш email). Еще раз замечу что приложение доступно только для OS X.
                                –2
                                Судя по тексту, они с самого начала затачивались под node-webkit, что печально. Если делать связку Express+Client (на вебсокетах, например), то ее можно собрать под что угодно: и через сервер+браузер использовать, и в node-webkit завернуть, и как приложение для хромобука, и PhoneGap должен переварить. Но это в теории. Давно хочу попробовать, но все времени нет. Если у кого есть опыт таких экспериментов: поделитесь, пожалуйста. А то странно выходит: на JS уже можно написать под что угодно, но все затачиваются под конкретные вещи.
                                  0
                                  Видите ли, node-webkit идёт из коробки с готовым набором API для GUI (окна, меню основные, меню контекстные, буфер обмена, системный лоток, аргументы командной строки, диалоги открытия и сохранения файлов и каталогов, запуск программ), всё это кросс-платформенно (Linux, Мак, Windows). Так что стремление использовать этот движок вполне понятно. Мне и самому он весьма по нраву.
                                  0
                                  Ну что, кто-нибудь уже успел накидать к нему vim-mode?
                                  –20
                                  Интересно наблюдать логотип проекта… У нас три года назад получилось что-то очень сильно похожее: atomweld.com (я уверен, что они про нас никогда не слышали, не тот масштаб, но логотипы просто удивляют сходством).
                                    +11
                                    Вы серьезно?!

                                      +1
                                      Я говорил просто о названии и графической букве О и всё… Наверное, неправильно свою мысль выразил.
                                    • UFO just landed and posted this here
                                      • UFO just landed and posted this here
                                    • UFO just landed and posted this here
                                        +7
                                        Клон Сублиме

                                        перейду на этот

                                        А на Сублиме точно не перейду, воротит от него, как-то…

                                        Ох уж эта логика ;)
                                        • UFO just landed and posted this here
                                      • UFO just landed and posted this here
                                          0
                                          Пытался зайти на atom.io сегодня — пишут сертификат принадлежит *.infofree.com
                                          Вчера не было.
                                          Только у меня так? (провайдер Вега, Одесса)
                                            0
                                            Вроде нормально все с сертификатом.
                                              0
                                              У вас по дороге где-то происходит подмена сертификата. Может быть у провайдера, на роутере, на локальной машине. Последние два варианта характерны при заражении некоторыми зловредами.
                                                0
                                                Дык и я про то же. Но через полчаса исчезло.
                                              –4
                                              Erlang нету. Haskell нету. Clojure не умеет. Билдить не умеет. Даже ST умеет. А он не умеет.
                                              0
                                              Есть три инвайта, присылайте e-mail в личку.
                                                +1
                                                Uncaught Error: Atom can only handle files < 2MB, for now.
                                                Мдаа, возвращаемся к sublime text.
                                                  0
                                                  Ни рыба, ни мясо: для полноценной IDE мало возможностей, а для быстрого редактора слишком громоздкий.
                                                    0
                                                    Пишу из будущего, Атом завоевал свою часть рынка и он хорош.

                                                    Only users with full accounts can post comments. Log in, please.