limetext / lime

Open source API-compatible alternative to the text editor Sublime Text
http://limetext.github.io
BSD 2-Clause "Simplified" License
15.3k stars 1.06k forks source link

if you had an hour or two free, what skill(s) do you have that you could lend to this project? #250

Open quarnster opened 10 years ago

quarnster commented 10 years ago

Answering this question is absolutely not a commitment to actually lend that skill out. I'd just like to hear how others are able and willing to help, and in the instance you don't know exactly how that skill could be used, perhaps we as a community can think of a way to use it!

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/1441104-if-you-had-an-hour-or-two-free-what-skill-s-do-you-have-that-you-could-lend-to-this-project?utm_campaign=plugin&utm_content=tracker%2F282001&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F282001&utm_medium=issues&utm_source=github).
zerosign commented 10 years ago

I'd really want to help out the dev (so sorry that I maybe the one that you said just like/watch but not to contribute). I might want to try to help QML frontend development. (Still trying to learn it though, try to catch up with current dev). I've several background in go & Qt (QML) even though not so much.

netm commented 10 years ago

PHP/Laravel, web front end, running businesses. I'd like to help to get the 6,000 watchers to to contribute time/cash/Bitcoin to get Lime past major obstacles.

mackenza commented 10 years ago

I am not a programmer with skills in Go. I dabble in intermediate PHP and website development, so I don't believe I have skills to aid in the actual development of Lime. however I am 100% behind the goals of Lime as I see how terrific the feature set of ST is and am disappointed in the pace of its development (I have a license for ST by my company so it's not the $$ aspect). So I would love for Lime to be a viable alternative to ST. I am a commercial software product manager with over 15 years experience. Perhaps there are some soft tasks I could assist with? i.e. shaping roadmap, collecting feedback from testers, promotion/evangelism? Just let me know.

james2doyle commented 10 years ago

Im sort of in the same boat as @netm except I have done some go programming but it is nothing of note.

IMO the easiest thing, and usually the most overlooked is documentation and commenting. Which can have mixed results. At least getting some base that then the "core contributors" and real go programmers can cleanup, would be a nice shortcut.

I am decent at debugging, in terms of isolating issues. I should be able to help with the HTML front end, if that ever takes off. If anything, I should be able to help with the website!

quarnster commented 10 years ago

I really would like this project to be community-driven and to enable users who don't know code at any level to have a voice. Ideally helping out would be as simple as possible, requiring almost no effort at all.

On a related note I'll be enabling the @Bountysource plugin for this project soon. While adding monetary rewards to issues doesn't motivate me personally, it might motivate others and also in a way lets users "vote" on which issues are most important to them. At the flip-side of this coin, developers can also offer a bounty goal as in "I'll fix this for $100", giving the community an ability to have these micro-fundraisers for each separate issue number filed.

Fundraising has been proposed before, however I really don't want to sit on a pile of cash and decide who gets what, and with Bountysource I don't have to as the money goes directly from the one(s) offering cash to the person implementing the fix.

Hopefully you (the community) will help ensure these bounties are fair and that the right people are the ones who in the end are rewarded.

BPopson commented 10 years ago

I'm still a student that has some experience in Java and Visual Basic .NET. I've been wanting to learn Go by doing something. Lime looks like an amazing project and I'd like to help anyway I could. If you think I could help someway, let me know and I'd be glad to!

axelmagn commented 10 years ago

I've been tracking this for a while. Done a few small Go projects, but nothing of this scale. I'd love to participate in the documentation effort, especially since I've repeatedly tried to browse the source and been really confused. I'd also be interested in finding a more consumer-friendly way to package and install this on linux systems.

quarnster commented 10 years ago

@BPopson Just browse the issues list and if you stumble upon something that looks feasible, comment in the issue that you'll look into it. There's certainly also lots of issues that exist that don't have an associated issue number, perhaps you can think of a few areas there too.

