Sublime Forum

Open Source Sublime Text

#8

I’ve got an idea, why don’t you send me a couple of hundred thousand dollars (US) and I’ll whip up a ST clone for you lickety split.

I mean, you’re so generous with other people’s money, why not be generous with your own?

4 Likes

#9

To me, open source doesn’t mean projects get lots of love, it may get more love, but a large percent of users don’t want to actually contribute to an open source project except to tell you you to add their beloved feature, or fix this particular issue.

It also depends on what the source of the project is too. As already stated, Atom invests a lot of their employees time in making Atom better, and they have a lot more resources (man hours) to draw on than Sublime. Not only that, there are a lot of web developers in the tech landscape these days, and since Atom is a web browser, I would guess the largest percent of their user base happens to be versed in the editor’s building blocks. So it is easier to find people to contribute.

Sublime, I imagine, is written in C and/or C++. It wouldn’t surprise me at all if Sublime was open sourced and you only had a tiny handful of contributors to the actual editor source. Not saying there aren’t C/C++ coders who use Sublime, I am one, but in today’s landscape, web development is pretty big, and it wouldn’t surprise me if a huge percent of the user base is web developers. Picking up C/C++ isn’t the easiest thing for people to jump into. And finding people with motivation and time to contribute also isn’t easy.

My personal experience with open source is that you have a small percent of contributors, and a much larger user base that wants a piece of your time for their idea or concern.

7 Likes

#10

A way that the ST devs could make life better for themselves and for others is to refactor ST a little and separate it into a text rendering/editing engine and a user interface/plugin system, release the source code for the latter (the former remaining proprietary), with the aim of moving as much of it as possible to Python, depending on the need for native code efficiency. Some people say that it’s already like that but there is still a lot going on in the app that is not strictly related to rendering and not exposed to users.

That way the devs can concentrate on the narrow task of making an optimised text editing engine, what everyone loves about ST, and the community can add whatever features they see fit to the app and fix bugs. Personally I don’t like plugins all that much and I’d probably just want mostly the raw engine with a very thin user interface. Other communities will want something different.

I think this would set ST on a positive long term path with less frustration, better community participation and happy customers.

1 Like

#11

The best thing about Sublime Text is that it empowers you to write your own features. It’s easy to add new functionality, and that functionality can be extremely powerful. Most of the core features on my own personal wish list are API additions, because if a new feature doesn’t require new API then I may as well implement it myself.

But core features are hard. I have a wish list of enhancements to the syntax engine, but even if the whole thing were open sourced I doubt that more than a handful of people would ever become familiar enough with it to make major changes. The same probably applies to other subsystems: the text rendering engine (ligatures, RTL text), the window system (additional gutter columns, HTML panes), and so on.

All of this is ignoring the overriding issue that this is a commercial product written by people who presumably expect to make money for their work. GitHub can pay people to work on a free editor because they are a large company that makes lots of money in other ways.

1 Like

#12

I’ve closely followed and participated in Atom’s development up to a year or two ago, and this is exactly what happens. The community will be able to nip and tuck some or even lots of the small stuff, but not very far beyond what is already happening with the Sublime default packages on GitHub. (They do create a lot of bug reports and “+1” comments…). The stuff you really need, e.g. api additions, need so much knowledge, design and coordination that only the contracted developers can do anything about it. You don’t add ligatures or gutter columns on a rainy Sunday afternoon. Are you going to sit down and refactor some thing for a whole week, plus deal with the “+1” comments and update the blog, on a code base you’re not getting paid to maintain? The big pull requests in a project like Atom represent weeks of research, design, discussion and coding.

Also, just look at how well Textmate is doing as an open source project… there’s at least 3 contributors this year.

3 Likes

#13

Developing your Editor

@nikhil13 Open Source Sublime Text

This was already posted some years ago, you can read it at:

  1. #7424 Sublime’s future and open source

@nikhil13 I have been big fan of sublime text-3 and have been using it for 3-4 years

I just completed a year of Sublime Text. On this time I had been working a package toolset to let me use Sublime Text for everything I ever need. You can find it on: https://github.com/evandrocoan/SublimeTextStudio

