Read Time:16 Minute

ലല്ലു ആന്തൂര്‍

ഒരു സോഫ്റ്റ്‌വെയർ നിർമ്മിക്കുന്നതിനുള്ള മുന്നൊരുക്കങ്ങളും അതിന്റെ നിർമ്മാണ പ്രക്രിയയും നമ്മൾ മുന്നേ വന്ന ലേഖനങ്ങളിൽ കണ്ടുകഴിഞ്ഞു. ഒരല്പം വൈകിയാണ് ഈ ലേഖനം വരുന്നത് എന്നതുകൊണ്ട് പഴയ ലേഖനങ്ങളിലേക്കുള്ള അവലംബങ്ങൾ ഇവിടെ കൊടുക്കുന്നു.

  1. ഒരു സോഫ്റ്റ്‌വെയർ നിര്‍മ്മിക്കപ്പെടുന്നതെങ്ങിനെ?
  2. സോഫ്റ്റ്‌വെയർ എഞ്ചിനീയറിംഗ് പ്രക്രിയ – ഭാഗം 1
  3. സോഫ്റ്റ്‌വെയർ എഞ്ചിനീയറിംഗ് പ്രക്രിയ – ഭാഗം 2
  4. സോഫ്റ്റ്‌വെയർ എഞ്ചിനീയറിംഗ് പ്രക്രിയ – ഭാഗം 3
  5. സോഫ്‌റ്റ്‌വെയർ എഞ്ചിനീയറിങ്ങ് പ്രക്രിയ – ഭാഗം 4

സോഫ്റ്റ്‌വെയർ നിർമാണ പ്രക്രിയ കഴിഞ്ഞാൽ അടുത്തതായി നടക്കുന്ന കാര്യങ്ങളിലേക്കാണ് ഈ ലേഖനം കടക്കുന്നത്.

നിർമ്മിക്കപ്പെട്ടുകഴിഞ്ഞ ഒരു സോഫ്റ്റ്‌വെയർ അറിയപ്പെടുന്നത് അതിന്റെ വേർഷൻ പ്രകാരമാണ്. മലയാളത്തിൽ അതിനെ പതിപ്പ് എന്ന് തർജമ ചെയ്യാം. ഒരു പുസ്തകത്തിന് കാലാനുസൃതമായ മാറ്റങ്ങൾ വരുത്തി പുതിയ പതിപ്പുകൾ ഇറക്കുന്നതുപോലെ ഓരോ സോഫ്റ്റ്‌വെയറും പല പതിപ്പുകൾ പ്രസിദ്ധീകരിക്കും. ഏറെ ജനപ്രിയമായ മൊബൈൽ ഓപ്പറേറ്റിംഗ് സിസ്റ്റം ആണല്ലോ ആൻഡ്രോയിഡ് (Android). അതിന്റെ ആദ്യ പതിപ്പ് ആൻഡ്രോയിഡ് 1 എന്നാണ് അറിയപ്പെട്ടിരുന്നത്. പിന്നീട് വന്ന വേർഷനുകൾക്ക് വേർഷൻ നമ്പറുകൾക്കൊപ്പം ഓരോ ചെല്ലപ്പേരും ഉണ്ടായിരുന്നു (കിറ്റ് കാറ്റ്, ലോലിപോപ്, മാർഷ്‌മെലോ,…). എന്നാൽ ആൻഡ്രോയിഡ് 10 മുതൽ സംഖ്യകൾ മാത്രമേ ഉപയോഗിക്കാറുള്ളൂ. ആൻഡ്രോയിഡ് ഇപ്പോൾ വേർഷൻ 11 ൽ ആണ് നിൽക്കുന്നത്. ഏതാനം മാസങ്ങൾക്കകം വേർഷൻ 12 പുറത്തുവരും. വിൻഡോസ് (95, 98, ME, XP, Vista, 7, 8, 10), ഉബണ്ടു (20.04, 20.10, 21.04) തുടങ്ങി എല്ലാ സോഫ്റ്റ്‌വെയറുകളും ഓരോ വേർഷനിങ് രീതി പിന്തുടരുന്നു.