@axelmagn A good place to start could be exactly those places where the code, its documentation or lack thereof is confusing.

In general there hasn't been much code review or discussions as to what the best implementation would be, so I'm certain that just poking around in the code and questioning choices made will reveal areas where it can improve, and also get "automatic" documentation in the discussion following.

A broader question to think about for everyone could also be "how can we make helping out easier?".

Labeling issues with milestones, priority, difficulty, and skills needed could make it much easier to spot suitable tasks. I don't remember if everyone can create labels or only project admins, but everyone can certainly comment in the various issues as to what you think is needed to accomplish it and help define the issues better in the case their descriptions are lacking.

FichteFoll commented 10 years ago

Only admins/people with push access can set labels.

Btw, I'm just monitoring issues and progress made and try to comment on discussions where I can provide input. I know quite some aspects of ST3 because I wrote a few plugins and some documentation for it. However, I don't know any Go apart from the 3 hours I spent on a tutorial two months ago and I also have a lot of stuff to do which is why I will likely not contribute code - at least in the foreseeable future.

james2doyle commented 10 years ago

@FichteFoll that actually brings up the idea of converting plugins from Python to Go.

I'm sure that plugins are a little more distant on the timeline. But it is something that could teach people Go at the same time as converting the plugin.

When I first started, I learnt a lot of PHP by seeing the equivalent javascript.

quarnster commented 10 years ago

@FichteFoll that actually brings up the idea of converting plugins from Python to Go.

I'm sure that plugins are a little more distant on the timeline

There's no need to port plugins from Python to Go, a significant part of the plugin backend is already written and working with existing python plugins. See the sublime subdir, or if you launch a frontend, the whole vim key emulation bit is done by the standard ST3 Vintageous plugin with only a few minor tweaks applied to it.

At the same time the code's written with a goal of it being modular and neither the sublime package nor python is actually required, so those bits could be replaced/complemented by pure Go implementations, which is nice in the context of making it easier to cross-compile to for example linux/arm. Some details are in #154.

mackenza commented 10 years ago

this probably needs to be another thread for discussion, but I don't think converting ST python plugins to Go is the way to... Go (see what I did there?) A lot of ST's popularity comes from Python being the chosen plugin language as many people know it. Go is not at that point and would scare people off.

james2doyle commented 10 years ago

Right that makes a lot of sense then. I should have looked more closely.

quarnster commented 10 years ago

FYI the Bountysource plugin has now been enabled

dawsoju commented 10 years ago

I'm a Front-end dev, mainly working with JavaScript and Node. However, I have been following Go for the past year or so and have recently started focusing on learning it, I wouldn't say I'm a Go developer by any means but would be interested in helping/learning more about Go and lending any other skills I have that may be found useful to lime. I am a Sr. Developer at a UX shop working on several different projects and platforms at any given time, if there is no development specifically for lime I can contribute perhaps there may be some other tasks I can help with throughout my daily routine.

zerosign commented 10 years ago

Did irc channel are still active ?

FichteFoll commented 10 years ago

Since you talked there with people for a while I think you got the current state of the IRC channel. Currently there are 26 people in there but I don't think more than 10 have taken a deeper look into the source code and probably only 2-4 are able to answer questions.

I do read questions regularly (maybe instantly, maybe a few hours late), but I can't answer them so I don't say anything at all.

zephyyrr commented 10 years ago

I am a experienced Go programmer. I have written a lot of code during the two year since I was first introduced.

Given 1-2 hours I would start by taking a look at the preexisting code to get a feel for the style and overall layout. Another hour and I might actually take on a issue.

I am not much of a frontend person, but know my way around HTML and Javascript if needed.

PSeitz commented 10 years ago

I could do some work on the HTML frontend and the Backend with go. However I couldn't yet figure out how to run the HTML frontend

EdVanDance commented 10 years ago

@PSeitz After following the wiki build instructions go to frontend/html sub directory. go run main.go This will start a web server on localhost:8080.