My goal is to actively develop my text editor while I am working on it. For that I use git to fork all the packages I am using, and soon as I find I bug I can open the source code of the package see what is wrong and create a commit within a fix for it. Therefore I also started the same project for VSCode with similar naming and inspirations: https://github.com/evandrocoan/CodeTextStudio

@nikhil13 But setting up packages, console, input etc can be very exhausting at times.

For example, yesterday I was working while I found a bug on the SideBarEnhancements package, I opened and source code for it, and fixed the problem and pushed a commit to my fork:

  1. https://github.com/evandrocoan/SideBarEnhancements/commit/15a1a1785956ee636fd7f0ca09995f3b54f1a0af

What happened? The other day I implemented a feature on my SideBarEnhancements fork, but I did not tested it throughly. So I did not catch a behavior on the Sublime Text core. Hence yesterday after struggling some hours I find out it was a going on the Sublime Text core. Then I filled a new issue on it with the steps to reproduce it:

  1. Core$827 When the input panel is closed by enter the hide_panel command is not called

It was labeled as enhancement. When I implemented the feature for the SideBarEnhancements I was expecting the command hide_panel to be called every time some panel is closed, either by the enter key (confirm) or by the escape key (cancelled), because the panel is being closed, how else should be panel goes out of screen? But for my surprise the hide_panel is currently only called when the panel is closed by the escape key, i.e., explicitly called.

Now looking into it, I am not sure it can ever be implemented without breaking backward compatibility. The command hide_panel is only issued when it is explicitly called, not when the panel is being “hidden”. Now, we are welcome to software development. To be or not to be, that is question.


The Sublime Text and VSCode Development

@nikhil13 Also updates have been getting really slow lately

Please do not say that. You need to understand, there are only 2 developers working on the core. Not 10 or 100, but 2. The development is going great as it is. I just hope they can focus correctly their valuable and limited time to keep the editor good as it is for the future development.

What is software development? No ninja stuff, unless maybe for Javascript. What is the problem for Sublime Text? Its the C++, you cannot go out there just writing C++ on the speed light. You need to take serious time to understand what you are doing, what you are going to do it, and how are your software tests going to be. Though even Javascript cannot be lend in anyway you would like as pointed out by @braver comment:

The stuff you really need, e.g. api additions, need so much knowledge, design and coordination that only the contracted developers can do anything about it. You don’t add ligatures or gutter columns on a rainy Sunday afternoon. Are you going to sit down and refactor some thing for a whole week, plus deal with the “+1” comments and update the blog, on a code base you’re not getting paid to maintain? The big pull requests in a project like Atom represent weeks of research, design, discussion and coding.

Why C++ is so hard to work with? For nothing, C++ itself is not entirely the problem, the problem is the computer you are using and how it works. Why use C++? Because you have the control, explicit control over the computer. It means you can do anything you imagination come with. Which is very good for performance. As long as your are very smart, you can do very smart things and make Sublime Text the fastest thing alive.

However, with great power comes great responsibility. As long you can do very great things, you can do very nasty things and things tend to go very south and you end up with a C++ application slower, or as slower as a Javascript application. Or bad things as frequent/occasional crashes (seg faults). See the issue:

  1. Forum$23042 ST3 crashes frequently since Build 3124

Also doing simple things you could do in Python/Javascript could require much more man-work hours in C++. So, slowing even more the development progress. That is why new higher languages as Python and Javascript, and much more others are invented. To improve the programmer performance, allow them to create more stuff in less time with less bugs.

Also there the proposal of other languages as Rust, D, Ada, etc., trying to be as fast as C++, but less error prone, increasing the programmer code write performance. However I would say his is a field in development today. Now about this field there are several discussions out there. Some stick with one side, some choose stick with the other. In like 20 years from now we may look backward and see what each one of these sides accomplished and gone through. And draw out our conclusions.


The VSCode Development

I recently discovered VS code

Yo, there is a week I started working with VSCode. Because… It is open source, while Sublime Text is not. Why do I care? Well, because if there is a bug, and there are much bugs on the editor, I cannot fix. But what is my greatest concern are the segmentation faults bugs.

