gioblu / Cape

String encryption for Arduino, limited microcontrollers and other embedded systems.
67 stars 18 forks source link

Should other programming language implementations be stored in the src dir? #14

Closed gioblu closed 6 years ago

gioblu commented 6 years ago

following the discussion present here: https://github.com/gioblu/Cape/pull/13 as correctly suggested by @Pharap, should be evaluated if to keep Cape ports in the src dir in this repo or create other repos to store them. For me is fine to host the python implementation in the src dir and examples in the examples dir. It should not interfere with the examples listing within the Arduino IDE and could be handy.

If @colinta is ok with that and prefer to leave to me the maintainance, and @Pharap does not see any additional downsides the inclusion of py scripts within this repo should be fine in my opinion.

Let me know what you think about it.

Pharap commented 6 years ago

Continuing from the earlier conversation:

I have worked to the scheme since 2.0 and master is not backward compatible, for example see decrypt here:

Oh, I see, it was because of a change made before I got involved https://github.com/gioblu/Cape/commit/0e61e8ebf8bcc57b263b0a4c0715db29b98725a3

I thought you meant my changes specifically broke backwards compatibility. Backwards compatibility is definitely broken going by that commit I linked.

I mean that in other repos like PJON where I handle many different architectures accessing the same example directory

Hrm, when I download it, it doesn't seem to exclude any of the files - all the files get downloaded. Admittedly only .ino and .h files seem to be able to be included though.

Arduino does some weird things, so it's probably got some rules stopping the other files from being included (which may actually go against the C++ spec since technically include files can have any valid file name - but .ino files heavily break the spec anyway, so that's not surprising).

to study more in particular its implementation and be sure to provide at least the coverage I expect

Fair enough


My main concern about putting lots of versions in this repo is that this is where the Arduino IDE downloads arduino code from to put in a user's libraries directory. Adding lots of examples for other languages will increase the amount of data that has to be downloaded and stored in the user's libraries directory, and users using the Arduino IDE don't necessarily want the other versions (and may not even be aware of them) since they're probably only using the Arduino IDE for Arduino libraries.

If they wanted one of the other language versions, I would expect they'd try to get them from github rather than trying to download them through the Arduino IDE. Using a separate repo has the advantage that people would be downloading from the repo specifically because they want the alternate (non-Arduino) versions.

I think the extra bit of maintenance work of having two different repos is worth the benefit of faster downloads for users. It also means that the Arduino version can be updated as soon as possible without having to wait to update all the different language versions.


Ultimately it's not up to me though, and I'll accept the decision either way. I've given my reasons - that's all I can do.

gioblu commented 6 years ago

@Pharap I am not saying the non related examples are excluded from the download, but simply from the GUI list visualization of available examples within the Arduino IDE.

for sure download time and in some cases useless overhead added, is a good point.

@colinta why dont you open a new Cape-py / Cape_py repo? If instead you dont want to be bothered by repo maintainance I can create that for you giving acknowledge to you.

colinta commented 6 years ago

Can do - for now I'll just host it on my personal account: https://github.com/colinta/Cape.py

Amazingly, the pypi package name cape was available, so pip install cape will install this python port! That's an unexpected win. šŸ˜ƒ

colinta commented 6 years ago

I am tagging this first release as "2.0.0" to show that this port is compatible with 2.0 version of gioblu/Cape.

Pharap commented 6 years ago

When the decision's been made about if/how it's going to be done, I might be able to donate a port to another language (e.g. Haskell) if I have the time spare.

gioblu commented 6 years ago

Ciao @colinta amazing!!! That's a win I agree šŸ‘!! Nice and slick. I have added the link to your repo in the README at the "Compatible implementations" section.

Ciao @Pharap that could be amazing! It would be the 5th programming language implementation O_O.

@Pharap @colinta, sincerely, THANK YOU. I would not have expected so much support, if you pass from Italy please write me, I will offer you a good dinner and a beer :).

gioblu commented 6 years ago

So do you agree we can close here considering we will host in src dir of this repo only c and c++ implementations?

colinta commented 6 years ago

Sounds good! Iā€™d love to do a driving tour of Italy, my wife and I were talking about that recently. šŸ˜†

I think we can close this issue, linking to other implementations from the readme makes sense.

On Jan 15, 2018, at 5:45 PM, Giovanni Blu Mitolo notifications@github.com wrote:

So do you agree we can close here considering we will host in src dir of this repo only c and c++ implementations?

ā€” You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.

gioblu commented 6 years ago

CIao @colinta lets keep in touch will be a pleasure to meet you!