ഒരു സോഫ്റ്റ്‌വെയർ വേർഷൻ പൂർത്തിയായി കഴിഞ്ഞാൽ അടുത്ത ഘട്ടം അതിനെ ഉപഭോക്താക്കളുടെ അടുക്കൽ എത്തിക്കുക എന്നതാണ്. ഈ ഘട്ടത്തിലാണ് പഴയകാല on-premise സോഫ്റ്റ്‌വെയർ പുതിയ cloud സോഫ്റ്റ്‌വെയർ എന്നിവ തമ്മിലുള്ള അന്തരം നന്നായി മനസിലാവുക. On-premise സോഫ്റ്റ്‌വെയർ ഒരു ഉപഭോക്താവിന്റെ നിയന്ത്രണത്തിലാണ് പ്രവർത്തിക്കുക. എപ്പോഴാണ് അവ ഇൻസ്റ്റാൾ ചെയ്യേണ്ടത്, എപ്പോഴാണ് അവ അപ്ഡേറ്റ് ചെയ്യേണ്ടത് തുടങ്ങിയ കാര്യങ്ങൾ ഉപഭോക്താവാണ് തീരുമാനിക്കുക. അതുകൊണ്ടുതന്നെ ഒരു സോഫ്റ്റ്‌വെയർ കമ്പനിയെ സംബന്ധിച്ചിടത്തോളം ഇത്തരം സാഹചര്യങ്ങളിൽ ഒരല്പം പണി കുറവാണ്. ഉദാഹരണമായി നമുക്ക് നമ്മുടെ മൊബൈൽ ഫോണിൽ വരുന്ന ആപ്പ് അപ്ഡേറ്റുകളുടെ കാര്യം തന്നെ എടുക്കാം. അപ്ഡേറ്റുകൾ ഇൻസ്റ്റാൾ ചെയ്യണോ വേണ്ടയോ എന്ന തീരുമാനം ഓരോ ഫോൺ ഉടമകൾക്കും വ്യക്തിപരമായി എടുക്കാവുന്നതാണ്. ഇത്തരം അപ്ഡേറ്റുകൾ തന്നത്താൻ ഇൻസ്റ്റാൾ ചെയ്യാനും ഉടമകൾക്ക് സൗകര്യമുണ്ട്. ഈ ഒരു കാര്യത്തിൽ ഫോൺ നിർമാതാക്കൾക്കോ ഫോൺ നിയന്ത്രിക്കുക ഓപ്പറേറ്റിംഗ് സിസ്റ്റം നിർമാതാക്കൾക്കോ ഫോണിലെ ഓപ്പറേറ്റിംഗ് സിസ്റ്റത്തിൽ പ്രവർത്തിക്കുന്ന ആപ്പുകളുടെ നിർമാതാക്കൾക്കോ യാതൊരു നിയന്ത്രണവും ഇല്ല. 

സോഫ്റ്റ്‌വെയർ ഉപയോഗിക്കുന്ന ഉപഭോക്താക്കൾക്ക് കമ്പനി ഉറപ്പുനൽകുന്ന അടിസ്ഥാന വാഗ്ദാനങ്ങളാണ് ഒരു SLA എന്ന് പറയാം. അതിൽ പൊതുവെ ഉണ്ടാകുന്ന ഒരു വ്യവസ്ഥയാണ് സോഫ്റ്റ് വെയറിൽ എന്തെങ്കിലും കുഴപ്പങ്ങൾ പിന്നീട് കണ്ടുപിടിക്കപ്പെട്ടാൽ അവ സോഫ്റ്റ്‌വെയർ കമ്പനി തന്നെ പരിഹരിച്ച് കൊടുക്കും എന്നുള്ളത്.