RossBarnie commented 10 years ago

I'm about to graduate and have written a web application in Python with Django and another with web.py, using Bootstrap in the latter. I also wrote a teaching application in Java with Swing. Given 1 to 2 hours I'd first get lime built and try to familiarise myself with the code and the existing UI, and try to contribute to the frontend development since this is where I feel I could make more of a contribution.

quarnster commented 10 years ago

Hi all, how's it going? Are you making any progress? Did you get the project to build?

What are your current roadblock(s) and what can the community do to help you get past it?

RossBarnie commented 10 years ago

I haven't looked at this in a while but from what I remember I got the html and termbox versions to work but not the qml, for whatever reason. Got lots of exams coming up so won't be contributing till they are over. One thing I would say is that I am not a Vi(m) person so it took me a while to figure out that it used the vim bindings (couldn't figure out why I wasn't typing anything and it was because I wasn't in insert mode).

quarnster commented 10 years ago

The vim bits are provided by a python plugin (Vintageous) and aren't mandatory. It's there by default just because its a very nice plugin that ties many bits of the backend together to prove that they work.

stev-0 commented 10 years ago

I have had an hour or two free, and have spent it (and some!) building the code and trying to get the qt frontend to render python code. Have been digging about in the code but no joy yet (any pointers appreciated). I'm not an ideal hacker I'm afraid as I am green to both go and qt, but keen to help out.

quarnster commented 10 years ago

You should just need to set the "syntax" setting of the python file's view to use a Python language definition. Something like:

git submodule add git://github.com/textmate/python.tmbundle.git 3rdparty/bundles/python.tmbundle

And then in the go code:

    v := w.OpenFile("something.py", 0)
    v.Settings().Set("syntax", "../../3rdparty/bundles/python.tmbundle/Syntaxes/Python.tmLanguage")
EdVanDance commented 10 years ago

Seems like I won't be of any help during the next 5 months or so. Being an academical employee while working on my master thesis in parallel takes more time than expected. My wife and daughters need me also. I'm hoping you do understand my situation. Sorry.

quarnster commented 10 years ago

@EdVanDance No worries mate, check back in when things calm down

haneefmubarak commented 10 years ago

@quarnster idk if you are still looking for help, or whether my skills would really be of any use, but I'm fairly proficient with *nix systems, writing backend/consolish code in C, and can do a tiny (miniscule) bit with POSIX Extended regexes. I can also do some basic shell scripting (bash, zsh) and can play a bit with makefiles.

I'd say my main strength is playing with algorithms and the like - they've always fascinated me, so if you have anything like that I _may (extra emphasis: **may**_) be able to help with those.

I'm not sure if you would be okay with using C code, but I do usually tend to write quite clean, well commented, easy to read and understand (even if you don't r/w C) code, or at least I like to think so :smile:!

quarnster commented 10 years ago

Help is always appreciated, I'm lousy at delegating though and I'm still hoping the community will chime in and help each other suggest how and where their skills can be used :)

haneefmubarak commented 10 years ago

Ah. Well, if it would be alright with you, I'd say that I'm pretty good with delegating tasks to match skillsets, so I can do that if you wish.

haneefmubarak commented 10 years ago

Also - are you okay with the use of C code?

RoelVanNyen commented 10 years ago

In my opinion we should not add another language. Also if you are familiar with the c language and know a bit about object oriented programming then go should not be that hard to learn. takes maybe a week ... and it`s pretty fun too ;-)

just my 2 cents :-)

haneefmubarak commented 10 years ago

On the other hand, having multiple languages can also be a strength - you can get people from all different walks to come in and contribute. Plus, as long as two languages have an FFI that matches, talking between the two languages should be rather clean and straightforward.

Almost every language, including Go, has an extremely clean FFI for C, hence having C may even be useful as a sort of "glue language", as it would make it much, much easier to integrate other languages into the project.

Using that functionality of C, it may even be possible to allow plugins to be written in any language and then allow lime to use them, thereby increasing the base of users who can create plugins, which in turn, would make lime an extremely flexible text editor.

RoelVanNyen commented 10 years ago

Search for the amount of issues this project has/had with python glueing and you`ll understand my objections.

