Hey I am a GO developer and looking forward to make a contribution to Syncthing

Hey I am really good with golang and now i am looking forward to make a start in open source projects . i love this Syncthing concept and want to start working upon

but i really looking forward for a guide or a little push by any community member to help me getting started, by guiding me the simple areas to begin with and helping me for my first contribution

1 Like

You can have a look at the unplanned - contributions welcome milestone or easy tags on github for a starting point. :slight_smile:

Thanks @rumpelsepp for your reply

I am new to open source programming can you please help me with projects or directories to look upon before beginning so as to understand the flow and concept and also want to ask do i have to work upon issues with bug label or with all

1 Like

I guess @calmh, or @AudriusButkevicius could jump in here.

Check -help and the docs site to understand whats dir does what.

Thanks @AudirusButkevicius I am going around directories to get the essence of Syncthing but can you help me in initiating which issue to look and start working upon by giving me proper direction so that i start with contribution because it will be difficult in beginning to go through all the issues without knowing its architecture to solve

it would be really helpful if you provide me with any issue of your choice by giving the gesture of architecture to solve that so that i can go strong :slightly_smiling:

Pick a ticket you’d like to work on, and I’ll give you full support in implementing it. Most of the easy ones are javascript.

1 Like

Hey @AudriusButkevicius Like i want to start with first easy issue which is :-

Do not require restart when accepting/rejecting request for sharing usage data

Now please Give me a glimpse of where to look like what all modules are involved and what is the real problem occurring as that of now and what i need to do

Are you familiar with Javascript? You said you’re a Go developer…

So run syncthing with STTRACE=config environment variable, toggle and save the usage reporting option in the web ui settings window, and see which of the subscribers requires a restart (should be reported by https://github.com/syncthing/syncthing/blob/master/lib/config/wrapper.go#L159).

Then check that subscriber and understand why it thinks it needs a restart in order to change that option.

Sorry, I stole that ticket before seeing this conversation. :slightly_smiling:

Did you see http://docs.syncthing.net/dev/intro.html btw?

@calmh thanks that was really good it provided me with a wonderful overview of this project and its modules I will be going through it deeply and will get in touch with you there after

Hello Everyone @calmh, @canton7, @AudriusButkevicius

I went through the docs of syncthing completely and got a glimpse of project i than drilled and followed some code architecture i understood the functioning of individual code but not the complete flow for that i need to start with some practical exposure for that i want a beginning i searched some issues and randomly i selected a issue:-
Globbing needs to take care of special file names (versioning, conflicts)#2606

I would require your advice whether this issue will be good for me to start with and if yes than please help me with that to elaborate that and else if No than please assign me a basic Go program code to develop or to work upon

I recommend looking at issues with the easy label, as @rumpelsepp said yesterday.

The problem is that most of these are js.

Essentially you need to write an escaping function which escapes all combinations as described in filepath.Match in the standard library, and then use that function before any input we provide to osutil.Glob

The golang code ignores escapes on windows, otherwise I think the regex package’s function could be used.

Yes really this was the problem @canton i didn’t find any golang based issue with easy label i might be wrong if any such issue was present thereby i asked for your suggestion to advice. :slightly_smiling: @AudriusButkevicius i looked at the osutil library with only function Glob defined, now would you like me to create code for func Match(pattern, name string) (matched bool, err error)??? so that on returning True only we must forward it to Glob funtion and what type of pattern to be checked Please give me some code

There already exists a function path/filepath.Match in the standard library. We need to write a function which escapes all situations as defined in path/filepath.Match documentation, and write tests for it. This escape function can live in osutil package.

@AudriusButkevicius Yes filePath.Match is used to find whether the path is acceptable or not as per pattern now you want me to write a function which will escape all the given pattern and return the string like for example

escapeFunction("/", "home/dev/path")

will return output :-


or it would be great if you can provide me with 1 or 2 good examples as per your requirement