അതുകൊണ്ടുതന്നെ ഇത്തരം ആപ്പുകൾ ഉപയോഗിക്കുന്ന 100  പേർ 100 വ്യത്യസ്ത വേർഷനുകൾ ഉപയോഗിക്കാൻ സാധ്യതയുണ്ട്. ഒരു സോഫ്റ്റ്‌വെയർ കമ്പനിയെ സംബന്ധിച്ചിടത്തോളം ഇതൊരു പേടിസ്വപ്നം ആണ്. എന്തുകൊണ്ടാണ് ഇത് എന്ന് നോക്കാം. ഓരോ സോഫ്റ്റ്‌വെയറും ഓരോ SLA കളോടെ ആണ് പ്രസിദ്ധീകരിക്കപ്പെടുന്നത്. SLA എന്ന് പറഞ്ഞാൽ Service Level Agreement. ആ സോഫ്റ്റ്‌വെയർ ഉപയോഗിക്കുന്ന ഉപഭോക്താക്കൾക്ക് കമ്പനി ഉറപ്പുനൽകുന്ന അടിസ്ഥാന വാഗ്ദാനങ്ങളാണ് ഒരു SLA എന്ന് പറയാം. അതിൽ പൊതുവെ ഉണ്ടാകുന്ന ഒരു വ്യവസ്ഥയാണ് സോഫ്റ്റ് വെയറിൽ എന്തെങ്കിലും കുഴപ്പങ്ങൾ പിന്നീട് കണ്ടുപിടിക്കപ്പെട്ടാൽ അവ സോഫ്റ്റ്‌വെയർ കമ്പനി തന്നെ പരിഹരിച്ച് കൊടുക്കും എന്നുള്ളത്. അപ്പോൾ ഇത്തരം 100 കണക്കിന് വ്യത്യസ്ത വേർഷനുകൾ നിലവിൽ ഉണ്ടെങ്കിൽ അവയിലെല്ലാം ഈ പ്രശ്നത്തിന് പരിഹാരം ചെയ്തു കൊടുക്കേണ്ടി വരും. അതുകൊണ്ടുതന്നെ ഓരോ സോഫ്റ്റ്‌വെയർ വേർഷനും ഓരോ സപ്പോർട്ട് ലൈഫ് ടൈമോടുകൂടി ആണ് പ്രസിദ്ധീകരിക്കുക. ഒരു വേർഷന്റെ സപ്പോർട്ട് ലൈഫ് ടൈം കഴിഞ്ഞാൽ ആ സോഫ്റ്റ്‌വെയറിനു വരുന്ന പ്രശ്നങ്ങൾക്ക് പരിഹാരം ചെയ്തുകൊടുക്കാൻ നിർമാതാക്കൾ ബാധ്യസ്ഥരല്ല. പുതിയ ഫോണുകളും കംപ്യൂട്ടറുകളും ഏറ്റവും പുതിയ ഓപ്പറേറ്റിംഗ് സിസ്റ്റങ്ങളുമായി ഇറങ്ങാനുള്ള കാരണവും ഇതുതന്നെ.

Cloud സോഫ്റ്റ്‌വെയറുകൾ ഇതിൽ നിന്നും തികച്ചും വ്യത്യസ്തമാണ്. അവയുടെ പൂർണ നിയന്ത്രണം നിർമാതാക്കൾക്ക് തന്നെ ആണ്. ഉപഭോക്താക്കൾക്ക് കാര്യമായ ബുദ്ധിമുട്ടുകൾ നേരിടാതെ നിർമാതാക്കൾക്ക് തന്നെ ഇത്തരം സോഫ്റ്റ്‌വെയറുകൾ സ്വയം അപ്ഡേറ്റ് ചെയ്യാം. ഉദാഹരണം facebook, linkedin, gmail  മുതലായ വെബ്സൈറ്റുകൾ. Facebook അവരുടെ വെബ്സൈറ്റ് ദിവസേന അപ്ഡേറ്റ് ചെയ്യുന്നു (വളരെ ചെറിയ മാറ്റങ്ങൾ മാത്രം). കൂടാതെ ആഴ്ച്ചയിൽ ഓരോ തവണ വീതം അവർ പ്രകടമായ മാറ്റങ്ങൾ അവരുടെ വെബ്‌സൈറ്റിൽ വരുത്തുന്നു. ഒരു ഉപഭോക്താവിന് ചിലപ്പോൾ ഇത് അറിയാൻ കഴിഞ്ഞു എന്ന് പോലും വരില്ല. (ഒരുവിധം) എല്ലാ ഉപഭോക്താക്കളും ഒരേ സമയം ഏറ്റവും പുതിയ വേർഷനിലേക്ക് ഓട്ടോമാറ്റിക് ആയി നീക്കപ്പെടുന്നു. എന്താണ് “ഒരുവിധം” എന്ന് പറയാൻ കാരണം എന്ന് നോക്കാം. Facebook പോലെയുള്ള കമ്പനികൾക്ക് അവരുടെ സോഫ്റ്റ്‌വെയർ വിവിധ പ്രദേശങ്ങളിലേക്ക് അല്ലെങ്കിൽ വിവിധ തരത്തിലുള്ള ആളുകളിലേക്ക്  വ്യത്യസ്ത സമയങ്ങളിൽ എത്തിക്കാനുള്ള സൗകര്യങ്ങൾ നിലവിലുണ്ട്. പുതുതായി നിർമിക്കുന്ന ഒരു ഫീച്ചർ ഒരുപക്ഷേ എല്ലാവര്ക്കും ഇഷ്ടപ്പെടുമോ എന്ന് അവർക്ക് ഒരു സംശയം തോന്നിയേക്കാം. ഈ ഒരു സാഹചര്യത്തിൽ ഈ ഫീച്ചറിനെ ഘട്ടം ഘട്ടമായി ഉപഭോക്താക്കളിലേക്ക് എത്തിക്കാൻ അവർക്ക് സാധിക്കും. ഒരുപക്ഷെ ഈ ഫീച്ചർ ആദ്യം ലഭ്യമാവുക യൂറോപ്പിലോ അമേരിക്കയിലോ ആവാം. തുടർന്ന് ജനസമ്മതി അനുസരിച്ച് ലോകത്തിന്റെ വിവിധ ഭാഗങ്ങളിലേക്ക് അവർ ഈ ഫീച്ചർ ലഭ്യമാക്കും.

