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

Created on 15 Mar 2014  ·  75Comments  ·  Source: limetext/lime

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! We accept bounties via Bountysource.

question

Most helpful comment

I'm a polyglot developer who's done, among other things, full LAMP stack, lightweight framework-less JavaScript, feature-rich 2015/2016 JavaScript apps, and server-side Java and C#.NET. I have strong technical skill in generating graphic resources (but don't expect anything artistic unless you like pixel art). Go and QML are a couple of rare things I've never touched but I'm confident I could make a strong contribution.

I have wanted something light and cross-platform like Sublime but open source for many years. If this is the project that can make that a reality then I want to do whatever I can to make it happen.

Given all of that, what are the priorities that stand between Lime today and a Lime that can replace Sublime/Atom/Notepad++ anywhere and everywhere? I don't just want to know what I can do. I want to know _everything_.

All 75 comments

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.

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.

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.

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!

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.

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!

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.

@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.

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.

@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.

@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.

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.

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

FYI the Bountysource plugin has now been enabled

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.

Did irc channel are still active ?

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.

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.

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

@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.

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.

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?

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).

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.

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.

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")

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.

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

@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:!

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 :)

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.

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

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 :-)

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.

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

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.

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.

@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.

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).

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.

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

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.

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.

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.

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.

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.

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!

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.

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.

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.

@justinfx: All the frontends could use some love, and if you had some time to spend on the QML one, that would be awesome.

Is there any more documentation besides what's in the doc.go files? I would love to contribute but reading through all the code without any documentation or context is extremely tedious (especially since I'm a beginner in Go). I haven't really worked on many open source projects before so I'm not sure if the lack of documentation is the norm. I would imagine adding more documentation would be something I can work on, if it hasn't been done already.

Also, would you guys consider moving the IRC channel to another chat service, like slack or hipchat? I feel since the IRC channel isn't that active, a chatlog would help drive more discussions.

@WesleyYue

Is there any more documentation besides what's in the doc.go files?

You can use https://godoc.org/github.com/limetext/lime for some easier cross referencing. There's also the wiki and the ST unofficial docs.

Thanks, I already went through the wiki and I found the godoc.org link in one of the doc.go files. What about the idea of moving to a more modern chat service? I feel otherwise I have to pollute the comments on github issues (such as this one) to have my questions answered since there is so little activity on the IRC channel and that logs are wiped every time I turn off my computer.

I don't hang in the IRC channel personally so I wouldn't be able to tell you what goes on in there ;)

Please do pollute the issues list with questions unanswered, it'll help us document and cross-reference documentation where it is lacking. Ideally also help answer those questions and aid in the documentation effort to the extent you are able.

Out of curiousity, what other "more modern chat service" are you thinking of?

Maybe IRC with a logging bot. ;) Or an XMPP multi user chat.

-------- Original Message --------
From: FichteFoll [email protected]
Sent: 1 November 2014 15:01:37 CET
To: limetext/lime [email protected]
Cc: P Stark [email protected]
Subject: Re: [lime] if you had an hour or two free, what skill(s) do you have that you could lend to this project? (#250)

Out of curiousity, what other "more modern chat service" are you thinking of?


Reply to this email directly or view it on GitHub:

https://github.com/limetext/lime/issues/250#issuecomment-61369031

Sent from my phone

I've set up gitter.im for an alternative to IRC with chat history.

@FichteFoll I mentioned slack or hipchat above but it seems gitter.im would work just fine.

About a "more modern chat service", if the motivation is only logging, there is a simple solution:
https://botbot.me/

botbot.me is a webservice to log freenode channels, it is used by very popular open source projects, like Django, Chef, Docker, Go-nuts, Puppet, Vagrant, Travis-CI, PyPy and others.

I Think that a freenode IRC channel is a common pattern across the open source world and I can't see the need for a replacement, but I see the need for more active on some open source channels at freenode, maybe is the case of the lime channel too.

Sure, I could do that. But there is very little activity on the channel itself and I'm not sure if adding a log bot would help with that in any way. (I did add it for ##sublimetext though.)

IMO, gitter.im is superior to plain IRC. It has github and travis integrations, allows quick referencing of issues, logs history, does notifications, etc.; all out of the box. It also has an IRC interface if that's what you want (https://irc.gitter.im/).

I'm an Qt Developer and also has much experience with QML. If there any help needed, I would do :)

I'm an Qt Developer and also has much experience with QML. If there any help needed, I would do :)

@droekm Your help is greatly appreciated.
We have issues labeled with qml and most of them are not much related to the backend (e.g #301, #193). There are also more issues that you will see while running qml frontend.

coming from python, also using qml, and currently working also on an editor (different than sublime text etc.). when some help is needed i will be there!

Hi, I would love to help! I know HTML & CSS, a little bit of JavaScritpt and jQuery. If there is any way for me to contribute, I will!

Hi, I could be a big help! If there was some kind of Python api, I could help 'cause I know _a lot_ of python. I also could put some more logic into Lime and since I use Sublime Text, I could work on features to make Lime more like sublime text.

@jchpi: help is always needed. The qml frontend needs a lot of work, so jumping on there would be really helpful.

@TadorHead: we have an html frontend that could do with some love, if you wanted to contribute there.

@erbridge Alright I'll give it a look!

Please help us define a "usable"-milestone in #537!

I'm a student seeking to broaden my horizons. I write c++ for the most part and know just enough so my code isn't trash, but Go caught my attention awhile ago and looking at it again I am very interested in what they are doing. I'm also a fan of qt so qml is a fresh but familiar language. I don't know how much help I'll be so I'd like to spend a bit of time on this project to learn the two languages and see if I can submit anything from my tinkering. I view my skills to be more so on the tangible side between the user and the back-end, so I think I might start there. I like the workings that go on between what you click and what goes on that you can't see and making that run as well as possible.

I can offer Python (Most proficient), C (A bit rusty) and Java skills.

I am not experienced enough in Go, so I dont think I can contribute much in development work right now. Maybe frontend work would be more suitable for me currently. But I like the idea of the project and I am more than happy to do some user testing or make plugins if you have python/java/javascript api for that.

Cheers,
PeriGK

Backend Core Go issue resolution and native VIM commands!

I'm a polyglot developer who's done, among other things, full LAMP stack, lightweight framework-less JavaScript, feature-rich 2015/2016 JavaScript apps, and server-side Java and C#.NET. I have strong technical skill in generating graphic resources (but don't expect anything artistic unless you like pixel art). Go and QML are a couple of rare things I've never touched but I'm confident I could make a strong contribution.

I have wanted something light and cross-platform like Sublime but open source for many years. If this is the project that can make that a reality then I want to do whatever I can to make it happen.

Given all of that, what are the priorities that stand between Lime today and a Lime that can replace Sublime/Atom/Notepad++ anywhere and everywhere? I don't just want to know what I can do. I want to know _everything_.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

martell picture martell  ·  64Comments

njskalski picture njskalski  ·  8Comments

hackmaster0110 picture hackmaster0110  ·  8Comments

MasseGuillaume picture MasseGuillaume  ·  16Comments

rayfix picture rayfix  ·  3Comments