While I was writing this Text on Sublime Text, using my https://github.com/evandrocoan/MarkdownLight syntax fork:

  1. Sublime Text crashed 3 times.
  2. I fixed a bug on the MarkdownLight syntax, and created new ones.

The new bugs I created on the MarkdownLight is the not parsing of links on some parts of the text. I will have to look into that again, and see where I should start pushing then on the stack again.

The crash on Sublime Text is on that, I do not know why, why, why… I did not reported before on the https://github.com/SublimeTextIssues/Core/issues because the dump file had size 0 so there is nothing to do about it. This was not the first time is crashed like that. I have about 5 or 6 crashes like this, since the fix of the other crash I reported on https://github.com/SublimeTextIssues/Core/issues/1503 (Crash while hovering a File Name on the Tab Bar ).

On that time, the crash always created a dump file I could post, and post, and cry, cry, for the development team to look into it. Now the dump file is empty. Hence I have nothing to hold on. But these crashes are more well behaviored than the other, i.e., does not happen too much, often, etc.

When it crashed the second time, while writing this text, I created a new issue on the core within the description for it: https://github.com/SublimeTextIssues/Core/issues/1832 - You can even see the picture of the second love moment:

Problems like this is what makes the Sublime Text development slower and consume, exhaust, drive away the development time. This would be a issue from Sublime Text I would like to fix. Because I really hate crashes. I definitely would not be using my current Operating System if it was crashing (blue death screen). I need programs and I a system I can trust to never let me down losing my work or just vanishing out some time they fell like wanna do some crashing.


The VSCode Problems

@nikhil13 although it’s UI is not even close to sublime text

I got these problems with their UI:

1. Comparing Sublime Text gutter with VSCode gutter, we conclude the VSCode gutter is too big. Issue: https://github.com/Microsoft/vscode/issues/30795

Sublime Text
image

Notepad++
image

VSCode
image


2. The font Consolas 15pt with "window.zoomLevel": 1.1, is rendered narrowed, comparing to Sublime Text with the same font size. Issue: https://github.com/Microsoft/vscode/issues/30794

VSCode 1.14.1
image

Sublime Text build 3141
image

Notepad++ 7.4.1
image


3. Add border options to selectionBackground and findMatchBackground. They would be called like selectionBorder and findMatchBorder. Currently the selection has no border. https://github.com/Microsoft/vscode/issues/30793

Would be awesome if it has borders like Sublime Text selections:


4. Help tool tip should be placed bellow the mouse cursor on the settings.json file, instead of above item. For me it is horribly confusing putting it above it, beyond blocking my vision, as I read what is above my mouse cursor, not bellow it. Perhaps a setting to configure this behavior. https://github.com/Microsoft/vscode/issues/30797

  • The mouse cursor is where the big red arrow is pointing.

5. > @Gama11 I have the vshaxe extension cloned into .vscode/extensions/vshaxe, which is the usual workflow for working on extensions as far as I can tell. I didn’t have the most recent commit pulled yet, so the version in my local package.json was behind the officially relased one. This leads to VSCode actually asking me to update the extension (which doesn’t make a lot of sense for an extension installed from source)

Issue: vscode$25159 Support development extension installations


Big Work Time

@nikhil13 I resented it earlier

I resented Atom last year when I was looking for Notepad++/Sublime Text alternatives. Atom was too slow. I could not take it. I was very used to Sublime Text and Notepad++ which are incredibly fast. However I got impressed with VSCode. Despite it being also written in Javascript with Electron framework as Atom. It seems faster than Atom, but does not seems as faster as Sublime Text and Notepad++ in general.

For now, I doubt VSCode could be a replacement for Sublime Text because:

The file will not be displayed in the editor because it is either binary, very large or uses an unsupported text encoding. Issue: vscode$6474 VS Code fails to open big files (60MB)

As a Javascript application, still not sure the fact whether is can handle files bigger as 1GB or 5GB, as Sublime Text can handle: Forum$9832 Sublime Text performance with very large files.

