Developing developer platforms Part-1
It's no secret that I've always been an ardent admirer of companies that invest in impressive internal tools, developer resources, and internal things that make your developers go mmmh! Perhaps thats the secret to how they manage to release public api's and platforms for developers quickly in their product life cycle than companies with more mature products,but spend more time and effort trying to open up API's even for internal use in a plug-n-play, easy to lookup&hack fashion. Facebook & YUI will always be remembered for the part they've played in this very paradigm.
So, I thought it was time to kickstart my own soul searching, API intimidating, developer friendly environment right here at hover tech.. . What follows is a of the platform for the developers ( thats emp#1 srivatsan, and upcoming recruit thyaga- both theoretical CS & functional programming fanatics ) who one day will i hope influence the lives of several thousands of users, just as my own programming rockstar idols have done in the past.
Firstly, I jotted down a number of things that would seem fairly familiar in an environment where you track api changes, features, test them in real-time ,and discuss/update them. Things that came to mind in the first version of db_api were
- api Id
- module name
- path to source
- path to RESTfull call (so that development is independent of server side language/es)
- params, and type for the GET/POST
- return type
(.. added to db_api)
I also thought a created_on, updated_on would help. To add more clarity regarding the params sent into the GET/POST call, i then normalized the prev fields into another table called db_api_params that would be of the form
- api Id
- param name
- description (tried to be synonymous to the javaDoc/jsDoc syntax)
- api Id
- reviewed by
- last reviewed on
- comment Thread id
- api id
- comment type ( so u can comment on a developer | api call | review | module )
- api id
- developer id
- created on
- flagged by developer
- hashed password
- permission level ( for admin/developer/ manager / testing positions /etc)
- created by
- flagged priority
- ( todoID perhaps implemented later ?...)
- List of Developers , filter by permission or name
Maybe you could integrate your bugzilla/ wiki/forum or mashup ur own flavoured list of developers and their information.
- List of Reviewers , filter by name or flagged priority or module
Nice for delegating and promoting a peer-review atmosphere at work where people are ranked not by experience , but by expertise on domain. Could even integrate HR data once u cross the 20-30 mark and gauge who to allocate where, etc
, filtered by perhaps date or your own custom fields like "show-stopper " status
and of course the big momma...
List of API Calls
, filtered by
OR by flag priority
OR by module (hack a drop down like facebook maybe )
OR by accessibility ( useful to use same system to show for your platform developers as well as for internal developers) OR
OR ask an intern to hack up a api search with autocomplete input like YUI.
It might not be perfect, but it's a start and a very satisfying night's work 8 ).
If you'd like to get the wicked details of we're going to implement or if you would like to implement it yourself along with the rest of us- Arun ,our CEO and an active blogger, Srivatsan and Thyaga (yup that's about it ) , let me know. Send a mail over to kode at hover dot in . We are just settling into the startup ecosystem in Pune, India and would like to hear from you as well as keep everyone in the loop of how it turns out in subsequent parts. And maybe will do a talk about the progress at the next barcamp pune as well .
Bhasker V Kode
Founder & CTO - Hover Technologies ( prev. nick = Orange cube )