haneefmubarak commented 10 years ago

OTOH, gluing into C from Go is trivial (although it can be a bit harder the other way around), and gluing into other languages from C is usually pretty clean.

The main issues you've had with Python gluing appear to relate to the part where Python uses an interpreter and that you guys are having issues with the interpreter. If we assumed that everyone was operating on a *nix system, I think I could actually fix that with a shell (bash/zsh) script.

However, C is run as precompiled machine code, and therefore, it's unlikely that you will run into unpredictable errors when gluing into C. If one person runs into an error (and they have a standard-ish installation), then all of the rest should run into that error also, which would make fix bugs like that rather trivial.

quarnster commented 10 years ago

Personal opinion; I wish C/C++ would just go ahead and die already. The whole ecosystem is broken and should be cleansed with fire. It just can't disappear off the face of earth fast enough. I'm serious.

In other words, no, C is not acceptable.

quarnster commented 10 years ago

@ataias, writing here as it's a better topic to suggest areas to work on.

Help is needed pretty much everywhere, but if you want to get started quickly I'd suggest to poke around the qml frontend, which should now reload the .qml files at runtime for immediate feedback on changes you make to those files. (Though sometimes there's a runtime panic and the app crashes, in which case you can just try and restart it).

Quite a lot can be designed and tweaked in the UI to make it feel right even if all support code isn't implemented yet (just use placeholder data like lorem ipsum).

If you'd rather get your hands dirty with technical bits, you could help us think about the overall design of the various pieces and how they are supposed to fit together. While the code is being written in Go, the concepts involved in the code architecture should make sense no matter what language it is then actually implemented in so lacking knowledge of Go isn't necessarily a blocker.

Suggested topics are thinking about and commenting on @ZiDoMs's work in #281, backend/parser #209, Menu support #199, Sidebar navigation #128, Goto anything's backend bits #122 (which appears to also have a $5 bounty on it).

If you want to get down and dirty with Go, I'd suggest just digging into the existing code and to write some tests. That would be an excellent way of ensuring that your understanding of what the code does is what it actually does and when it doesn't make sense to raise it as an issue. Writing tests in Go is very straight forward.

If you'd rather create something new, a smallish task would be to implement one of the many commands that are left to implement. The list of commands comes from Sublime Text 3 and are supposed to be compatible with ST3, so there are many commands that do things that might not be obvious and many that aren't important. Helping us prioritize these and to describe what they are expected to do would also be appreciated.

The wiki contains a page with some details on the process of implementing a new command. (Please help update the wiki too if you think some information should be in there, or is wrong).

