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
- developer
- 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
- description
- (.. added to db_api)
- accessibility
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
- id
- api Id
- param name
- type
- description (tried to be synonymous to the javaDoc/jsDoc syntax)
- id
- api Id
- reviewed by
- last reviewed on
- comments
- isFlagged
- (...edited db_api_reviewinfo)
- comment Thread id
- flaggedRating
- (db_api_comments)
- api id
- title
- by
- content
- date
- comment type ( so u can comment on a developer | api call | review | module )
- (db_api_devinfo)
- id
- api id
- developer id
- created on
- flagged by developer
- (db_developers)
- id
- name
- hashed password
- permission level ( for admin/developer/ manager / testing positions /etc)
- (db_api_modules)
- id
- name
- description
- 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 - List of Modules, 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
by developer
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 .
Keep Clicking,
Bhasker V Kode
Founder & CTO - Hover Technologies ( prev. nick = Orange cube )
http://hover.in
Technorati Tags: programming, api, facebook, yui, bosky, hover
2 comments:
Nice to see you developing the api component.
Here is my 2 pennies on this. (Dont want to mention 2 cents sitting in the UK).
You are trying to merge api with code review which doesn't make sense. Code review is separate and needs to be generic enough to support any code not just api.
Second. No need to store supported apis in the DB at all. If your backend is Java, using some framework like Axis should help you to selectively expose the necessary code as Soap based api's. But given that you are using a weird language called erlang (:)), I guess you may have to implement all these yourself, unless Yariv or someone come up with a framework for you.
It is a good approach to start with the sexy JSON, than the age old REST. You cannot do a lot with REST.
Having said this, the good way to start is to document the input parameters and output parameters and supported operations.
Lets take google search for eg. Input parameter is "keyword". Then you choose an operation like image search, blog search. Output parameters are the list of search results with options like "Simillar results", "last modified" etc.
Make sure, you have this documentation ready before implementing.
Look forward for more updates from your team.
-Prabhu
http://prabhu.wordpress.com
I think if you're own developers cant use your documentation,how the hell do you expect others to. And we're going to find out if it works out well, by seeing for ourselves. If it does'nt help, we've grown wiser, but if it does help us in any way - it would be worth it.
i was'nt particular on json,it could be anything,and infact i could have an internal "debug" return type that shows debug information or serializes output to be shown in a formatted manner,etc.
as much as even i love JSON, it could be just one of the many other forms that are still REST calls.eg of the possiblities
it will also help in things like reports, when any or every data structure can be easily pulled out, and it's description seen as well on the same page. That's where i think it's headed, because whether it's used for seeing who's working on what, or what kind of browser is dominating among our beta users signed up, or introducing the architecture/code to a new developer to plug-in easily.
It makes sense to take the effort initially i feel, and this is just one of the many other exciting things happening within the company, and will keep the news coming 8 )
Keep Clicking,
~B
Post a Comment