{"action":"reopened","issue":{"url":"https://api.github.com/repos/OfficeDev/PnP-JS-Core/issues/61","repository_url":"https://api.github.com/repos/OfficeDev/PnP-JS-Core","labels_url":"https://api.github.com/repos/OfficeDev/PnP-JS-Core/issues/61/labels{/name}","comments_url":"https://api.github.com/repos/OfficeDev/PnP-JS-Core/issues/61/comments","events_url":"https://api.github.com/repos/OfficeDev/PnP-JS-Core/issues/61/events","html_url":"https://github.com/OfficeDev/PnP-JS-Core/issues/61","id":150446231,"number":61,"title":"My wish list","user":{"login":"mike-morrison","id":6625993,"avatar_url":"https://avatars.githubusercontent.com/u/6625993?v=3","gravatar_id":"","url":"https://api.github.com/users/mike-morrison","html_url":"https://github.com/mike-morrison","followers_url":"https://api.github.com/users/mike-morrison/followers","following_url":"https://api.github.com/users/mike-morrison/following{/other_user}","gists_url":"https://api.github.com/users/mike-morrison/gists{/gist_id}","starred_url":"https://api.github.com/users/mike-morrison/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mike-morrison/subscriptions","organizations_url":"https://api.github.com/users/mike-morrison/orgs","repos_url":"https://api.github.com/users/mike-morrison/repos","events_url":"https://api.github.com/users/mike-morrison/events{/privacy}","received_events_url":"https://api.github.com/users/mike-morrison/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/OfficeDev/PnP-JS-Core/labels/question","name":"question","color":"cc317c"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":2,"created_at":"2016-04-22T18:55:56Z","updated_at":"2016-04-24T17:20:48Z","closed_at":null,"body":"## Feature wish list from putting on my JavaScript/Office developer hat.\r\n\r\n`Disclaimer: This is just food for thought.  I just rambled out some features \"I\" would love to use assuming infinite resources.  A lot of these might be more appropriate to be a project built on top of this project or not at all.`\r\n\r\n### **Things I like in other projects**\r\n- The project would have a snappy one liner or a mission statement easy to remember.\r\n- Supports Office/SharePoint 2013, 2016 on premises.  All Office 365 APIs.  \r\n- Doesn't bring any C# baggage.\r\n- Should be designed for modern JavaScript developers.  Not c# people.  <--- TypeScript is solving that problem already.  \r\n- An API that feels simple, doesn't ask me for the same information repeatedly, etc.\r\n- Feels fun and productive whether I am trying to use it in TS -> ES6 -> ES5\r\n- Best in class support when writing code in VSCode, Visual Studio, WebStorm, Atom, etc.\r\n- Best in class support when bundling with Webpack, Browserify, SystemJS\r\n- Works great with Windows 10 UWP, Redux, React, React Native, Flux, JSX, Angular 1, Angular 2, Aurelia, and Electron.\r\n- Great *\"ready to start coding\"* boilerplates for TS and ES2015.\r\n- Inline code examples in the documentation\r\n\r\n### **Things I want in my SP JS Dev life**\r\n- Doesn't make REST easier.  Makes Office/SharePoint development in TypeScript/JavaScript easier.\r\n  - Handles etags, I just get an ItemUpdatedOnServer exception and let me specify how to handle it.\r\n  - Abstracts stuff like `_x0020_`.\r\n  - Never returns me crazy search api results like row[30].column[5] unless I requested them.\r\n  - Always offers the raw results next to the pretty results.\r\n  - Simplifies paging through large lists of users, items, and getting counts.  Has example demonstrating.\r\n  - Minimizes the developer having to pass GUIDs or having to lookup the value to a parameter in SharePoint.\r\n  - If you give me back something that has a user/expandable property associated, expand it for me or make it simple.  `{ expandoAutoExpand: true }`\r\n  - Makes authenticating easy.  Whether it is school or org, domain, on premises, cloud, etc.  \r\n    - Most SP libraries punt this off to the developer!  \r\n    - IMO this is still a big barrier to entry in the current spdev (javascript) landscape.  \r\n  - It will only load the minimum code required to perform it's function. a.k.a. fast everywhere. Including dependencies. i.e. [Rollup](https://github.com/rollup/rollup)  \r\n- Focus on great simple developer outcomes, not wrapping every api.  Eventually wrap the entire API.\r\n- Stability is critical.  \r\n- Sample projects for the popular libraries/frameworks. Maybe a [Todo MVC](http://todomvc.com) on top of the SP task list?\r\n- Great getting started tutorial.\r\n- Great documentation that accepts contributions from the community.\r\n- Great readme with some of those video screenshots everyone is using showing off some of the best developer friendly features.\r\n- I would really love it if a library could do all of its heavy work with a queue of web workers (if supported in browser) for performance and freeing up the UI thread.\r\n  - Speaking of heavy work, a library should assume that everyone that uses this library is using it against a large list/search index/user info table.  It needs to scale.\r\n- Make the basics awesome, webs, lists, users, doc libs, files, etc.  \r\n  - SPServices is a great example of this.  Many times I have seen end users with 3 - 5 line snippets of SPServices on the page.  When business people are using your api, because it looks simple to them.  That is epic.  \r\n- Makes it easy to integrate via webpart for power users.\r\n- Makes custom forms in SharePoint easier.\r\n- Great offline support in Windows 10, Xamarin, browsers, etc. \r\n  - IndexedDb, Sqlite, etc.\r\n\r\n### **React and friends**\r\n\r\nIn my opinion React, React Native, Redux/Flux, are going to continue to snowball and get even bigger.  They make development easier.  That is always a **huge** hit with developers.\r\n- React components with Material Design, Office Fabric, and/or WinJS baked in.\r\n- Make it dead simple to piece these react/web components together to make simple add-in apps for Office Suite, add-in parts for SharePoint, etc.  Code like `<PeoplePicker scope=site ... />`.  <---That looks sexy.\r\n\r\n"}}