സോഫ്റ്റ്‌വെയർ ഉപഭോക്താക്കളിലേക്ക് എത്തിക്കഴിഞ്ഞാൽ അടുത്തതായി ചെയ്യേണ്ട കാര്യം ഉപഭോക്താക്കളുടെ അഭിപ്രായങ്ങളും നിർദ്ദേശങ്ങളും അറിയുക എന്നതാണ്. അതിനായി സോഫ്റ്റ്‌വെയറിനുള്ളിൽ തന്നെയോ അല്ലാതെ നേരിട്ട് ഇമെയിൽ/ഫോൺ മുഖാന്തരമോ കമ്പനികൾ ഉപഭോക്താക്കളെ ബന്ധപ്പെടുന്നു. മൊബൈൽ ആപ്പുകളുടെ റേറ്റിംഗ് സംവിധാനവും പ്ലേ സ്റ്റോർ/ആപ്പ് സ്റ്റോർ മുതലായവയിലെ റിവ്യൂ സംവിധാനവും ഇതിനു ഉദാഹരണം. ചില കമ്പനികൾ പൂർണമായും സജ്ജമാവാത്ത ഫീച്ചറുകൾ താല്പര്യമുള്ള ഉപഭോക്താക്കൾക്കായി പ്രത്യേകം ലഭ്യമാക്കാറുണ്ട്. ഇതിനെ ബീറ്റ ടെസ്റ്റിംഗ് (Beta testing) എന്നാണ് പറയുക. ഇത്തരം ബീറ്റ ടെസ്റ്റിംഗിൽ പങ്കെടുക്കുന്നവർക്ക് കമ്പനിയുമായി ബന്ധപ്പെടാനും ഫീച്ചറിലെ/സോഫ്റ്റ്‌വെയറിലേ പോരായ്മകൾ നേരിട്ട് ബോധ്യപ്പെടുത്താനും ഉള്ള സംവിധാനവും നിലവിലുണ്ട്. ഒരുവിധം സ്റ്റേബിൾ ആയ ഒരു സോഫ്റ്റ്‌വെയർ ആണെങ്കിൽ അതിന്റെ ഗുണനിലവാരം കൂടുതൽ വർധിപ്പിക്കാൻ കമ്പനികൾ ബഗ്ഗ്‌-ബൗണ്ടി പ്രോഗ്രാം (Bug-bounty program) സംഘടിപ്പിക്കാറുണ്ട്. ഈ പ്രോഗ്രാമിൽ പങ്കെടുക്കുന്നവർക്ക് കമ്പനിയുടെ സോഫ്റ്റ്‌വെയർ ഉപയോഗിച്ച് നോക്കാനും അതിലെ തെറ്റുകൾ (ബഗ്ഗുകൾ) കണ്ടുപിടിക്കാനും ഉള്ള അവസരം ലഭ്യമാവും. ഇത്തരം ഒരു പ്രോഗ്രാമിൽ ബഗ്ഗുകൾ കണ്ടുപിടിക്കുന്നവർക്ക് കമ്പനികൾ പ്രത്യേകം പാരിതോഷികവും നൽകാറുണ്ട്.

