Thanks for feed back

Jason Kristian | Director | Apps 4 U Pty Ltd.
ph: +61 075699 8109
mob: +61 0411 389 392
e: Jason Kristian <mailto:jas...@apps4u.com.au>



> On 18 Nov 2014, at 2:43 pm, Jason Kristian <jas...@apps4u.com.au> wrote:
> 
> I agree with what you say, I’ve had a chance to deal with this in the PHP SDK 
> which is why I wanted to tackle this SDK after I’d did the PHP version ,  To 
> take paging as one example I would give users both options where there is a 
> easy Iterator type method that can say page in lots of 20 for a UITable view 
> but if you have some custom UICollectionView and you want to handle paging 
> your self then you can just pass the cursor along for you next call(page)
> As with Models Object . I have two ways or more to deal with them for example 
> some people like be able to ask the model for data and let it do the REST 
> call behind the scenes for them other people like making the API call and 
> just getting back model objects so this is one of the reason I wanted to 
> start this to get every ones input as there is a log of decisions to be made 
> and I did't want to make them all my self as per my preferences.
> 
> Jason Kristian | Director | Apps 4 U Pty Ltd.
> ph: +61 075699 8109
> mob: +61 0411 389 392
> e: Jason Kristian <mailto:jas...@apps4u.com.au>
> 
> 
> 
>> On 18 Nov 2014, at 2:42 am, Rod Simpson <r...@rodsimpson.com 
>> <mailto:r...@rodsimpson.com>> wrote:
>> 
>> Other members have also built SDKs, like Scott Ganyo(Ruby) and Anuradha 
>> (Perl).  Jason, I know you have already been through this with PHP, but 
>> since you are spurring this really awesome discussion, I thought I would 
>> throw in some thoughts.  I added this copy to the doc, but pasting it here 
>> for general review. 
>> 
>> 
>> Building an SDK for Usergrid is a big task because there is a lot of ground 
>> to cover - the API is big and full featured and there are a few 
>> inconsistencies which can create landmines.  
>> 
>> I think the first thing is to decide how you will keep track of “management” 
>> type features such as logins.  Do these go in a user entity object?  Do they 
>> go in a client object?  Where do you keep track of the current token or 
>> client secret/id that will need to be sent along with every call?  They 
>> “belong” to the user, but they are used for every API call.  
>> 
>> Also, should the SDK have higher level constructs (objects) that model the 
>> way the data is stored on the server (e.g. collection, entity)?  We did this 
>> in the Javascript and Node.js SDKs.  These enable a bit more abstraction and 
>> may make it easier to use.  
>> 
>> The problem is that not all the collections behave the same way.  For 
>> example, the Users collection uses “username” has a primary key, whereas 
>> groups use “path”, and custom collections use “name”.  So one could create a 
>> base entity / collection class, then extending it to map to the different 
>> types of entities / collections - built in, and custom.  In the JS SDK, the 
>> collection objects hold a set of entity objects that correspond to the 
>> current result set.
>> 
>> Another problem we ran into on the JS SDK is paging.  Usergrid uses the 
>> concept of a cursor for result sets that have more than one “page” of data. 
>> By default, a page is 10 entities, but it can easily be extended to any 
>> number up to 1000.  So what you do is make a call with your query, which 
>> then gives you back 10 entities and a cursor to get the next 10.  You pass 
>> that cursor along with the next call, which will give you back the next 10 
>> and a cursor.  Repeat until you get to the end of the result set.  Most apps 
>> need to use paging to show results since you generally don’t want to pull 
>> down 1000 entities every time.  In the JS SDK, we did something like this:
>> 
>> var books;
>> 
>>            client.createCollection(options, function (err, collection) {
>>                books = collection;
>>                if (err) {
>>                    alert("Couldn't get the list of books.");
>>                } else {
>>                    while(books.hasNextEntity()) {
>>                        var book = books.getNextEntity();
>>                        alert(book.get("title")); // Output the title of the 
>> book
>>                    }
>>                }
>>            });
>> 
>> 
>> So the client has a factory method that hands back a collection.  Then, you 
>> can simply call getNextEntity on the object to loop through the current page 
>> of data.  If you want to iterate through pages, you can use the getNextPage 
>> method:
>> 
>> if (dogs.hasNextPage()) {
>>    // There is a next page, so get it from the server
>>    dogs.getNextPage(function(err){
>>        if (err) {
>>            // Error - could not get next page of dogs
>>        } else {
>>            // Success - got next page of dogs, so do something with it
>>            while(dogs.hasNextEntity()) {
>>                // Get a reference to the dog
>>                dog = dogs.getNextEntity();
>>                // Do something with the entity
>>                var name = dog.get('name');
>>            }
>>        }
>>    });
>> }
>> 
>> It took some doing to make sure that the logic for paging was sound, because 
>> the result sets don’t give you back a cursor for the previous page - only 
>> the next page. So you have to hang onto them and build a stack.  
>> 
>> I’m not saying this needs to be done this way, just something to think 
>> about.  
>> 
>> 
>> 
>> -- 
>> Rod Simpson
>> @rockerston
>> rodsimpson.com <http://rodsimpson.com/>
>> 
>> On November 15, 2014 at 5:21:26 PM, Jason Kristian (jas...@apps4u.com.au) 
>> wrote:
>> 
>> HI to all Ive now made sure that the Google doc has got read / write access 
>> when opening with that link . It would be good if any one had input to speak 
>> up now as this will be a better SDK when all the Usergrid comunity has input 
>> so every idea and most users needs can be catered for. I was hoping to get 
>> the design done by the end of this week so I can start on this the last week 
>> of November which should let me get it done hopefully just before Christmas. 
>>  
>> 
>> Thanks add you input the proposal doc.  
>> 
>> Jason Kristian | Director | Apps 4 U Pty Ltd.  
>> ph: +61 075699 8109  
>> mob: +61 0411 389 392  
>> e: Jason Kristian <mailto:jas...@apps4u.com.au>  
>> 
>> 
>> 
>>> On 14 Nov 2014, at 1:47 pm, Jason Kristian <jas...@apps4u.com.au> wrote:  
>>> 
>>> this link has edit permission  
>>> 
>>> https://docs.google.com/document/d/1Fd6zGpNEUh8KwrcIjK3W4aZ8gHlKax79qZFmc6F-kIA/edit?usp=sharing
>>>  
>>> <https://docs.google.com/document/d/1Fd6zGpNEUh8KwrcIjK3W4aZ8gHlKax79qZFmc6F-kIA/edit?usp=sharing>
>>>   
>>> 
>>> 
>>> Jason Kristian | Director | Apps 4 U Pty Ltd.  
>>> ph: +61 075699 8109  
>>> mob: +61 0411 389 392  
>>> e: Jason Kristian <mailto:jas...@apps4u.com.au>  
>>> 
>>> 
>>> 
>>>> On 14 Nov 2014, at 1:46 pm, Jason Kristian <jas...@apps4u.com.au> wrote:  
>>>> 
>>>> Sorry Ill look it the doc it should be editable . and Yes I didn’t write 
>>>> unit Test It will contain UnitTest I unitTest all my code ad as its a 
>>>> requirement for Usergrid contribution.  
>>>> 
>>>> Jason Kristian | Director | Apps 4 U Pty Ltd.  
>>>> ph: +61 075699 8109  
>>>> mob: +61 0411 389 392  
>>>> e: Jason Kristian <mailto:jas...@apps4u.com.au>  
>>>> 
>>>> 
>>>> 
>>>>> On 14 Nov 2014, at 8:33 am, Rod Simpson <r...@rodsimpson.com 
>>>>> <mailto:r...@rodsimpson.com>> wrote:  
>>>>> 
>>>>> Jason, it looks like I can’t edit or comment on that doc. One thing I 
>>>>> don’t see mentioned is Unit / e2e tests. It would be great if we were 
>>>>> designing those from the start. Also, samples. It would be awesome if we 
>>>>> had some samples - especially for the get-up-and-going things.  
>>>>> 
>>>>> Thanks!  
>>>>> 
>>>>> 
>>>>> --  
>>>>> Rod Simpson  
>>>>> @rockerston  
>>>>> rodsimpson.com <http://rodsimpson.com/>  
>>>>> 
>>>>> On November 13, 2014 at 3:26:48 PM, Rod Simpson (r...@rodsimpson.com) 
>>>>> wrote:  
>>>>> 
>>>>> Jason,  
>>>>> 
>>>>> Nice way to start this out!  
>>>>> 
>>>>> https://docs.google.com/document/d/1Fd6zGpNEUh8KwrcIjK3W4aZ8gHlKax79qZFmc6F-kIA/edit?usp=sharing
>>>>>   
>>>>> 
>>>>> I am reviewing now.  
>>>>> 
>>>>> 
>>>>> --  
>>>>> Rod Simpson  
>>>>> @rockerston  
>>>>> rodsimpson.com  
>>>>> 
>>>>> On November 12, 2014 at 11:15:18 PM, Jason Kristian 
>>>>> (jas...@apps4u.com.au) wrote:  
>>>>> 
>>>>> This is a link to the new iOS SDK proposal as it would help if any one 
>>>>> with ideas or suggestions gave the input as the more input we have the 
>>>>> better the end result.  
>>>>> 
>>>>> https://docs.google.com/document/d/1Fd6zGpNEUh8KwrcIjK3W4aZ8gHlKax79qZFmc6F-kIA/edit?usp=sharing
>>>>>   
>>>>> 
>>>>> 
>>>>> Jason Kristian | Director | Apps 4 U Pty Ltd.  
>>>>> ph: +61 075699 8109  
>>>>> mob: +61 0411 389 392  
>>>>> e: Jason Kristian <mailto:jas...@apps4u.com.au>  
>>>>> 
>>>>> 
>>>>> 
>>>>>> On 13 Nov 2014, at 12:06 pm, Jason Kristian <jas...@apps4u.com.au> 
>>>>>> wrote:  
>>>>>> 
>>>>>> Cool ,  
>>>>>> 
>>>>>> The libraries I would select will have to meet a few guideline that we 
>>>>>> (the Usergrid community) can se. Like for example license , stable is it 
>>>>>> going to be around , etc.  
>>>>>> 
>>>>>> Yes I would like to have JSON handling done right this is why I thought 
>>>>>> that the idea that the SDK be open to use other libraries for just that 
>>>>>> reason JSON, Network, etc.  
>>>>>> 
>>>>>> What I really would like to do is put together a proposal and then have 
>>>>>> the community comment , edit , add ideas to its so we can have a plan 
>>>>>> and set some guideline for example the usage of 3rd party Libraries.  
>>>>>> 
>>>>>> And Yes I agree that this should start from scratch and not use 
>>>>>> Apigee-iOSSDK only as I think we should take the approach that it be 
>>>>>> modular and extendable . All of us that Usergrid in commercial way have 
>>>>>> all added Api to Usergrid itself or through some Node JS reverse proxy 
>>>>>> and it would be good if it was easy to make http calls to custom 
>>>>>> endpoints using that same SDK.  
>>>>>> 
>>>>>> I was look at where I could create this proposal document . I was 
>>>>>> thinking I use Google doc’s and send to mailing list or is there a 
>>>>>> places where I could create a proposal document.  
>>>>>> 
>>>>>> 
>>>>>> Jason Kristian | Director | Apps 4 U Pty Ltd.  
>>>>>> ph: +61 075699 8109  
>>>>>> mob: +61 0411 389 392  
>>>>>> e: Jason Kristian <mailto:jas...@apps4u.com.au 
>>>>>> <mailto:jas...@apps4u.com.au>>  
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>> On 13 Nov 2014, at 2:29 am, Rod Simpson <r...@rodsimpson.com 
>>>>>>> <mailto:r...@rodsimpson.com>> wrote:  
>>>>>>> 
>>>>>>> Jason,  
>>>>>>> 
>>>>>>> It is awesome to see your enthusiasm. My personal preference would be 
>>>>>>> that we don’t work from the Apigee SDK. That codebase is quite old and 
>>>>>>> is definitely not the way we would architect it from scratch today.  
>>>>>>> 
>>>>>>> Your idea of using RESTKit or AFNetworking is great. As you select 
>>>>>>> libraries to use, be mindful of their license compatibility with 
>>>>>>> Apache. RESTKit is Apache 2.0 already, so that is perfect.  
>>>>>>> 
>>>>>>> The one question I have is unit / e2e testing. That is something that 
>>>>>>> is really missing in the current iOS SDK. At one point, there was some 
>>>>>>> work done with Lua to create a little framework for testing but it 
>>>>>>> never really went anywhere. Having guardrails in place from the start 
>>>>>>> would make it a lot easier for other developers to get in and help work 
>>>>>>> on the project.  
>>>>>>> 
>>>>>>> #4, interoperation with Swift would be great.  
>>>>>>> 
>>>>>>> What are you thinking about for handling JSON?  
>>>>>>> 
>>>>>>> And of course, #5 would be icing on the cake :)  
>>>>>>> 
>>>>>>> Rod  
>>>>>>> 
>>>>>>> 
>>>>>>> --  
>>>>>>> Rod Simpson  
>>>>>>> @rockerston  
>>>>>>> rodsimpson.com <http://rodsimpson.com/> <http://rodsimpson.com/ 
>>>>>>> <http://rodsimpson.com/>>  
>>>>>>> 
>>>>>>> On November 11, 2014 at 8:44:48 PM, Jason Kristian 
>>>>>>> (jas...@apps4u.com.au <mailto:jas...@apps4u.com.au> 
>>>>>>> <mailto:jas...@apps4u.com.au <mailto:jas...@apps4u.com.au>>) wrote:  
>>>>>>> 
>>>>>>> HI All , Ive been looking at updating the iOS SDK which Ive got some 
>>>>>>> good ideas for now there are a few options on what can be done for 
>>>>>>> example with could build on the current SDK or fork apogee iOS sdks ,  
>>>>>>> or we can start fresh and use a networking Library as it core like 
>>>>>>> AFNetworking or RESTKit which its self is build on AFNetworking, IM 
>>>>>>> happy to put the time into this and I can spare one staff member to 
>>>>>>> help me but I don’t want t start  
>>>>>>> as I think these core idea need to be decided by the Usergrid 
>>>>>>> community. So I would love some feed back on how this should be 
>>>>>>> designed Ive got some of my own Idea which I’ll share now.  
>>>>>>> 
>>>>>>> 1- I think it should be package managed from the start. — CocoaPods  
>>>>>>> 2- I think it should take advantage of other libraries — why reinvent 
>>>>>>> the wheel. there are plenty of good networking libraries at are well 
>>>>>>> supported that will handle networking better .  
>>>>>>> 3- I should be easy to extend easy to add new collection model classes. 
>>>>>>>  
>>>>>>> 4- I use Good objective-c convention to better interoperate with Swift. 
>>>>>>>  
>>>>>>> 5- Be fun to use..  
>>>>>>> 
>>>>>>> 
>>>>>>> Any thought would be good as I said I’m happy to put the work in I just 
>>>>>>> need a path to follow. these Idea are just mine if this is not what 
>>>>>>> every one whats then I’ll go along with whats decided .  
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> Jason Kristian | Director | Apps 4 U Pty Ltd.  
>>>>>>> ph: +61 075699 8109  
>>>>>>> mob: +61 0411 389 392  
>>>>>>> e: Jason Kristian <mailto:jas...@apps4u.com.au 
>>>>>>> <mailto:jas...@apps4u.com.au> <mailto:jas...@apps4u.com.au 
>>>>>>> <mailto:jas...@apps4u.com.au>>>  
>>>>> 
>>>> 
>>> 
>> 
> 

Reply via email to