Now I got an Open Source text editor to work with, VSCode. With already several issues to work through. Initially I am going through the:

  1. vscode$25159 Support development extension installations

Because I just clone the extensions with git on the extensions folder and do all the changes there. Currently when I am contributing to an existent extension, VSCode keep upgrading & overriding my git extension fork with the latest release available on the marketplace. Now I am looking into the VSCode source to find where it is doing such, and cut it out when I have the extension forked as a git repository.

@nikhil13, It would be really nice if you could open source Sublime Text finally, so that all users who are moving to Atom or VS code or bracket due to all these issues could stay.

The problem about Open Sourcing Sublime Text is that it would still a C++ application and segmentation faults are its fidelity. As well said by @facelessuser:

To me, open source doesn’t mean projects get lots of love, it may get more love, but a large percent of users don’t want to actually contribute to an open source project except to tell you you to add their beloved feature, or fix this particular issue.

So @nikhil13, what would be your VSCode core features you are planing to get working on? Did you compile the VSCode from its source code or are you just downloading the Microsoft Build? For the first time I downloaded the Microsoft Build, to see how things were. Later when I decided to give a try as an Sublime Text alternative I started looking into how to compile it from the source.

And I would have to say, I got a really hard time trying to compile VSCode from its source code. It just seems anyone else other than the Microsoft development team and some other community gurus does so. I am not a experienced Javascript programmer, I just know the basis. I could not figure out the miracle expected from them to build the source code. The build instructions where not a cook recipe. But after opening a issue on their issue tracker, I found a response from they about what steps should I take. https://github.com/Microsoft/vscode/issues/30909

Comparing the Atom build with the VSCode build, was really different. With Atom I just had to run one command and everything were completed successfully. On the instructions page, they state a lot of stuff. But seems I already had everything ready after the VSCode build, because I only had to run the command:

cd C:\
git clone https://github.com/atom/atom.git
cd atom
script\build

And the final build release of Atom was completed. But for VSCode I still do not know what miracle it is expected to generate a release build. The issue I just pointed there, still with this question in open. But hey, it is open source, I can contribute for the project creating the build steps require to create the release build. But the problem is, how much time will take me to learn it? Why the development team, i.e., the guys who know how to do it, do not did it already? Any ways if some day I got really interested in doing it, I can employ more time. For now, I figured out some other way to deal it the build process, not requiring to build a release version. Therefore I am good and can move on into fixing and creating other things.


The Open Source Initiative

@facelessuser My personal experience with open source is that you have a small percent of contributors, and a much larger user base that wants a piece of your time for their idea or concern.

Oh, I was that bad boy several times. Though, not everything I reported was something was making trouble to me. That is, when I saw some error popping out, I just take the basis and open a issue on its issue tracker. But just because there is a error, does not mean the error is something breaking my workflow. So, most times I do not stop everything I am doing and start debugging and looking how to fix it.

For example, on the package MarkdownLight I had opened this issue #13 on Nov 21, 2016. But just today I had it fixed. I did so because I was typing a markdown, and that bug messed with my entire document style. So I had two options:

  1. Go on the same issue and post: (Bumping it)
    1. Please heelllllllpppp
    2. Still not working
    3. Any news on this?
  2. To change the markdown syntax, to some other one.
  3. To use another text editor.
  4. To fix the problem for good.

Today I choose to fix the problem for good. Commit: evandrocoan/MarkdownLight@2d92bd5. But no pull requests made. As there is already one pull request mine, upgrading the syntax from .tmLanguage to .sublime-syntax.

I usually do not not do pull requests because most developers went MIA (Missing In Action). But sometimes they emerge from the ashes, and got me by surprise. Which by the fact, this is some other feature I need to implement for Sublime Text. Loop through all my forks and check whether the original project owner is starting updating it.

My idea is to do this an automatic process. Except when git cannot merge the changes automatically, then he sends me a big warm warning about the unmerged changes. I should do it this vacation, but I decided for now on to move on from Sublime Text and start working with VSCode. I would came back into implement this for Sublime Text on the next vacation time. Because well, now Sublime Text is crashing and I fu***** hate things crashing. So, as VSCode is open an source program, not written in C++, has bigger changes to not let down never.