മറ്റൊരു രീതിയിലുള്ള വിവര ശേഖരണമാണ് telemetry. സോഫ്റ്റ്‌വെയർ സ്വമേധയാ സോഫ്റ്റ്‌വെയറിന്റെ ഉപയോഗത്തെക്കുറിച്ചുള്ള വിവരങ്ങൾ രേഖപ്പെടുത്തുന്ന രീതിയാണ് ഇത്. ഏതൊക്കെ ഫീച്ചറുകൾ ആണ് കൂടുതലായി ഉപയോഗിക്കപ്പെടുന്നത്, ഏത് പ്രദേശങ്ങളിൽ ഉള്ളവർ ഏത് ഫീച്ചറാണ് കൂടുതലായി ഉപയോഗിക്കുന്നത്, ഫീച്ചറുകൾ ഉപയോഗിക്കുന്നവരുടെ പ്രായ വിഭാഗം ഏതാണ്, ഉപയോഗിക്കപ്പെടാത്ത ഫീച്ചറുകൾ ഏതാണ്, തുടങ്ങി നിരവധി കാര്യങ്ങൾ ഈ രീതിയിൽ ശേഖരിക്കപ്പെടുന്നു. ഈവിധമുള്ള വിവര ശേഖരണത്തിനിടെ സോഫ്റ്റ്‌വെയറിൽ തിരിച്ചറിയപ്പെടാതെ പോയ തെറ്റുകൾ (ബഗ്ഗുകൾ) കണ്ടുപിടിക്കപ്പെടാനും സാധ്യതയുണ്ട്. ആളുകൾ തിരിച്ചറിയുന്നതിനു മുന്നേ തന്നെ ഇത്തരം പ്രശ്നങ്ങൾ പരിഹരിക്കാനും കമ്പനികൾ ശ്രമിക്കാറുണ്ട്. ഈവിധം ലഭ്യമാവുന്ന വിവരങ്ങളെല്ലാം ക്രോഡീകരിച്ച് ശേഖരിക്കപ്പെടുന്നു. പിന്നീട് അടുത്ത വേർഷൻ തയ്യാറാക്കുമ്പോൾ ഈ ലഭ്യമായ വിവരങ്ങളിൽ നിന്നും വളരെ പ്രാധാന്യമുള്ളതും ഗുരുതരവുമായ പ്രശ്നങ്ങൾ പരിഹരിക്കാൻ കമ്പനികൾ ഊന്നൽ നൽകുന്നു. പുതിയ ഫീച്ചറുകൾക്കൊപ്പം നിലവിലുള്ള ഫീച്ചറുകളിലെ പോരായ്മകൾ പരിഹരിക്കാനും കമ്പനികൾ ശ്രദ്ധിക്കാറുണ്ട്.

