[Machine readable output from userland utilities] report

Zaro Korchev zkorchev at mail.bg
Mon May 26 14:34:48 UTC 2014


Hi David

I removed the GPL code from the repository.

I considered using libucl and libnv. The problem with libucl is that it does not support streamed output so, after a discussion with my mentors, I decided to implement this prototype version using YAJL. This is not a final decision but that's what I'm using at the moment.
I may use libnv soon - I just haven't had need for it yet. It has one limitation that I'm concerned about - it does not support arrays (the only supported composite data type is key, value pairs).


Zaro

Le 26 May 2014 à 13:34, David Chisnall a écrit :

> Hi Zaro,
> 
> A few comments - hopefully your mentors can chime in with a bit more:
> 
> Your repo appears to contain GNU coreutils, which is not part of the FreeBSD base system and is GPLv3 code, so for legal reasons a lot of FreeBSD developers can't look at it and most shouldn't if they are planning on working on any similar parts of the FreeBSD system.  I believe that the socsvn server is isolated from the main svn repository, but putting GPLv3 code in any FreeBSD svn server can open the project to liability, so I would ask you to remove it as soon as possible.
> 
> Second, your SOL appears to be using yajl.  This project was intended to use libucl and libnv as the human-readable and binary serialization mechanisms, as those are already present in the base system.  Have you spent any time yet looking at them?  Are there limitations in their APIs and the structures that they can represent?
> 
> David
> 
> On 26 May 2014, at 00:09, Zaro Korchev <zkorchev at mail.bg> wrote:
> 
>> This week I made a simple design for the project and implemented JSON output for an example application.
>> 
>> I made research on several libraries that I may use for my project. I designed a simple API for structured output. At the moment I call it SOL (Structured Output Library). I'm open to better name suggestions :)
>> 
>> The API is in no way final. I will change it as issues arise in the future.
>> 
>> I have a prototype version of ls that uses the API to output JSON. There are still some issues to resolve but the modified ls is basically working.
>> The code is accessible in the GSoC 2014 repository:
>> https://socsvn.freebsd.org/socsvn/soc2014/zkorchev/
>> 
>> here are two examples:
>> 
>> ls /
>> ["COPYRIGHT","bin","boot","dev","entropy","etc","home","lib","libexec","media","mnt","proc","rescue","root","sbin","sys","tmp","usr","var"]
>> 
>> ls -l /
>> [{"mode":"-r--r--r--","nlink":1,"user":"root","group":"root","size":6201,"time":"Jan 17 00:41","name":"COPYRIGHT"},{"mode":"drwxr-xr-x","nlink":2,"user":"root","group":"root","size":1024,"time":"Jan 17 00:40","name":"bin"},{"mode":"drwxr-xr-x","nlink":8,"user":"root","group":"root","size":1024,"time":"Mar 18 20:42","name":"boot"},{"mode":"dr-xr-xr-x","nlink":12,"user":"root","group":"root","size":512,"time":"May 23 15:22","name":"dev"},{"mode":"-rw-------","nlink":1,"user":"root","group":"root","size":4096,"time":"May 23 15:22","name":"entropy"},{"mode":"drwxr-xr-x","nlink":21,"user":"root","group":"root","size":2048,"time":"May 22 18:51","name":"etc"},{"mode":"lrwxr-xr-x","nlink":1,"user":"root","group":"root","size":8,"time":"Mar 18 17:37","name":"home","link":"usr/home"},{"mode":"drwxr-xr-x","nlink":3,"user":"root","group":"root","size":1536,"time":"Jan 17 00:40","name":"lib"},{"mode":"drwxr-xr-x","nlink":3,"user":"root","group":"root","size":512,"time":"Mar 18 17:28","name":"libe
>> xec"},{"mode":"drwxr-xr-x","nlink":2,"user":"root","group":"root","size":512,"time":"Jan 17 00:39","name":"media"},{"mode":"drwxr-xr-x","nlink":2,"user":"root","group":"root","size":512,"time":"Jan 17 00:39","name":"mnt"},{"mode":"dr-xr-xr-x","nlink":2,"user":"root","group":"root","size":512,"time":"Jan 17 00:39","name":"proc"},{"mode":"drwxr-xr-x","nlink":2,"user":"root","group":"root","size":2560,"time":"Jan 17 00:40","name":"rescue"},{"mode":"drwxr-xr-x","nlink":7,"user":"root","group":"root","size":512,"time":"May 23 17:53","name":"root"},{"mode":"drwxr-xr-x","nlink":2,"user":"root","group":"root","size":2560,"time":"Jan 17 00:41","name":"sbin"},{"mode":"lrwxr-xr-x","nlink":1,"user":"root","group":"root","size":11,"time":"Jan 17 00:42","name":"sys","link":"usr/src/sys"},{"mode":"drwxrwxrwt","nlink":6,"user":"root","group":"root","size":512,"time":"May 23 17:51","name":"tmp"},{"mode":"drwxr-xr-x","nlink":17,"user":"root","group":"root","size":512,"time":"Mar 18 17:37","name":"usr
>> "},{"mode":"drwxr-xr-x","nlink":24,"user":"root","group":"root","size":512,"time":"May 23 15:22","name":"var"}]
>> 
>> As I implemented this example modified version of ls, I got some ideas about where problems can arise in the future and I got some insight on how I can approach to solve them.
>> 
>> 
>> Zaro
>> _______________________________________________
>> soc-status at freebsd.org mailing list
>> http://lists.freebsd.org/mailman/listinfo/soc-status
>> To unsubscribe, send any mail to "soc-status-unsubscribe at freebsd.org"
> 
> 



More information about the soc-status mailing list