Why would I think so? Well lets us use the current situation. Sublime Text is crashing sometimes, and there is nothing I can do about, other than cry to the Sublime Text development team. But now let us suppose, VSCode start crashing. Which are my options?

  1. Start crying to development team.
  2. Fix the damn thing myself.

Then Wow, super-boy. The man who fixes everything! No way, I can barely fix my misspellings errors on this text. However, comparing between the options with VSCode and Sublime Text, I much prefer VSCode because I can much more than stay just sitting and crying waiting for the others to fix my problems.

Also there is more on the equation than just the Sublime Text core crashing. Which are the dedicated time, and efforts I spent on Sublime Text. I have to consider the option that Sublime Text team will consider that my crashing problems are not good enough for their attention because I am the only one complaining about.

Though they are correct, on the business man point of view. Just one user troubling is not enough to spend time looking over his problems. Therefore I also have my own business man point of view. I am, developing several resources and employing huge amounts of time with Sublime Text and my Sublime Text Studio toolset collection. I have to consider that at some point Sublime Text can just became unfixable and I had no other option than not use Sublime Text any more. So, I cannot make Sublime Text, a closed source project, my only escape point.

That is where enters VSCode. I am not saying that VSCode will be my savior and that Sublime Text is dead. Much by the opposite. VSCode could definitely die and my only option would Sublime Text, or something else as vim, Notepad++, Atom, etc. But for now I am going to put on pause the Sublime Text stuff and start diving more into VSCode and develop the Code Text Studio, which is the same toolset I had been preparing for Sublime Text last year. However its has a big difference, it includes the source VSCode on the installation step. Which does not happen on the Sublime Text version, as it is a closed source project.

I hope this increases my changes of success, however we also need to increase the point of view. I am not the only one the equation, but just a very tiny small portion of the game. The ones who really matter are the big mass of developers. They decide how the game ends, who wins and are the losers.

Whether VSCode is going to be a success depends on the the masses adheres to its use and engages on its development. Also counts how much more time Microsoft pretends to employ its man power on develop the VSCode for free. If Microsoft stopped working on it, I am not sure about how much time would last the development of VSCode. Maybe the community employment (me, you, everybody else who works for free) should be enough. May be not. Issue: https://github.com/Microsoft/vscode/issues/31289 (How much time Microsoft pretends to employ on VSCode?).

1 Like

#14

Just to explain it as I understand it: The listener listens to commands and not to actions, so you listen to the hide_panel command, which is executed when pressing escape. The enter key is handled internally and does not trigger a command. This has the disadvantages, that you cannot bind an other key to enter, bind enter to a different command, or listen to its execution. The enhancement would be to transform enter into a confirm_panel command. So backward compatibility wouldn’t be a major issue.

Reporting bugs it not beeing the “bad boy”, but you just don’t benefit from open source if you just report and don’t fix bugs.

4 Likes

#15

My primary reaction: What is wrong with your setup that Sublime crashes? It is not a common thing for it to crash, although misbehaving plugins can definitely bring it down. MarkdownLight is just a color scheme and a syntax definition, that shouldn’t be it.

1 Like

#16

Thanks for the points. I posted on the issue the approach mentioned.

0 Likes

#17

We have a custom package at my work, and I’m the main package maintainer. I generally found what I need with current APIs, so I hardly have the need to view/modify the source code of Sublime.

Having said that, the main dev architect is concerned about not being opened source, since the company can do very little to protect it’s assets when you have a closed system. Which I totally understand, when I see it from their eyes. We are a small company, I can hardly imagine how worried would be a company like Facebook or Google to run software that has access to their source code, which is basically their more important asset.

So, in general, +1 to open source it, I’m sure I could get my bosses to pay more licenses if it would :slight_smile: I also understand Sublime developers, they probably don’t want copycats taking their ideas, but there are licenses that can protect your code while letting others like us helping with some bugs.

Regards,
Jose

1 Like

#18