Beyond that navigate the documentation (please help expand it where it's lacking), take a look at the open issues (please help answer questions/support users, help design the high level interfaces and to fix issues), please spread the word and try to get more people to help (preferably via writing code), perhaps add $1 to an issue bounty you feel strongly about in case that convinces someone to take that issue on etc.

sonph commented 10 years ago

I've poked around the project in the last month, but only until now my summer break officially starts. So here I'm making a commitment to do something useful this summer.

I'm a Computer Science undergraduate, starting my senior year this fall. I have moderate experience with Python (i.e. I have no trouble writing and debugging small programs but I do lack experience designing and writing large programs utilizing multiple libraries and what not). I have no experience with QML and Go (well except for the tour of Go). I'd prefer writing code in Python as it's the language I'm familiar with (I'm not sure if limetext has any components written in Python? is it generated or just the API?).

I'm going to be honest here. I've looked at the code and read over the wikis and godoc but still I have no idea what are the components. For example the source code folder hierarchy is confusing IMO. Probably I will try using the liteide debugger?

I've also been in the IRC channel for a while but it seems like there's not much discussion going on (or well not at all).

zoli commented 10 years ago

There isn't any code written in python except the sublime_plugin file. About the folder hierarchy you should know lime goal is to have a completely separated backend & frontend the only thing frontend should implement is the Frontend interface this makes us capable of having frontend in qml, termbox, html and etc without any problem with backend there is more explanation on the components in issues (e.g here about plugins and etc). You can add documentation or wikify some parts that you think is missing after reading the issue's or working on the code.

BTW if you have done the tour of go you can start with implementing commands & easy fix labeled issues this will help you understanding the components to, if you needed help I am in IRC channel most of times ask there i will help if i could.

ataias commented 10 years ago

Thanks for all the information. I will be analyzing the options and decide something to do. I don’t have much time because I am doing an internship this summer, but for now I will be taking a look at the go website to learn the language. What I have seen so far was just different syntax in some cases (like to create a variable). About qml, my reference would be "http://qt-project.org/doc/qt-5/qmlapplications.html” ? Ataias Pereira Reis

quarnster commented 10 years ago

What I have seen so far was just different syntax in some cases (like to create a variable).

As you have experience with C and Python I'm sure you'll see many similarities between those languages and Go. There's a Go for c++ programmers wiki page that could give you a quick summary.

About qml, my reference would be http://qt-project.org/doc/qt-5/qmlapplications.html ?

Yes, that'd be it.

stev-0 commented 10 years ago

I just submitted a pull request for the frontend qml viewer (to add tooltips). This took me quite a long time to figure out and an unsuccessful Stackoverflow question. Some things that I would find useful as a novice would be some idea of how to debug go-qml.

quarnster commented 10 years ago

frontend/qml should now reload the qml design if any qml file is modified in the frontend/qml directory, which should make it a bit easier to iterate. It was also crashing all the time for me when doing this reload when destroying the old qml engine, so I commented out the destruction and it appears to be much more stable now.

hellerbarde commented 10 years ago

I'm willing to learn anything regarding to this project. My current core competencies lie with Python and JavaScript. 1-2 Months ago I tried to get into the QML frontend part, but I couldn't get the project to open with QtCreator and I didn't/still don't have the Qt experience to find out what was wrong.

quarnster commented 10 years ago

Haven't used QtCreator myself so can't offer any tips there. The .qml files should auto-reload IIRC so manually editing them should still allow quite a good iteration speed in trying things out.

quarnster commented 10 years ago

Both the lime repo and the gopy repo now display a test suite code coverage badge. If you want to get into writing Go code, looking into writing tests for the non-covered code would be an excellent starting point.

For example clicking on the badge Coverage Status, then the latest build (297 currently), and then selecting one of the .go files; for example build 297's backend/commands/find.go which has a 35.19% coverage and you can see the code that is covered in green, and the code that is not covered by the tests in red.

So the task at hand is to make all those red bits green by creating new tests or adding to the existing ones. Your effort in doing so will be immediately shown at the repositories main pages via the code coverage badges and the code required for a test is typically not that many lines of code, making it an ideal task to get started with.

Please help!

zoli commented 10 years ago

It seems there are mis-understandings about limetext goals and purpose regarding discussions here(hacker news) and here(reddit), limetext is not about saving $60.

FichteFoll commented 10 years ago

After reading through some all of the comments, I think replacing the screenshot on the main page with a more minimal UI version would be a good idea.

justinfx commented 9 years ago

I've done about 4 Go based projects so far. 2 of which are cgo binding libraries. But I have ~5 years of Qt experience. Although I am just now getting into the QML aspect.

I planned to commit much more than 2 hours on this project. Initially I just want to familiarise myself with the code base and either take on some easy tickets or write some tests. My interest is both having another vehicle for writing Go as well as a concrete use case to get some QML exposure.

Happy to take any direction as well, if my skill set is of any specific use.