സോഫ്റ്റ്‌വെയറിന്റെ വാണിജ്യവൽക്കരണത്തെക്കുറിച്ച് ഇനി ഒരല്പം സംസാരിക്കാം. സോഫ്റ്റ്‌വെയർ നിർമാണത്തിൽ പല ചിലവുകളും അടങ്ങിയിട്ടുണ്ട്. കമ്പനിയിലെ ഉദ്യോഗസ്ഥരുടെ ശമ്പളം, വൈദ്യുതി/ജല ബില്ലുകൾ, കെട്ടിടത്തിന്റെ വാടക/നികുതി, ഉദ്യോഗസ്ഥർക്ക് ലഭ്യമാക്കുന്ന മറ്റു സൗകര്യങ്ങളുടെ ചിലവുകൾ തുടങ്ങിയവ കൂടാതെ ഉദ്യോഗസ്ഥർക്ക് പരിശീലനം നൽകുന്നതിലെ ചിലവുകൾ, എല്ലാവര്ക്കും ജോലി ചെയ്യാനുള്ള ലാപ്ടോപ്പ്/ഡെസ്ക്ടോപ്പ് കംപ്യൂട്ടറുകളുടെ ചിലവ്, സോഫ്റ്റ്‌വെയർ നിർമാണത്തിൽ ഉപയോഗിക്കുന്ന വിവിധ അന്യ സോഫ്റ്റ്‌വെയറുകളുടെ ചിലവ്, സോഫ്റ്റ്‌വെയറുകൾ സൂക്ഷിക്കാനും യഥേഷ്ടം ലഭ്യമാക്കാനും ആവശ്യമായിവരുന്ന മറ്റു അടിസ്ഥാന സൗകര്യങ്ങൾക്കുള്ള ചിലവ്, പരസ്യങ്ങൾക്കും മറ്റും ഉള്ള ചിലവ്, ഡിസ്‌കൗണ്ട്/ഓഫർ തുടങ്ങിയവക്കായി മാറ്റിവെക്കുന്ന തുക തുടങ്ങി ഒരു നീണ്ട നിര തന്നെ ഉണ്ട്. ഈ ചിലവുകളെല്ലാം നികത്തി ലാഭത്തിൽ കമ്പനി നടത്തിക്കൊണ്ടുപോവാൻ ബുദ്ധിമുട്ടുകൾ കുറച്ചൊന്നുമല്ല. അതുകൊണ്ടുതന്നെ അവർ നിർമിക്കുന്ന സോഫ്റ്റ്‌വെയറുകൾ വാണിജ്യവൽക്കരിക്കാതെ യാതൊരു നിവർത്തിയുമില്ല. പഴയകാല സോഫ്റ്റ്‌വെയറുകൾ എല്ലാം ഒറ്റ തവണ തുകയടച്ച് വാങ്ങുന്നവയായിരുന്നു. ഒരു നിശ്ചിത സോഫ്റ്റ്‌വെയർ വേർഷൻ വരെ ഇങ്ങനെ ഒറ്റത്തവണ വാങ്ങുന്നവർക്ക് സൗജന്യമായി അപ്ഡേറ്റ് ചെയ്യാം. അതിലും പുതിയ വേർഷനുകൾ വേണമെങ്കിൽ അധികം തുക അടക്കേണ്ടിവരും. എന്നാൽ cloud സോഫ്റ്റ്‌വെയറുകൾ ഇതിനു വിപരീതമായി pay per use (ഉപയോഗത്തിന് കണക്കാക്കി തുക അടക്കുക) എന്ന രീതി ആണ് പിന്തുടരുന്നത്. ഉദാഹരണമായി GMail തന്നെ എടുത്താലോ. 15 GB വരെ നമുക്ക് സൗജന്യമായി GMail ഉപയോഗിക്കാം. എന്നാൽ അതിലും കൂടുതൽ സ്ഥല സൗകര്യം വേണമെങ്കിൽ ആവശ്യാനുസരണം തുക മുടക്കി കൂടുതൽ സ്റ്റോറേജ് സ്വന്തമാക്കാം. ഇത്തരം പ്ലാനുകൾ പ്രതിമാസമായോ വാർഷികമായോ തുക അടക്കാനുള്ള സൗകര്യം ലഭ്യമാക്കുന്നുണ്ട്. അപ്പപ്പോൾ ഉള്ള ആവശ്യം കണക്കിലെടുത്ത് ഇഷ്ടമുള്ള അത്രയും സ്റ്റോറേജ് നമുക്ക് വാങ്ങാം. ഭാവിയിൽ ആവശ്യം കുറഞ്ഞാൽ ചെറിയ പ്ലാനിലേക്കും മാറാം. ഉപഭോക്താക്കളെ സംബന്ധിച്ചിടത്തോളം വളരെ സൗകര്യപ്രദമായ ഒരു രീതിയാണ് ഇത്.

സോഫ്റ്റ്‌വെയർ നിർമാണ പ്രക്രിയ വിവരിക്കുന്ന ഈ ലേഖന പരമ്പര ഇവിടെ അവസാനിക്കുകയാണ്. ഒരു സോഫ്റ്റ്‌വെയർ നിർമിക്കാൻ കാരണമാകുന്ന ഘടകങ്ങളെക്കുറിച്ചും തുടർന്ന് നടക്കുന്ന സോഫ്റ്റ്‌വെയർ നിർമാണത്തിന്റെ വിവിധ ഘട്ടങ്ങളേക്കുറിച്ചും ഈ പരമ്പര വഴി വിവരിക്കാൻ കഴിഞ്ഞു എന്ന് കരുതുന്നു.


 

Happy
Happy
100 %
Sad
Sad
0 %
Excited
Excited
0 %
Sleepy
Sleepy
0 %
Angry
Angry
0 %
Surprise
Surprise
0 %

Leave a Reply

Previous post കെ റെയിലും കേരളത്തിലെ ഗതാഗതവും – പരിഷത്ത് ലഘുലേഖ വായിക്കാം
Next post നത ഹുസൈന്റെ വിക്കി യാത്രകൾ RADIO LUCA
Close