While that’s of course a valid consideration, I’d be more worried about the plugins than the core application. Does your architect disallow them, or does he review them all?

Some cases in point: Atom has analytics built in; look at what happened with Kite hijacking minimap and autocomplete_python for Atom; or SidebarEnhancements for Sublime which also tracks users. Of course them being open source makes it easier to “catch” them, but usually only after lots of users getting violated.

Are you going to review all source code for Atom or are you going to trust Sublime’s devs having their livelihoods depend on the product being trusted by peers? Do you review all source code in Ubuntu, or do you trust it? Wether or not something’s open source is secondary at best, IMO.

Edit, also…

I’m sure I could get my bosses to pay more licenses if it would

… bosses tend to not pay for things they can get for free :wink:

9 Likes

#19

This crashes are cause by the package:

  1. https://github.com/shagabutdinov/sublime-goto-last-edit-enhanced "GotoLastEditEnhanced"

Removing that package fixes this issue. On build 3142, the crashes seems to be fixed, however it created another similar issue:

  1. https://github.com/SublimeTextIssues/Core/issues/1846 add_regions causes Sublime Text to hang for ever after eating 1.81GB of RAM

Which stills present on the new version of the package https://github.com/shagabutdinov/sublime-goto-last-edit-enhanced/pull/4

0 Likes

#20

Nice. It had to be something like that, glad you found it.

1 Like

#21

I see your point, and obviously it’s impossible to track every development and review every code, but that’s one of the proposes of having an open source software, this review is done by a large community.

Also, it’s not about not trusting Sublime devs, they can also be hacked and they could be releasing a hacked binary without even knowing it. Being open source just adds more layers of control. Some linux distributions have incredible package maintainers that do a great job releasing and controlling the software, to name just one of those possible layers.

And you are right about bosses, haha, but fortunately it’s not a problem at my company. We are paying licenses for several other libraries and products already. A one time fee is pocket change for a company.

Jose

1 Like

#23

No, they use different programming languages and have different APIs. The only thing you may use on Visual Studio Code are the syntax definitions.

1 Like

#24

I have used Sublime for about a week now. I enjoy it for the most part.

Pro: nice layout, flexible key bindings, package control, REPL, multiple themes, autocomplete, matching brackets, matching quotes.

Con: install packages some packages require github and terminal knowledge. Even some good packages don’t have well-written manuals. key binding is written in JSON, you need to understand JSON. REPL is great, but needs some more work.

Overall: Sublime is my favorite. It would be nice if is better integrated with point-and-click and drop-down menus. For example, you need to browse package codes to make changes, not everything is in Preferences.

With that said, RStudio IDE is a successful open source IDE, they are doing well. SAS is proprietary software, and it is not. Octave is an open source, IMO not doing well. Matlab is proprietary, and it is doing well. So, it all depends on where the leadership of the team takes it.

0 Likes

#25

key binding is written in JSON, you need to understand JSON.

Atom and VS Code, too. But with latest PackageDev support for auto-completion of key bindings, settings and commands improved a lot and will improve further in near future.

Even some good packages don’t have well-written manuals.

One aspect of what I meant with much room for open source lovers to contribute.

need to browse package codes to make changes, not everything is in Preferences

My favorite way to access package settings is Side-by-Side Settings. But there is indeed nothing which would prevent package developers to use the Preferences.sublime-settings to store package settings to by providing well formed settings names prefixed with the package name.

0 Likes

#26

Packages such as sublimeREPL, package control, and key map should be standard shipment when you download ST.

They are essential and convenient. I don’t see why someone would not want it, if they really don’t want, they can uninstall.

This is what I meant by better integrated.

0 Likes

#27

Package Control makes network connections and downloads software onto your machine. It is also an open source piece of software that no one pays for, so it doesn’t get the same attention as Sublime Text itself does.

With recent versions of Sublime Text there is a command palette entry that makes it very simple to install Package Control for users who want it.

1 Like

#28

I’ve used sublime text for a long time and have never found a need for 2 out of those 3 packages.
I like the spartan starting conditions of a fresh sublime text install.
After that, just install what you need.

3 Likes